Прямо сейчас на работе у нас есть разные ветки git для разных версий нашего продукта.Например: ветви с именами v1.0, v2.0, v3.0 и главная ветвь.
Различные клиенты используют разные версии, но новые функции объединяются только в ветвь последней версии и главную ветвь.Исправления, однако, все еще объединены в ветвях более низкой версии.Допустим, в v1.0 была обнаружена ошибка, тогда наш текущий рабочий процесс git:
- для создания ветви функций из v1.0,
- для исправления
- Слияние обратно в v1.0 и нажмите
- Слияние v1.0 с v2.0 и нажмите
- Слияние v2.0 с v3.0 и нажмите
- Слияние v3.0 в мастер и нажмите
Это приводит к тому, что исправления, найденные в более низких версиях, включаются во все версии продукта выше.
V3.0, таким образом, будет содержать все коммиты, которые v2.0 содержит, а также дополнительные функции, сделанные в версии v3.0.Master будет содержать все коммиты, которые содержит v3.0, плюс коммиты дополнительных функций для будущей версии продукта и т. Д.
Теперь у нас было несколько раз, когда люди делали слияние неправильно, вниз вместоснизу вверх.Таким образом, они объединили v3.0 в v2.0, например.Это вызывает огромные проблемы в том смысле, что всякий раз, когда существует новая версия продукта с исправлениями ошибок для клиентов на версии 2.0 программного обеспечения, они фактически получают версию 3.0.
На самом деле эти слияния довольно легко выполнить.неправильный путь, но последствия могут быть довольно значительными, особенно если неправильное слияние останется незамеченным в течение длительного времени.
Есть ли способ предотвратить слияние людей вниз в ветвях версий и только вверх?(То есть с v1.0 до v2.0 и т. Д.).
Я должен упомянуть, что мы не можем определить какие-либо пользовательские git-хуки на стороне сервера.