Вы говорите о рекламной модели . В статье Perforce освещаются проблемы, связанные с ней - информирование о смене ролей строк кода и перемещении работы между филиалами.
Расширение моих взглядов на перечисленные проблемы:
1) Изменение политики строк кода:
Каждая строка кода имеет политику, независимо от того, записана она и формализована, или полностью скрыта в голове разработчика. Это определяет, например:
- кому разрешено фиксировать код
линия
- сколько требуется тестирования
(например, должны ли пройти модульные тесты,
регрессионные тесты, полный тест системы)
- сколько людей должно пройти проверку кода
изменения
- что это за изменения
разрешено
При использовании магистрального подхода политики остаются фиксированными, поэтому их легче записывать, что облегчает их связь (что более важно в большой команде).
например. Ствол:
- любой разработчик может совершить
- любое изменение
- модульные испытания должны пройти
- проверка кода после коммита
Версия ветки:
- только разработчик обслуживания
- только исправление ошибки
- модульный тест + регрессионные тесты
- проверка кода 2 другими разработчиками перед коммитом
Метка ветки:
- нет коммитов после создания
Частная ветка разработчика:
- Только разработчик регистрирует
- Любые изменения
- Тестирование необходимо только до слияния с магистралью
- Проверка кода перед слиянием с транком
Если у вас есть модель продвижения, то у вас есть одна политика во время основной разработки, а затем нужно сообщить всем, когда вы изменяете политику во время подготовки к выпуску, затем другую политику (для строки кода) после освобождения строки. 1065 *
Модель продвижения проста в использовании, она напрямую связана с неуправляемым способом работы. Но больно, когда вы начинаете собирать большие команды.
Если вы посмотрите на разработку ядра Linux, вы увидите разницу между моделью Promotional и моделью Trunk: дерево Линуса является Promotional - оно проходит циклы между окном слияния и периодом rc / стабилизации. Но Linux-next и -mm выросли, чтобы получить более магистральную линию.
Распределенные SCM / VCS в любом случае несколько отличаются, политики не должны распространяться среди всех разработчиков, потому что у каждой разработки есть свои собственные деревья, и они вносят изменения, когда хотят.
Проекты с открытым исходным кодом страдают от проблемы, заключающейся в том, что они не могут заставить людей выполнять тяжелую работу по стабилизации релиза после ветвления из ствола. Поэтому модель продвижения более важна как способ заставить усилия по стабилизации, чем просто работать над функциями.
2) Переезд:
Разработчик может работать над функцией, когда политика для строки, над которой он работает, изменяется только на исправления ошибок, теперь ему нужно переключить свою рабочую копию на другую строку кода.
Это может быть от простого до чрезвычайно сложного в зависимости от используемой системы SCM.
Эта проблема не возникает, если разработчик работает на транке, поскольку их работа всегда идет на транк. Если разработчик находится в частной или функциональной ветви, то его работа будет зависеть только от транка (и выпуска).
Если функция уже зарегистрирована, но задерживается по сравнению с версией, в которой она находится в данный момент, вам необходимо решить, как ее удалить. Эта проблема все еще существует с моделью ствола, но может быть немного легче решить - собирать вещи из ствола для выпуска.
Именно здесь помогают ветки функций, но они требуют затрат на интеграцию.