Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

А Главный изменение предполагает полный цикл выпуска, включая участие в маркетинге и т. д.Это число контролируется силами, не связанными с исследованиями и разработками (например, в одном из мест, где я работал, отдел маркетинга решил, что нашей следующей версией будет цифра «11» — чтобы соответствовать конкуренту.Мы тогда были на версии 2 :)).

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

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

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

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

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

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

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

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

Со своей стороны, я использую схему XYZ, все это числа, где:

  • Икс указать изменение в общедоступном API, которое приводит к обратной несовместимости
  • Да указать добавление некоторых функций
  • З указать исправление (либо исправление ошибки, либо изменение внутренней структуры без ущерба для функциональности)

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

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

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

Мы предпочитаем 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 в третьей цифре строки версии эта цифра может быть удалена для производственных выпусков.

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

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

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

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

Я написал подробнее о причине здесь.

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

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

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

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

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

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

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

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

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

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

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

Просто

Major.Minor.Revision.Build
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top