🌍 Доступные языки: 🇺🇸 English | 🇷🇺 Русский
convergit
— лат. "сходится", например, "[он/она/оно] сходится [в чём-то или где-то]"
Название является портманто из названий CONVentinal commits
, semantic VERsioning
и, разумеется, git
.
Как можно понять из названия, утилита создаёт теги согласно стандарту семантического версионирования v2.0.0 исходя из сообщений коммитов, которые для этого должны соответствовать стандарту общепринятых коммитов v1.0.0.
Кратко о факторах, вызывающих смену версий:
- тип коммита
fix
вызывает возрастание patch-версии (последнее число версии); - тип коммита
feat
вызывает возрастание minor-версии (среднее число версии) и обнуление patch-версии; - восклицательный знак после типа коммита перед двоеточием (например,
feat!:
илиfix(etc)!:
) либо же фразыBREAKING-CHANGE:
илиBREAKING CHANGE:
в теле сообщения коммита вызывают возрастание major-версии (первое число версии) и обнуление остальных; - Коммиты с любыми другими сообщениями считаются обслуживающими и изменения версии не вызывают.
При изменении любой версии также создаётся или пересоздаётся тег с именем vX
на этом же коммите, где X
— мажорная версия. Это позволяет ссылаться в клиентских конвейерах на этот тег с уверенностью в сохранении обратной совместимости.
При возрастании мажорной версии (фактически сигнализирующем об изменениях в коммите, ломающих обратную совместимость), также происходит автоматическое создание ветки с именем maint/vX
от предыдущего коммита, где X
— предыдущая мажорная версия. Если для клиентских конвейеров, которые не адаптированы к следующей мажорной версии, требуется поддержка исправлениями/улучшениями, все сохраняющие обратную совместимость изменения нужно добавлять в эти ветки.