Какую схему нумерации версий вы рекомендуете? - PullRequest
39 голосов
/ 23 сентября 2008

У меня вопрос, какую схему именования версий следует использовать для какого типа проекта.

Очень распространенным является major.minor.fix, но даже это может привести к 4 числам (т. Е. Firefox 2.0.0.16). У некоторых есть модель, в которой нечетные числа указывают версии разработчика и четные номера стабильных выпусков. В микс могут входить всевозможные дополнения, например -dev3, -rc1, SP2 и т. Д.

Существуют причины предпочитать одну схему другой, и должны ли разные типы проектов (то есть Open Source против Closed Source) иметь разные схемы именования версий?

Ответы [ 12 ]

28 голосов
/ 19 мая 2009

Для этого есть два хороших ответа (плюс множество личных предпочтений, см. Комментарий гизмо о религиозных войнах)

Для общедоступных приложений стандартный Major.Minor.Revision.Build лучше всего работает IMO - публичные пользователи могут легко определить, какая версия программы у них есть, и в какой-то степени, насколько устарела их версия.

Для в домашних приложениях, где пользователи никогда не запрашивали приложение, развертывание выполняется ИТ-отделом, а пользователи будут вызывать службу поддержки, я обнаружил, что Year.Month.Day.Build работать лучше во многих ситуациях. Таким образом, этот номер версии можно декодировать, чтобы предоставить справочной службе более полезную информацию, чем общедоступная схема номеров версий.

Тем не менее, в конце дня я бы сделал одну рекомендацию превыше всего - используйте систему, которую вы можете поддерживать последовательной . Если есть система, которую вы можете настроить / написать сценарию для автоматического использования каждый раз, используйте эту .

Худшее, что может произойти, это то, что вы выпускаете двоичные файлы с тем же номером версии, что и предыдущие - недавно я имел дело с автоматическими сообщениями об ошибках сети (кто-то использует приложение) и пришел к выводу, что Year.Month Номера версий .Day.Build, показанные в дампах ядра, где они даже не обновляются удаленно до самого приложения (само приложение использовало заставку с действительными числами - что, конечно, не взято из двоичного файла, как можно предположить). В результате я не могу узнать, происходят ли аварийные дампы из 2-летнего двоичного файла (что указывает номер версии) или из 2-месячного двоичного файла, и, таким образом, нет никакого способа получить правильный исходный код (также нет никакого контроля исходного кода! )

24 голосов
/ 23 сентября 2008

Вот что мы используем в нашей компании: Major . Minor . Патч-версия . Номер сборки .

Основные изменения включают полный цикл выпуска, включая участие в маркетинге и т. Д. Этот номер контролируется силами вне R & D (например, в одном из мест, где я работал, Маркетинг решил, что нашей следующей версией будет «11» - в соответствии с конкурентом. Мы были в версии 2 в то время :)).

Незначительный изменяется, когда в продукт добавляется новая функция или существенное изменение поведения.

Версия патча увеличивается на единицу каждый раз, когда патч официально добавляется в версию, обычно включая только исправления ошибок.

Версия сборки используется, когда для клиента выпускается специальная версия, обычно с определенным для него исправлением ошибки. Обычно это исправление будет выпущено для следующего патча или минорной версии (а Управление продуктами обычно помечает ошибку как «будет выпущено для патча 3» в нашей системе отслеживания).

23 голосов
/ 29 июля 2011

Я большой поклонник Семантическая версия

Как прокомментировали многие другие, он использует формат X.Y.Z и дает веские основания для объяснения.

22 голосов
/ 23 сентября 2008

Наш отдел исследований и разработок использует 1.0.0.0.0.000: MAJOR.minor.patch.audience.critical_situation.build

Пожалуйста, , пожалуйста, , не делайте этого.

16 голосов
/ 23 сентября 2008

