stringtranslate.com

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

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

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

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

Слияние

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

Мотивы ветвления

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

Отделение развития

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

Некоторые системы контроля версий имеют специальный жаргон для основной ветки разработки. Например, в CVS она называется «MAIN». Git по умолчанию использует «master», хотя GitHub [4] [5] и GitLab перешли на «main» после убийства Джорджа Флойда . Более общий термин — «ствол».

Теневые или волшебные ветки

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

Распределенный контроль версий

Репозиторий клонов

При распределенном контроле версий весь репозиторий с ветвями можно скопировать и работать над ним дальше. Monotone (mtn), Mercurial (hg) и git называют это «клоном»; Базар называет это «филиалом». [ нужна цитата ]

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

Смотрите также

Рекомендации

  1. ^ Берчук, Стив; Эпплтон, Брэд (2003). Шаблоны управления конфигурацией программного обеспечения: эффективная командная работа, практическая интеграция. Аддисон-Уэсли . ISBN 0-20174117-2. Проверено 24 мая 2007 г.
  2. ^ Эпплтон, Брэд; Берчук, Стивен; Кабрера, Ральф; Оренштейн, Роберт (08 февраля 1998 г.). «Потоковые линии: шаблоны ветвления для параллельной разработки программного обеспечения» ( PDF ) . Склон холма . Проверено 12 августа 2009 г.
  3. ^ Бэйли, Дерик (15 июля 2009 г.). «Часть 1: Почему». Управление версиями для каждой функции . Лос-техники . Проверено 12 августа 2009 г.
  4. ^ Уоллен, Джек (22 сентября 2020 г.). «GitHub заменит master на main, начиная с октября: что разработчикам нужно делать сейчас». Техреспублика . Проверено 24 апреля 2022 г.
  5. ^ Хайнце, Кэролайн (24 ноября 2020 г.). «Почему GitHub переименовал свою главную ветку в главную». Серверная сторона . Проверено 24 апреля 2022 г.