Назначение главной ветви при ветвлении по правилу - PullRequest
2 голосов
/ 08 апреля 2019

Из статьи Управление исходным кодом выполнено правильно :

С помощью кнопки «Создать ветку» всего одним щелчком мыши, есть множество способовнеправильно ветвить вашу кодовую базу.Но есть только две правильные стратегии - ветвление по правилу и ветвление по исключению - и обе они связаны с изоляцией изменений в выпусках.Из-за этого ветвь всегда должна идентифицироваться по соответствующему номеру выпуска.

Причина этого проста: есть только один транк (mainline, root, parent или как вы хотите его назвать), икод под этим стволом - либо то, что находится в производстве сейчас (последний развернутый выпуск), либо то, что будет в производстве позже (следующий запланированный выпуск).А это означает, что вы либо всегда разветвляетесь, либо иногда разветвляетесь.

  • Разветвление по исключению стратегия:

Branching by exception strategy

  • Ветвление по правилу Стратегия:

Branching by rule

Когдавам нужно поддерживать несколько версий выпуска программного продукта параллельно (что является обычным явлением, если у вас нет модели доставки программного обеспечения как услуги), стратегия ветвления по правилам представляется наиболее подходящей *.Но в этой ситуации, если вы используете непрерывное развертывание всех тегов каждой ветви выпуска в выделенной среде (например, вы автоматически развертываете все теги 2.2.x в среде 2.2 и все теги 2.3.x в среде 2.3)все теги каждой ветви выпуска также будут автоматически объединены с основной веткой, поскольку предполагается, что основная ветвь отражает то, что находится в производстве.Это вызовет конфликты слияния, если теги разных ветвей выпуска чередуются во времени (например, в приведенной выше диаграмме ветвления эта последовательность тегов будет объединена с главной веткой, если используется непрерывное развертывание: 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.2, 2.2.4, 2.3.3, 2.2.5 и т. Д .; но поскольку непрерывное развертывание не используется, развертывается только последний тег каждой ветки выпуска и, следовательно, автоматически объединяютсяв основную ветвь, поэтому такой проблемы нет).

Итак, при использовании стратегии ветвления по правилу, какова цель использования основной ветки? Мне кажется, чтоОсновная ветвь имеет смысл только для программных продуктов, которые имеют одну версию выпуска за раз и исключительно больше, то есть при использовании стратегии ветвления по исключениям.


* Хранилище Githubинтерпретатор CPython является примером использования стратегии ветвления по правилам.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Какова цель использования ветки master?

В Git master является условной веткой по умолчанию, которая извлекается после клона (вы можете изменитьчто, но здесь, давайте предположим, что удаленное хранилище имеет «master» в качестве ветви по умолчанию)

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

1 голос
/ 08 апреля 2019

На этот вопрос нет универсально верного ответа, потому что он основан на субъективной статье, которая почти десять лет назад предложила использовать только две стратегии ветвления. Обратите внимание, что в то время SVN был еще королем, и создание там было дорогостоящим - поэтому не многие люди думали об использовании большого количества веток только потому, что они этого хотели (но некоторые это делали).

С тех пор многое изменилось, и многие команды приняли другие стратегии - например, git flow модель ветвления, которая де-факто стала одним из отраслевых стандартов. В этой стратегии все разветвления происходят из ветви development, тогда как master используется просто как стабильная резервная копия.

В любом случае, это ^^^ просто для того, чтобы объяснить, что упомянутая статья не закон, а скорее авторское видение. Статья может быть неправильной или неполной (ну, она неполная, потому что она не включает git flow, что было предложено годом ранее). Если вы видите там проблему - это действительно может быть проблема, а не ваше отсутствие понимания.

Отвечая на вопрос:

При использовании ветвления по стратегии правила, какова цель использования основной ветки? Мне кажется, что основная ветвь имеет смысл только для программных продуктов, которые имеют одну версию выпуска ...

Да, использование master branch активно наиболее целесообразно для продуктов с одной версией выпуска. Действительно, «программное обеспечение как услуга» (скажем, «веб-сайт») - лучшая модель для этого. Эта стратегия ветвления нуждается в улучшении, если в вашей модели продукта могут быть разные клиенты на разных версиях программного обеспечения одновременно. В этом случае вам нужно будет придумать более сложную схему.

Однако, даже с параллельными версиями модель master по-прежнему необходима. Это стабильная ветка со всеми функциями, которые вы когда-либо разрабатывали. Его использование редко , но важно - оно служит отправной точкой для новой версии, когда менеджеры по продукту решают начать разработку нового набора функций. И это также причина, по которой ваша стратегия должна требовать регулярного слияния выпущенных веток с master - предположительно после каждого выпуска. Вопреки картинке, слияние с master не закончило бы жизнь этих ветвей. Скорее было бы синхронизацией улучшений, чтобы master оставался актуальным и продолжал быть подходящим источником для дальнейших итераций разработки.

...