Итак, у вас есть набор ошибок A, в настоящее время выпекаемый как 1.5.1-бета2, и у вас есть новый набор ошибок B, для которого вы хотите немедленно получить исправление. Правильным механизмом для этого является разветвление 1.5.0, исправление набора ошибок B и выпуск 1.5.2 (при условии, что вам не нужна бета-версия). Затем объедините исправления B с рабочей веткой A, выпустите 1.5.3-beta1 и перейдите к официальному выпуску.
Это становится немного сложнее, когда у вас запущены две параллельные бета-последовательности, особенно когда Вы не уверены, что из этого выйдет первым, но это управляемо. Главное - просто помнить, как приоритет SemVer влияет на решения, принимаемые вашими клиентами (применяемые ими алгоритмы), будь то быстрое отслеживание конкретной версии в их производственных системах, а также то, как их разработчики извлекают у вас уроки.
Мои производственные системы имеют два входа:
- Разработка - это продукт моих инженеров.
- Автоматизированное обслуживание - это продукт системы, которая:
- Извлекает выпуски исправлений и применяет их к развилке моего текущего производственного кода.
- Тестирует примененные изменения на основе обширного набора функциональных и эксплуатационных тестов.
- Если тесты зеленого цвета, то летные тесты изменения в моей производственной среде, в то же время отслеживая необычные изменения частоты отказов производства.
- Пока все идет хорошо, и человек не вмешивается, чтобы остановить его, в конечном итоге выкатывает изменения в Вся производственная система.
Есть, конечно, вариации s для услуг и упакованных продуктов. Дело в том, что вы можете использовать свои точки выпуска, чтобы сигнализировать вашим клиентам или разработчикам о том, что у вас есть важное исправление ошибки, которое имеет небольшой риск поломки. Не существует требования, чтобы 1.5.2 имела какое-либо происхождение от 1.5.1-бета #. Вы не обязаны когда-либо выпускать 1.5.1. Однако в примечаниях к выпуску обычно добавляется комментарий о том, что 1.5.2 является исправлением для ошибки в 1.5.0 и не содержит исправлений в 1.5.1-бета #.
Хотя вы, возможно, никогда не столкнетесь с необходимостью, вам не нужно включать исправления ошибок из 1.5.2 в ваш возможный выпуск 1.5.3, при условии, что более поздний выпуск пройдет контроль качества. Иногда бывает так, что указанное c исправление ошибки оказывается неприменимым в более поздних выпусках.
Как вы поддерживаете качество вашей продукции, полностью зависит от вас. То, как вы сигнализируете об уровне риска / важности для конкретной версии c, определяется стандартом SemVer .