Чи існує стандартна угода про іменування git тегів? [зачинено]


229

Я бачив дуже багато проектів, які використовують v1.2.3як умову іменування тегів у git. Я також бачив певну користь 1.2.3. Чи існує офіційно схвалений стиль чи є хороші аргументи для використання будь-якого?


19
Маючи 43 підсумків і підрахунків, мені цікаво, чи можна це дуже цінне запитання переробити та повторно відкрити, з деякою відповіддю, що інтегрує всі моменти в хороший підсумок та опинившись на вершині? @ PeterEisentraut здається найповнішим; тоді як прийнята відповідь банкомат здається дещо оманливою. (Я думаю, що я буду використовувати v1.2.3 для тегів самостійно, прочитавши всі пункти.)
HostileFork каже, що не довіряйте SE

1
ТАК для фіксації коду. Здається, найкращі практики належать на softwareengineering.stackexchange.com або codereview.stackexchange.com
Cees Timmerman

Погляньте на semver.org (семантична версія), що має дати вам кілька ідей.
фонбранд

мій досвід підказує мені використовувати трохи іншу схему. 1. підкаталог: тег Git повинен принаймні починатися з того, v/як ця група тегів у просторі імен. 2. В ідеалі тег також повинен містити абревіатуру, яка однозначно ідентифікує додаток. напр v/myapp/1.0. Це полегшує об’єднання сховища git: у випадку, якщо програми будуть об’єднані, теги не зіткнуться у просторі імен тегів.
axd

Відповіді:


166

Версія 1.0.0 семантичної версії Тома Престона-Вернера з GitHub-слави мала під-специфікацію щодо цього:

Специфікація тегів (SemVerTag)

Цю субспецифікацію ДОЛЖНЕ використовувати, якщо ви використовуєте систему контролю версій (Git, Mercurial, SVN тощо) для зберігання свого коду. Використання цієї системи дозволяє автоматизованим інструментам перевіряти ваш пакет та визначати відповідність SemVer та випущених версій.

  1. Під час тегування випусків у системі управління версіями тег для версії ОБОВ'ЯЗКОВО повинен бути "vX.YZ", наприклад "v3.1.0" .

Однак після обговорення це було вилучено і більше не присутнє в останній версії специфікації SemVer (2.0.0 на момент написання). Пізніше тема дискусії в тому ж місці пішла в більшу глибину і призвела до того, що "v1.2.3" є семантичною версією? будучи додано в FAQ в SemVer в masterгалузі, хоча на момент написання (більше 2 років) це зміна до сих пір немає в офіційно опублікованої специфікації.


9
Спасибі - Це дуже близько. Я хочу , щоб він би кваліфікований , чомуv повинен бути там же.
troelskn

3
@troelskn @mojombo == Том Престон-Вернер
перитус

4
Оновлено посилання: github.com/mojombo/semver.org/issues/1
Джош Лі

41
У Semantic Versioning 1.0.0 використовується формат "v1.2.3". Semantic Versioning 2.0.0-rc.1, ймовірно, використовує формат "1.2.3". Стаття специфікації тегів (SemVerTag) була видалена з специфікацій. Детальніше тут: semver.org
petrnohejl

9
Ця відповідь робиться, коли існував старий semver (версія 1.0). Сьогодні префікс 'v' видалено з semver v2.0. Детальніше див у публікації нижче.
vitalii

111

Здається, дві домінуючі умовні умови (припускаючи, що ви також дотримуєтесь певного розумного стандарту нумерації самих випусків):

  • v1.2.3
  • 1.2.3

Переваги v1.2.3полягають у тому, що документація Git (а також документація Mercurial) використовує цей формат у своїх прикладах, і що декілька "авторитетів", таких як ядро Linux і сам Git , використовують його. (Згадана семантична версія використовується для її використання, але більше не є.)

Переваги 1.2.3полягають у тому, що gitweb або GitHub можуть автоматично запропонувати тарбол або zip-завантаження форми packagename-$tag.tar.gz(і я думаю, цілком встановлено, що тарбол не повинен називатися package-v1.2.3.tar.gz). Крім того, ви можете git describeбезпосередньо використовувати для генерування номерів версій tarball. Для легких проектів без формального процесу випуску ці можливості можуть бути досить зручними. Слід також зазначити, що семантична версія не є єдиним або загальновизнаним стандартом нумерації версій. І помітні проекти, такі як GNOME, а також незліченна кількість інших проектів використовують 1.2.3іменування тегів.

Я думаю, що, мабуть, вже пізно консолідувати ці позиції. Як завжди, будьте послідовними та маєте сенс.


