Widziałem wiele projektów używających v1.2.3
jako konwencji nazewnictwa tagów w git. Widziałem też jakiś użytek 1.2.3
. Czy istnieje styl oficjalnie zatwierdzony lub czy istnieją jakieś dobre argumenty przemawiające za jego użyciem?
229
v/
ponieważ grupuje tagi w przestrzeni nazw. 2. idealnie, tag powinien również zawierać akronim, który jednoznacznie identyfikuje aplikację. npv/myapp/1.0
. Ułatwia to scalanie repozytorium git: w przypadku połączenia aplikacji tagi nie kolidują w przestrzeni nazw tagów.Odpowiedzi:
Wersja 1.0.0 Semantic Versioning autorstwa Toma Prestona-Wernera ze sławy GitHub zawierała specyfikację podrzędną dotyczącą tego problemu:
Jednak po dyskusji zostało to usunięte i nie jest już obecne w najnowszej wersji specyfikacji SemVer (2.0.0 w momencie pisania). Późniejszy wątek dyskusji w tym samym miejscu pogłębił się i zaowocował nową Czy „v1.2.3” jest wersją semantyczną? jest dodany do FAQ w SemVer za
master
oddział, chociaż w chwili pisania tego tekstu (ponad 2 lata później), zmiana ta jest nadal nieobecny w oficjalnie wydany spec.źródło
v
powinny być tam jednak.Wydaje się, że istnieją dwie dominujące konwencje (zakładając, że przestrzegasz również rozsądnego standardu numerowania samych wydań):
v1.2.3
1.2.3
Zaletą tego
v1.2.3
jest to, że dokumentacja Git (a także dokumentacja Mercurial) używa tego formatu w swoich przykładach i że korzysta z niego kilka „autorytetów”, takich jak jądro Linuksa i sam Git . (Wspomniana wersja semantyczna korzystała z niej, ale już jej nie ma.)Zaletą tego
1.2.3
jest to, że gitweb lub GitHub mogą automatycznie oferować tarball lub zip do pobrania formularzapackagename-$tag.tar.gz
(i myślę, że ustalono, że tarball nie powinien mieć nazwypackage-v1.2.3.tar.gz
). Alternatywnie możesz użyćgit describe
bezpośrednio do wygenerowania numerów wersji tarball. W przypadku lekkich projektów bez formalnego procesu wydania te możliwości mogą być dość wygodne. Należy również zauważyć, że wersja semantyczna w żadnym wypadku nie jest jedynym lub powszechnie akceptowanym standardem numeracji wersji. I znaczące projekty, takie jak GNOME, a także niezliczone inne projekty używają1.2.3
nazw znaczników.Myślę, że prawdopodobnie jest już za późno na konsolidację tych pozycji. Jak zawsze bądź konsekwentny i rozsądny.
Aktualizacja: Jak wspomniano w tym komentarzu, GitHub oferuje teraz nazwę tarball z „v” pozbawionym tagu.
źródło
v
.Powód poprzedzającego „v” jest historyczny. Starsze SCCS (cvs, rcs) nie mogły odróżnić identyfikatora znacznika od numeru wersji. Identyfikatory znaczników zostały ograniczone, aby nie zaczynały się od wartości liczbowej, aby można było wykryć numery wersji.
źródło
Nie żebym o tym wiedział.
Ale Git nie zezwoli na tag i gałąź o tej samej nazwie w tym samym czasie, więc jeśli masz gałąź „
1.1
” dla1.1
prac, nie umieszczaj tagu „1.1
”, użyj na przykład „v1.1
”źródło
Nowe porady menedżerów pakietów do oznaczania wersji bez prefiksu
v
(jak kompozytor dla projektów PHP) SemVer 2.0 nie ma nic na temat specyfikacji znaczników. Odbywa się to celowo ze względu na unikanie konfliktów. Jednak to zaleca się , aby dodać przedrostekv
w odnośnikach dokumentacji i tekstowych. Jako przykładowy formatv1.0.4
zamiast pełnegoversion 1.0.4
lubver. 1.0.4
jest wystarczająco szczegółowy i elegancki w dokumentacji.źródło
Używamy rozgałęzień i tagów do pracy specyficznej dla wydania, a następnie odpowiednio:
Każdy programista podejmuje decyzję, czy praca, którą zamierzają wykonać, ma zastosowanie tylko do opanowania, czy też dotyczy branży. Widać, że zmiany dokonane w gałęzi są scalane z powrotem w systemie głównym, ale niektóre zmiany w systemie głównym nigdy nie zostaną wprowadzone w gałęzi (w tym przykładzie nie są przeznaczone dla wersji 1.6).
Kiedy jesteśmy gotowi do wydania, tagujemy go, a następnie scalamy po raz ostatni, i nazywamy tag o tej samej nazwie co gałąź, ale z dodatkowym identyfikatorem o konkretnej wersji, np. „1.6-release” lub „1.6-beta” lub „1.6-rc2” i tak dalej.
źródło
Nie znam żadnych standardów. Po prostu wybieram nazwy tagów, aby móc je przykleić
w moich skryptach kompilacji. Konwencja nazewnictwa tagów faktycznie zależy od konwencji nazewnictwa wersji projektu.
źródło
Nie ma jednej najlepszej praktyki, o której wiem. Oto kilka linków:
Generalnie wersjonowania (
0.0.1
,v0.2.1
...) może towarzyszyć jakiś problem śledzenia można uznać za wiarygodne podejście. (.. chociaż zwykle używamv
-prefiksowanych nazw znaczników .. patrz także odpowiedź @VonC)źródło