Czy istnieje standardowa konwencja nazewnictwa dla tagów git? [zamknięte]

Widziałem wiele projektów używających v1.2.3 jako konwencji nazewnictwa tagów w git. Widziałem też zastosowanie 1.2.3. Czy istnieje oficjalnie zatwierdzony styl, czy są jakieś dobre argumenty za używaniem jednego z nich?

 179
Author: sshow, 2010-01-05

8 answers

Wersja 1.0.0 Semantic Versioning , autorstwa Toma Prestona-Wernera z GitHub fame, miała sub-specyfikację adresującą to:

Specyfikacja Znaczników (SemVerTag)

Ta pod-Specyfikacja powinna być używana, jeśli używasz systemu kontroli wersji (Git, Mercurial, SVN, itp.) do przechowywania kodu. Korzystanie z tego systemu umożliwia zautomatyzowane narzędzia do kontroli pakiet i określić zgodność Semvera z wydanymi wersjami.

  1. kiedy tagowanie wydań w systemie kontroli wersji, znacznik dla wersji musi być "vX.Y. Z "np." v3.1.0".

Jednak po dyskusja została usunięta i nie jest już obecna w najnowszej wersji SemVer spec (2.0.0 w momencie pisania). późniejszy wątek dyskusyjny w tym samym miejscu wszedł w większą głębię i zaowocował nowym czy "v1.2.3" jest wersją semantyczną?bycie dodane do FAQ w Semverze master branch, chociaż w momencie pisania (ponad 2 lata później) ta zmiana jest nadal nie obecna w oficjalnie wydanym spec.

 138
Author: peritus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 10:45:45

Wydaje się, że istnieją dwie dominujące konwencje (zakładając, że przestrzegasz również jakiegoś rozsądnego standardu numerowania samych wydań):

  • v1.2.3
  • 1.2.3

Zaletą v1.2.3 jest to, że dokumentacja Git (a także dokumentacja Mercurial) używa tego formatu w swoich przykładach, a kilka "autorytetów", takich jak jądro Linuksa i Git używa tego samego formatu. (Wspomniane wersjonowanie semantyczne kiedyś go używałem, ale już nie.)

Zaletą 1.2.3 jest to, że gitweb lub GitHub mogą automatycznie oferować tarball lub zip do pobrania formularza packagename-$tag.tar.gz (i myślę, że jest całkiem ustalone, że tarball powinien , a nie być nazwany package-v1.2.3.tar.gz). Alternatywnie, możesz użyć git describe bezpośrednio do wygenerowania numerów wersji tarballa. W przypadku lekkich projektów bez formalnego procesu wydawania, możliwości te mogą być całkiem wygodne. Należy również zauważyć, że wersjonowanie semantyczne jest przez nie oznacza jedynego lub powszechnie akceptowanego standardu numeracji wersji. Znaczące projekty, takie jak GNOME, jak również niezliczone inne projekty, używają nazw znaczników 1.2.3.

Myślę, że jest już za późno na konsolidację tych pozycji. Jak zawsze, bądź konsekwentny i mieć sens.

Update: jak wspomniano w Ten komentarz, GitHub oferuje teraz nazwę tarballa z " v " usuniętym z tagu.

 95
Author: Peter Eisentraut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 10:49:22

Powód poprzedzającego "v" jest historyczny. Starsze SCCS (cvs,rcs) nie potrafiły odróżnić identyfikatora znacznika od numeru wersji. Identyfikatory znaczników zostały ograniczone do tego, aby nie zaczynały się od wartości liczbowej, dzięki czemu można było wykryć numery wersji.

 67
Author: Bill Door,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 00:46:18

Nic mi o tym nie wiadomo.
Ale Git nie zezwala na tag i gałąź o tej samej nazwie w tym samym czasie, więc jeśli masz gałąź "1.1 " dla 1.1 działa, nie umieszczaj znacznika "1.1", użyj na przykład "v1.1"

 14
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-05 13:28:46

Nowe Menedżery pakietów doradzają wersje znaczników bez prefiksu v (jak composer dla projektów PHP). SemVer 2.0 nie ma nic o specyfikacji znaczników. Robi się to celowo, unikając konfliktów. Jednak zaleca się dodanie prefiksu v w dokumentacji i odniesieniach tekstowych. Jako przykładowy format {[2] } zamiast pełnego version 1.0.4 lub ver. 1.0.4 jest wystarczająco wyrazisty i elegancki w dokumentacji.

 10
Author: vitalii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-19 09:31:03

Używamy gałęzi i tagów do pracy specyficznej dla Wydania, a następnie rzeczywistego wydania, odpowiednio:

o---o-----o---o---o--- ...   master
     \   /       /
      \ /       /
       o-------o--- ...      1.6 branch

Każdy programista podejmuje mentalną decyzję o tym, czy praca, którą zamierza wykonać, ma zastosowanie tylko do mastera, czy też jest istotna dla gałęzi. Widać, że zmiany wprowadzone w gałęzi są scalane z powrotem na master, ale niektóre zmiany na master nigdy nie wejdą do gałęzi (czyli te, które nie są przeznaczone dla wydania 1.6, w tym przykładzie).

Kiedy jesteśmy gotowi do wydania, oznaczamy go, a następnie łączymy z powrotem po raz ostatni, i nadajemy tag o tej samej nazwie co branch, ale z dodatkowym identyfikatorem o konkretnej wersji, np. "1.6-release "lub" 1.6-beta "lub" 1.6-RC2", itd.

... ------o---o---o--o---o--- ...   master
         /       /
        /       /
... ---o------(*)--- ...      1.6 branch
          1.6-release
 6
Author: John Feminella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-05 14:13:13

Nie znam żadnych standardów. Po prostu wybieram moje nazwy tagów tak, że mogę przykleić

VERSION = `git describe --tags`

W moich skryptach budowania. Tak więc konwencja nazewnictwa tagów w rzeczywistości zależy od konwencji nazewnictwa wersji projektu.

 6
Author: Jörg W Mittag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-16 15:58:18

Nie znam żadnej najlepszej praktyki. Oto kilka linków:

Ogólnie rzecz biorąc, wersjonowanie (0.0.1, v0.2.1, ...) być może w parze z pewnym śledzeniem problemów można uznać za wiarygodne podejście. (.. chociaż zwykle używam v-prefiksowych nazw znaczników .. Zobacz też @ VonC odpowiedz)

 1
Author: miku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 15:18:17