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