Филиалы должны работать нормально, исходя из моего опыта их использования в предварительных обзорах на предыдущей работе.
Заметим, что в то время мы использовали обзоры перед фиксацией только для критических исправлений в коде-кандидате на производственный выпуск, поэтому не было много веток (рутинные изменения передавались через обзоры после фиксации).
Поскольку вы, похоже, собираетесь использовать предварительные проверки для всех изменений, вам может потребоваться управлять большим количеством веток. Если вы ожидаете, что разработчик будет вносить одно «проверяемое» изменение в среднем в неделю, у вас будет около 50 веток в год на каждого разработчика в команде. Если вы используете меньшие куски работы - например, занимающие 1, 2, 3 ... дня - умножьте 50 на 2, 3, 5 ... соответственно.
Ниже приведены несколько других соображений, которые следует учитывать, если вы хотите, чтобы это было наилучшим образом .
1. обработка случаев, когда отложенный просмотр блокирует код, необходимый для других членов команды
Устанавливать, отслеживать и разрешать конфликты, связанные со сроками проверки кода. Согласно моим воспоминаниям о предварительных проверках к обычным изменениям, с которыми я сталкивался в одном из прошлых проектов, разумный срок составляет около 3 дней, и время, чтобы начать беспокоиться, это когда проверка не завершена более чем через 1 день после представления.
Для сравнения, в обзорах после фиксации эти требования намного более мягкие (я использую 2-недельный срок и начинаю беспокоиться через 1 неделю) - но поскольку вы нацелены на предварительные обзоры, это, вероятно, неинтересно.
2. конфликты слияния при отправке проверенного кода
Что делать, если коммит для проверенного кода заблокирован конфликтующими изменениями, совершенными кем-то еще, пока код ждал проверки?
Пара вариантов для рассмотрения
- Откат к началу и требует от разработчиков повторной реализации и пересмотра изменений.
В этом случае вам может потребоваться устранить негативное влияние на моральный дух команды, которое это может (будет!) иметь.
- передать ответственность за слияние другому члену команды («мастер слияния»).
В этом случае вам также необходимо решить, должны ли слияния как таковые проходить предварительную проверку или нет, и если да, то что делать в случае, если это слияние в свою очередь встречает другой конфликт.
- игнорируйте изменения, внесенные в проверенный код на этапе слияния.
В этом случае вам может потребоваться устранить негативное влияние на командный дух, связанный с тем, что принятый код отличается от того, который был проверен.
- Придумайте способ избежать конфликтов.
Простой подход заключается в том, чтобы позволить только одному разработчику одновременно изменять определенный набор файлов - хотя это не защитит вас от изменений, которые не изменяют файлы напрямую, а влияют на них посредством внутренних изменений API. , Вы также можете обнаружить, что такая «пессимистическая блокировка» делает общесистемные изменения и глубокий рефакторинг довольно проблематичным.
Для сравнения, в обзорах после фиксации проблем такого рода не возникнет (поскольку они касаются кода, который уже объединен по определению), но поскольку вы ориентируетесь на отзывы перед фиксацией, это, вероятно, неинтересно.
3. загрузить разработчика, который ждет обзора
Установите четкую политику в отношении того, должен ли разработчик, представивший рецензию, переключиться на новое задание или заняться чем-то другим (например, преследовать рецензента)
Для сравнения, проверки после фиксации вряд ли нуждаются в явной политике (так как естественно переходить к следующей задаче после того, как вы зафиксировали код и с учетом того, что срок проверки составляет неделю или две) - но поскольку вы нацеливаетесь на проверки перед фиксацией, это, вероятно, не интересно.