Какую схему нумерации версий вы рекомендуете?

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

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

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

12 ответов


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

на public применения, стандартный майор.Незначительный.Пересмотр.Build works best IMO-публичные пользователи могут легко сказать, какая версия программы у них есть, и в какой-то степени, насколько устарела их версия.

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

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

самое худшее, что может произойти, это выпуск двоичных файлов с тем же номером версии, что и предыдущие - недавно я занимался автоматизированными отчетами об ошибках сети (кто-то elses application) и пришел к выводу, что год.Месяц.День.Построить номера версий, показанные в основных дампах, где даже отдаленно не в курсе самого приложения (само приложение использовало заставку с реальным числа-которые, конечно, не взяты из двоичного кода, как можно было бы предположить). В результате у меня нет способа узнать, поступают ли аварийные дампы из 2-летнего двоичного файла (что указывает номер версии) или 2-месячного двоичного файла, и, следовательно, нет способа получить правильный исходный код (нет управления версиями!)


вот что мы используем в нашей компании: основные.несовершеннолетний.патч версии.Номер Сборки .

на основные изменение включает полный цикл выпуска, включая участие в маркетинге и т. д. Это число контролируется силами, находящимися за пределами НИОКР (например, в одном из мест, где я работал, маркетинг решил, что наша следующая версия будет " 11 " - соответствовать конкуренту. Мы были в версии 2, в то время :)).

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

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

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


наш отдел НИОКР использует 1.0.0.0.0.000: майор.незначительный.заплатка.аудитория.критическая ситуация.build

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


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

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


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

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

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

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


лично я предпочитаю майора.НЕЗНАЧИТЕЛЬНЫЙ.Исправление-суффикс, где суффикс dev для версий разработки (проверки контроля версий), rc1 / rc2 для кандидатов на выпуск и без суффикса для версий выпуска.

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


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

  • major: инкременты на значительных архитектурноакустических изменениях или важных выдвижениях в возможностях.
  • minor: небольшие изменения и новые функции, не требующие архитектурных изменений.
  • milestone: указывает на стабильность и зрелость код:
    • 0 для разработки / pre-alpha
    • 1 для Альфа
    • 2 для бета
    • 3 для кандидата на выпуск (RC)
    • 4 для выпуска final / production
  • 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.

поскольку выпуски prodcution всегда имеют 4 в 3-й цифра строку version, цифра может быть удален по выпуску продукции.


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

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

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

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

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


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

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

Итак, 4-й выпуск начался в 2012 году будет 12.4.

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

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


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


то, что мы делали здесь, это майора.незначительный.платформа.исправить.

основные: мы увеличиваем это число, когда сохраненный файл из этой сборки больше не совместим с предыдущей сборкой.
Exemple: файлы, сохраненные в версии 3.0.0.0 не будут совместимы с версией 2.5.0.0.

несовершеннолетний: мы увеличиваем это число при добавлении новой функции. Эту функцию должен видеть пользователь. Не скрытая функция для разработчицей. Это число сбрасывается до 0 при увеличении major.

платформа: это платформа, которую мы используем для разработки.
Exemple: 1 означает .net framework версии 3.5.

исправить: мы увеличиваем это число, когда только исправления ошибок включены в эту новую версию. Это число сбрасывается до 0 при увеличении major или minor.


просто

Major.Minor.Revision.Build