Поднять версию, прежде чем начинать новую разработку или пометить релиз, что лучше?

9

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

Какой подход лучше?

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

Если номер версии изменился до выпуска тегов, то 2 номера версий (tag и Makefile / AssemblyInfo.cs) не совпадают.

git describe может дать вам v1.2.3.4-15-g1234567, если текущая ревизия - после v1.2.3.4, но вы уже изменили файлы, чтобы иметь v1.2.3.5

linquize
источник

Ответы:

2

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

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

Другие причины для управления версиями - маркетинговые и справочные (иногда юридические) команды
Эти команды имеют свои собственные приоритеты для управления версиями.

  • Помогите
    Нужен простой способ определения совместимости, функций и потенциальной стабильности (см. Схему нечетных / четных чисел в Linux).
  • Маркетинг
    хочет большего числа каждый раз (желательно выше 2)
  • Законный
    хочет, чтобы убедиться, что у вас есть все функции перед увеличением числа.

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

Мартин Йорк
источник
1

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

Например, версия помечается как «v1.2.3». Если git-describeвозвращается «v1.2.3-4-g1a2b3c4», то при сборке эта сборка получает версию 1.2.3.4.

Если позже к этой версии git-describeбудет применен тег, он вернет вместо него «v1.2.4», что соответствует версии 1.2.4.0. Следующим коммитом будет 1.2.4.1.

Преимущества, которые я получаю от этой системы:

  • Каждый коммит автоматически увеличивает номер версии.
  • Версию можно сделать выпуском ".0", просто пометив ее.
  • Хотя эта система не идеальна, она работает с DVCS, потому что она подсчитывает количество коммитов с момента последнего тега.
Стивен Дженнингс
источник