Этот вопрос больше касается религиозной войны, чем объективных аспектов. Всегда есть тонны плюсов и минусов против той или иной схемы нумерации. Все, что люди могли (или должны) дать вам, это схема, которую они использовали, и почему они ее выбирают.

Со своей стороны я использую схему X.Y.Z, все цифры где:

  • X указывает на изменение в публичном API, которое вводит обратную несовместимость
  • Y указывает на добавление некоторых функций
  • Z указывает на исправление (либо исправление ошибки, либо изменение внутренней структуры без влияния на функциональность)

В конце концов, я использую суффикс «Beta N», если хочу получить отзывы от пользователей до того, как будет сделан официальный релиз. Нет суффикса "RC", потому что никто не совершенен, и всегда будут ошибки; -)

5 голосов
/ 05 мая 2013

Мы предпочитаем major. minor. milestone. revision - build схема, где:

  • major: увеличивается при значительных архитектурных изменениях или важных улучшениях в возможностях.
  • minor: небольшие изменения и новые функции, не требующие архитектурных изменений.
  • milestone: указывает на стабильность и зрелость кода:
    • 0 для разработки / пре-альфа
    • 1 для альфа
    • 2 для бета-версии
    • 3 для кандидата на освобождение (RC)
    • 4 для окончательного / производственного выпуска
  • revision: Указывает номер выпуска, исправления или исправления.
  • build: уникальные ссылки на конкретные сборки или версии приложения. Номер сборки - это последовательное целое число, которое обычно увеличивается при каждой сборке.

Примеры:

  • 1.4.2.0-798: первая бета-версия версии 1.4, созданная номером сборки 798.
  • 1.8.3.4-970: 1.8-RC4, созданный номером сборки 970.
  • 1.9.4.0-986: первый производственный выпуск версии 1.9, созданный номером сборки 986.
  • 1.9.4.2-990: второй выпуск исправления ошибки 1.9, созданный номером сборки 990.

Поскольку в выпусках продуктов всегда есть 4 в их третьей цифре строки версии, эта цифра может быть удалена для производственных выпусков.

5 голосов
/ 23 сентября 2008

Лично я предпочитаю MAJOR.MINOR.BUGFIX-SUFFIX, где SUFFIX равен dev для версий разработки (проверка контроля версий), rc1 / rc2 для кандидатов на выпуск и без суффикса для версий выпуска.

Если у вас есть суффиксы для проверок разработки, возможно, даже с номером ревизии, нет необходимости делать их четными / нечетными, чтобы отделить их.

4 голосов
/ 28 ноября 2010

В случае библиотеки номер версии сообщает вам об уровне совместимости между двумя выпусками и, следовательно, насколько сложным будет обновление.

Выпуск исправления ошибки должен сохранять совместимость двоичного кода, источника и сериализации.

Незначительные релизы означают разные вещи для разных проектов, но обычно им не нужно сохранять совместимость с исходным кодом.

Основные номера версий могут разбить все три формы.

Я написал больше об обосновании здесь .

3 голосов
/ 05 мая 2012

Благодаря методам Agile-разработки программного обеспечения и SaaS-приложениям идея о выпуске Major против Minor ушла в прошлое - релизы выпускаются крайне часто на регулярной основе, поэтому схема нумерации выпусков, основанная на этом различии, больше не нужна для меня.

В моей компании используется схема нумерации, в которой используются последние 2 цифры года, в котором начался выпуск, за которым следует номер выпуска в течение этого года.

Итак, четвертый релиз, начатый в 2012 году, будет 12.4.

После этого вы можете включить номер версии с исправлением ошибок, если это необходимо, но в идеале вы выпускаете достаточно часто, чтобы они не были необходимы, поэтому «12.4.2».

Это очень простая схема, которая не давала нам никаких проблем с другими схемами нумерации версий, которые я использовал ранее.

1 голос
/ 20 ноября 2008

Просто

Major.Minor.Revision.Build
...