Оновлення: Як уже згадувалося в цьому коментарі, GitHub тепер пропонує назву тарболу з викресленим тегом 'v'.


13
Щодо генерації GitHub та тарболу: вона вже не актуальна. Вони знімають 'v' тег.
Герман Бір

6
Префіксація 'v' також досить корисна при сортуванні тегів в алфавітному порядку. Також можуть існувати інші теги; чи офіційно в основному сховищі, або для відстеження роботи розробника на локальному рівні. З префіксами 'v' теги релізу утворюють власну групу, а не розкидані по всій іншій області імен.
Робі Басак

1
Оновлено відповідь, щоб відобразити, що SemVer більше не використовує v.
Адам Шпіерс

80

Причина попереднього "v" - історична. Старіші SCCS (cvs, rcs) не могли розрізнити ідентифікатор тегу та номер редакції. Ідентифікатори тегів обмежувались не починати числовим значенням, щоб можна було виявити номери ревізії.


5
+1: Хороша перша відповідь та ім’я однієї з моїх улюблених книг :-) Можливо, наступна відповідь буде на більш актуальне питання.
Johnsyweb

1
... але якщо це справедливо лише для старих SVCS, що робити, якщо суть цієї відповіді на питання про сучасний Git?
MestreLion

3
це все ще корисно в git, тому ви можете легко відрізнити теги версій від інших типів тегів (теги корисні для багатьох інших речей)
Бенджа

19

Не те, що я знаю.
Але Git не дозволить одночасно тег і гілку з тим самим іменем, тому якщо у вас є гілка " 1.1" для 1.1робіт, не ставте тег " 1.1", використовуйте, наприклад, " v1.1"


8
Використання для гілок 1.1.x. Це воно.
vitalii

1
приємний улов, спасибі
RY

10

Нова порада менеджерів пакетів для тегів версій без префіксу v(як композитор для PHP-проектів). SemVer 2.0 не має нічого про специфікацію тегів. Це робиться навмисно завдяки уникненню конфліктів. Однак радимо додавати префікс vу документації та текстових посиланнях. Наприклад, формат v1.0.4замість повного version 1.0.4або ver. 1.0.4достатньо багатослівного та елегантного в документації.


22
"Радить ..." Порадував хто, і де ми можемо побачити цю пораду в її початковому контексті?
bignose

8

Ми використовуємо гілки та теги для роботи, пов’язаної з випуском з наступним реальним випуском відповідно:

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

Кожен розробник приймає розумне рішення щодо того, чи робота, яку вони збираються здійснити, застосовна лише для освоєння, чи це також стосується галузі. Ви можете бачити, що зміни, які вносяться до гілки, об'єднуються назад у програмі master, але деякі зміни у master ніколи не відбудуться у гілці (тобто такі, що не призначені для випуску 1.6, у цьому прикладі).

Коли ми готові до випуску, ми тегуємо його, а потім об'єднуємося останнім разом, і називаємо тег із тим самим іменем, що і гілка, але з додатковим ідентифікатором того, яка саме версія є, наприклад, "1.6-реліз" або "1.6-бета" або "1.6-rc2" та ін.

... ------o---o---o--o---o--- ...   master
         /       /
        /       /
... ---o------(*)--- ...      1.6 branch
          1.6-release

Спасибі - це хороша відповідь для опису того, як ви робите розгалуження, але я насправді мав на увазі, чи є якась конкретна (технічна) причина для використання певної схеми іменування в git. І все-таки даю вам нагоду за приємні діаграми;)
troelskn

Ах, готча! Вибачте за нерозуміння вашого питання. Ні, немає конкретних технічних причин для використання певного імені, окрім людського спілкування. Ви можете називати свої гілки та теги майже все, що завгодно.
Джон Фемінелла

Ваша філія випуску-1.6 має назву "1.6 гілка"? Я думав, що пробіли не підтримуються у назвах гілок.
Cees Timmerman

8

Я не знаю жодних стандартів. Я просто вибираю назви своїх тегів таким чином, щоб я міг приклеїти

VERSION = `git describe --tags`

у моїх сценаріях побудови. Отже, умова іменування тегів насправді залежить від конвенції іменування версії проекту.


1
git описують - теги:>
Деміен Керл

1

Існує не одна найкраща практика , я в курсі. Ось декілька посилань:

Як правило, управління версіями ( 0.0.1, v0.2.1, ...) , може бути , рука об руку з якою - то питання відстеження можна вважати правдоподібним підхід. (.. хоча я зазвичай використовую vпопередньо встановлені імена тегів .. див. також відповідь @VonC)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.