Проблема
Я работаю над программным проектом, в котором участвует около 10 разработчиков, мы делимся исходным кодом через Mercurial. У нас есть ветка разработки и производства в каждом выпуске. Неоднократно в течение проекта у нас был исходный код из одной ветви, т.е. v1, попадающий в ветки исправлений и поддержки для более ранних выпусков программного обеспечения, т.е. v2.
Это приводит либо к тому, что время, потраченное на резервирование неверного коммита, либо к неправильному (возможно, не QAd) коду, достигает и развертывается в неправильной ветви, если мы не заметим, что код попал в неправильную ветку.
Наша отрасль и метод слияния / дизайн
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
Следовательно, мы будем работать над веткой разработки релизов, пока она не будет считаться готовой , ветвить ее для отдельной ветки тестирования / UAT / Production, где выполняются все релизы и сопровождение. Теги используются для создания релизов этой ветки. Пока тестируется v1, для v2 будет создана ветка, и разработчики начнут работать над новыми функциями.
Обычно случается, что разработчик фиксирует работу из-за ветки v2-dev в v1-dev или v1-prod, или, что еще хуже, они объединяют v2-dev в v1-prod (или подобные подобные ошибки).
Мы говорим большинству разработчиков не получать доступ к ветвям -prod , однако код все еще проскальзывает. Группа более старших разработчиков «присматривает» за веткой -prod.
Следует отметить, что, хотя v2 только начала разработку, в v1 все еще могут быть некоторые довольно полезные патчи для исправления проблем. Т.е. v1, возможно, не просто получает странный маленький патч.
Что мы уже пробовали
- Наличие отдельной ветки -prod с привратниками. Ветвь -prod должна выдавать предупреждения через свое имя, и большинству разработчиков не нужно быть в этой ветке. Это на самом деле не уменьшило проблему.
- Повышение осведомленности об этой проблеме среди разработчиков, чтобы попытаться сделать их более бдительными. Опять же, это не очень успешно.
Возможные причины, которые я вижу для разработчиков, совершающих неправильную ветку
- Слишком сложная отраслевая конструкция
- Имея активное развитие в нескольких отраслях параллельно. (У проекта есть признаки использования лавинообразной модели .)
- Разработчики недостаточно хорошо понимают DVCS
Вопросы, которые я прочитал, которые были несколько актуальны
Я прочитал этот вопрос о том, как не совершать неправильные действия, и чувствую, что ответы относительно визуальных подсказок могут быть полезны. Однако я не совсем уверен, что проблемы, с которыми мы сталкиваемся, не являются симптомами более фундаментальной проблемы.
С помощью визуальных подсказок мы можем легко включить их в командную строку, однако примерно половина команды использует затмение, в котором я не уверен, как включить визуальные подсказки.
Вопрос
Какие методы, в виде программного обеспечения, управления проектами или управления, мы можем использовать для уменьшения (в идеале, остановки) фиксаций в неправильной ветви, отнимающих наше время или портящих наш развернутый код?
Конкретный комментарий по причинам, которые, как я считаю, могут внести свой вклад, как указано выше, будет оценен, но это не должно ограничивать ваш ответ.