Ветвление (контроль версий)


Ветвление в управлении версиями и управлении конфигурацией программного обеспечения — это дублирование объекта, находящегося под контролем версий (например, файла исходного кода или дерева каталогов ). После этого каждый объект может быть изменен отдельно и параллельно, так что объекты станут другими. В этом контексте объекты называются ветвями . Пользователи системы контроля версий могут переходить в любую ветку.

Ветви также известны как деревья , потоки или кодовые линии . Исходную ветвь иногда называют родительской ветвью , восходящей ветвью (или просто восходящей ветвью , особенно если ветви поддерживаются разными организациями или отдельными лицами) или резервным потоком .

Дочерние ветки — это ветки, у которых есть родитель; ветвь без родителя называется магистралью или основной линией . [1] Ствол также иногда вольно называют HEAD, но правильно заголовок относится не к ветке, а к самой последней фиксации в данной ветке, и и ствол, и каждая именованная ветвь имеют свою собственную голову. Ствол обычно предназначен для того, чтобы быть основой проекта, на котором продолжается разработка. Если разработчики работают исключительно над стволом, он всегда содержит самые последние передовыеверсия проекта, но поэтому может быть и самой нестабильной версией. Другой подход состоит в том, чтобы отделить ветку от ствола, внедрить изменения в эту ветку и объединить изменения обратно в ствол, когда ветка окажется стабильной и работоспособной. В зависимости от режима разработки и политики фиксации ствол может содержать самую стабильную, наименее стабильную или промежуточную версию. Другие термины для магистрали включают базовую линию, основную линию и мастер, хотя в некоторых случаях они используются в схожих, но разных смыслах - см . Управление версиями § Общая терминология .. Часто основная работа разработчиков выполняется в стволе, а стабильные версии разветвляются, а случайные исправления ошибок объединяются из ответвлений в ствол. Когда разработка будущих версий выполняется в немагистральных ветвях, это обычно делается для проектов, которые не меняются часто, или где ожидается, что разработка изменения займет много времени, пока оно не будет готово для включения в магистраль.

В некоторых распределенных системах контроля версий , таких как Darcs , нет различия между репозиториями и ветвями; в этих системах получение копии репозитория эквивалентно ветвлению.

Ветвление также обычно подразумевает возможность последующего слияния или интеграции изменений обратно в родительскую ветку. Часто изменения сливаются обратно в основную ветку, даже если это не родительская ветка. Филиал, не предназначенный для слияния (например, из-за того, что он был повторно лицензирован под несовместимой лицензией третьей стороной или пытается служить другой цели), обычно называется ответвлением .

Филиалы позволяют параллельно разрабатывать части программного обеспечения. [2] Крупные проекты требуют выполнения многих ролей, включая разработчиков, менеджеров по сборке и специалистов по обеспечению качества . Кроме того, может потребоваться поддержка нескольких выпусков на разных платформах операционных систем. Ветки позволяют участникам изолировать изменения без дестабилизации кодовой базы, например, исправления ошибок, новые функции , [3] и интеграцию версий . Эти изменения могут быть позже объединены (повторно синхронизированы) после тестирования.