Версионирование на основе года
(YearVer)
Суть YearVer в обозначении номеров версий в виде/форме
ГГГГ.М
,
ГГГГ.Н
,
ГГГГ.М.н
или
ГГГГ.Н.н
{…
ГГГГ
— год
М
— месяц (число от 1 до 12)
Н
/н
— порядковый номер (начиная с 1)
}.
Если требуется 3 числа, разделённых точкой
[как например в npm {…
npm ERR! Invalid version: "2021.2"
https://stackoverflow.com/a/27543014/2692494:
the version number can only be like \d+\.\d+\.\d+
}], то можно вместо
2021.2
писать
2021.2.0
.
Дополнительные версии, опубликованные в этом же месяце, либо
{…{…
Имеется в виду, что при выборе первой стратегии версия к примеру 2021.2.1
означает ‘дополнительная/новая версия, выпущенная в том же месяце, что и основная [т.е. в феврале]’, а при выборе второй стратегии этот же номер версии означает ‘версия, исправляющая основную версию [2021.2
] {…при этом сама версия 2021.2.1
не обязательно должна быть выпущена в феврале}’.
При выборе второй стратегии допускается использовать вторую цифру номера версии как порядковый номер [версии в соответствующем году], а не как номер месяца. Такой стратегии придерживается к примеру JetBrains.
Таким образом, YearVer (запись версии вида `ГГГГ.X` и `ГГГГ.X.Z`) предполагает 3 варианта выбора
- Для безошибочных проектов номер
X
обозначает номер месяца, в котором была выпущена данная версия, а Z
— номер дополнительной/новой версии в этом же месяце {…но рекомендуется выпускать новые версии не чаще раза в месяц}.
- Для проектов, допускающих исправление ошибок, номер
X
обозначает номер месяца, в котором была выпущена данная версия, а Z
— номер версии [выпущенной не обязательно в этом же месяце], исправляющей ошибки версии ГГГГ.X
или ГГГГ.X.(Z-1)
.
- Аналогично п. 2, только
X
обозначает не номер месяца, а порядковый номер [начиная с 1] в рамках соответствующего года. [Стратегия JetBrains.]
}} исправляющие ошибки основной версии
{…следует определиться и выбрать наиболее подходящую стратегию в зависимости от проекта {…есть проекты {…как правило небольшие по размеру, а по форме обычно это утилиты командной строки [и проекты, которые можно покрыть тестами практически на 100%]}, в которых каждая версия должна/может быть безошибочной [{…очевидно, в таких проектах не нужны версии исправляющие ошибки}]; также к безошибочным можно отнести любые проекты, в которых не нужны версии исправляющие ошибки, а исправление ошибок осуществляется путём срочного выпуска дополнительной/новой версии}}, следует называть
2021.2.1
,
2021.2.2
и т.д.
Что не так с SemVer?
SemVer хорошо подходит для версий ниже 1.0.0 или для некоторых типов проектов, но многие положения SemVer вызывают вопросы, включая условие поднятия major-версии. Например, если изменить название функции API, этого достаточно для увеличения major-версии?
Про другие аргументы против SemVer можно почитать
здесь.
Что не так с CalVer?
Слишком размытая спецификация
{…calver.org не даёт никаких конкретных рекомендаций, какую именно схему «календарного версионирования» следует использовать, а просто описывает уже использующиеся схемы в различных проектах, никак не выделяя их}.
Но YearVer, разумеется, можно рассматривать как частный случай
CalVer.
Если вы хотите оставить отзыв, создайте
запрос на GitHub.