SemVer (Семантическое версионирование) как правильно выбрать когда увеличивать minor, а когда patch?

Итак, на офф ресурсе кратко написано https://semver.org/lang/ru/


Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:

МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API.
МИНОРНУЮ версию, когда вы добавляете новый функционал, не нарушая обратной совместимости.
ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ формату.


С мажором всё понятно, тут вопросов нет. С минором в принципе тоже, особенно когда мы добавляем целые разделы (в приложении) или новые точки входа (в api)

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

В подробном описании написано что патч это только исправление багов (а если "забыли" добавить этот столбец таблицы, это считается за баг?)
Патч-версия Z (x.y.Z | x > 0) ДОЛЖНА быть увеличена только если содержит обратно совместимые баг-фиксы. Определение баг-фикс означает внутренние изменения, которые исправляют некорректное поведение.


Или вот еще пример:
Изменён код определения mime-типа загружаемого файла, была одна функция, а теперь загружена сторонняя библиотека и проверка делается с помощью нее, по сути в коде поменялась одна строчка. Это уже минор и считается новой фичей или это рефакторинг и считается патчем? Ведь теоретически со старой функцией могли быть в будущем проблемы, а с новой этих проблем не будет

А в подробном описании минора указано
Она МОЖЕТ включать в себя изменения, характерные для патчей.


Может просто забить на патчи и пользоваться только мажор.минор и вопросов не возникнет ))
  • Вопрос задан
  • 1381 просмотр
Решения вопроса 1
ApeCoder
@ApeCoder
Если ваши изменения являются частью API то увеличиваете минорную версию, если это внутренние изменения, которые ничего не делают с API, то это патч.


Патч-версия Z (x.y.Z | x > 0) ДОЛЖНА быть увеличена только если содержит обратно совместимые баг-фиксы. Определение баг-фикс означает внутренние изменения, которые исправляют некорректное поведение.

Минорная версия (x.Y.z | x > 0) ДОЛЖНА быть увеличена, если в публичном API представлен новый обратно совместимый функционал. Она ДОЛЖНА быть увеличена, если какой-либо функционал публичного API помечен как устаревший (deprecated). Она МОЖЕТ быть увеличена в случае реализации нового функционала или существенного усовершенствования в приватном коде. Она МОЖЕТ включать в себя изменения, характерные для патчей. Патч-версия ДОЛЖНА быть обнулена, когда увеличивается минорная версия.

Мажорная версия X (X.y.z | X > 0) ДОЛЖНА быть увеличена, если в публичном API представлены какие-либо обратно несовместимые изменения. Она МОЖЕТ включать в себя изменения, характерные для уровня минорных версий и патчей. Когда увеличивается мажорная версия, минорная и патч-версия ДОЛЖНЫ быть обнулены.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Arik
наверно путаете коммиты с релизами, по вашему если версия 1.2.4 то было столько исправлений, доработок, коммитов? минорные приносят что-то новое, патч исправляют баги
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы