stringtranslate.com

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

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

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

Ствол

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

Слияние

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

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

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

Развитие отрасли

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

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

Тень или магические ветви

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

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

Клоны репозитория

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

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

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

Ссылки

  1. ^ Берчук, Стив; Эпплтон, Брэд (2003). Модели управления конфигурацией программного обеспечения: эффективная командная работа, практическая интеграция. Addison-Wesley . ISBN 0-20174117-2. Получено 24.05.2007 .
  2. ^ Appleton, Brad; Berczuk, Stephen; Cabrera, Ralph; Orenstein, Robert (1998-02-08). "Streamed Lines: Branching Patterns for Parallel Software Development" ( PDF ) . Hillside . Получено 2009-08-12 .
  3. ^ Бейли, Дерик (2009-07-15). "Часть 1: Почему". Branch-Per-Feature Source Control . Los techies . Получено 2009-08-12 .
  4. ^ Уоллен, Джек (22.09.2020). «GitHub заменит master на main в октябре: что разработчикам нужно сделать сейчас». TechRepublic . Получено 24.04.2022 .
  5. ^ Хайнце, Кэролин (24.11.2020). «Почему GitHub переименовал свою главную ветку в основную». TheServerSide . Получено 24.04.2022 .