Версионирование
В большинстве случаев я придерживаюсь стандарта SemVer v2.0. Номера версий имеют следующий формат:
Major.Minor.Patch[-Suffix]
Major
(основной номер) — критические изменения, влияющие на обратную совместимость.Minor
(дополнительный номер) — существенные изменения с сохранением обратной совместимости (добавление, удаление, изменение функционала).Patch
(исправление) — исправление ошибок, с сохранением обратной совместимости.-Suffix
(суффикс) — опционально, может быть использован для выпуска предварительных версий. Если предварительных версий множество, дополнительный номер выпуска указывается через точку. Например,-alpha
,-beta
,-rc
,-alpha.1
,-beta.5
.
Примеры:
1.0.0
1.0.0-alpha.7
1.2.21
1.1.0-beta.1
Нумерация основного номера (major) начинается с единицы. В редких случаях, например в Python, может начинаться с нуля.
В проектах .NET стандарт SemVer v2.0 используется в качестве номера пакета (Package Version). Для версий сборок (Assembly Version) используется номер из четырёх чисел, первые три соответствуют выше указанной схеме, а четвертное число — номер сборки (автоматический номер сборки из Jenkins, TeamCity и т.п., либо просто счётчик).
Использование счетчика для номера сборки полезно, когда исходный код не меняется, но может меняться результат сборки. Например, если сборка происходит в разных окружения, на разных системах. Либо в процессе сборки произошла ошибка и часть нужных файлов не была включена в сборку (из-за недоступности, блокировки и т.п.), при этом сама сборка завершилась успешно и проблема была обнаружена не сразу. Это особенно актуально для пакетов.
Также удобно указывать хэш последней фиксации (git hash) в номер версии, если есть такая техническая возможность. Это полезно в больших проектах-приложениях, когда используются разные окружения (Test, UAT, Prod), есть QA или возможность получения обратной связи от пользователей.
Примеры номеров версии с метаданными из системы контроля версий (таких как git):
1.0.0.272+9a847b1
1.2.0.59+9a847b1489be6642b90ff53c0803d21bc8d2cae2
3.4.7.1708+9a847b1489be6642b90ff53c0803d21bc8d2cae2;2025-09-23T11:01:11;master