Изменение ветви по умолчанию

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Ветвь по умолчанию — это первая ветвь, которую Git извлекает на свежий клон. Кроме того, запросы на вытягивание нацелены на эту ветвь по умолчанию.

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

Установка новой ветви по умолчанию

Вы можете использовать ветвь, отличные от main новых изменений, или изменить основную строку разработки в репозитории. Чтобы изменить имя ветви по умолчанию для новых репозиториев, ознакомьтесь со всеми параметрами и политиками репозиториев.

Чтобы изменить ветвь репозитория по умолчанию для слияния новых запросов на вытягивание, вам потребуется по крайней мере две ветви. Если есть только одна ветвь, она уже используется по умолчанию. Чтобы изменить значение по умолчанию, необходимо создать вторую ветвь.

Примечание

Для выполнения этой процедуры может потребоваться задать разрешения репозитория Git.

  1. В репозитории проекта выберите "Ветви".

  2. На странице "Ветви" выберите "Дополнительные параметры " рядом с нужной новой ветвью по умолчанию и выберите "Задать как ветвь по умолчанию".

    Снимок экрана, на котором показана ветвь по умолчанию.

  3. После установки новой ветви по умолчанию можно удалить предыдущее значение по умолчанию, если вы хотите.

  1. Нажмите кнопку "Параметры" в левом нижнем углу проекта, чтобы открыть страницу администрирования проекта.

    Открытие административной области веб-портала для проекта

  2. Выберите Репозитории.

  3. Выберите репозиторий Git. Ветви отображаются в репозитории.

  4. Выберите ... рядом с ветвью, которую вы хотите задать по умолчанию, а затем выберите "Задать как ветвь по умолчанию".

    Установка ветви по умолчанию для репозитория Git

  5. Установив новую ветвь по умолчанию, вы можете удалить предыдущую, если хотите.

  1. Нажмите кнопку "Параметры" в проекте, чтобы открыть страницу администрирования проекта.

    Открытие административной области веб-портала для проекта

  2. Выберите "Управление версиями".

  3. Выберите репозиторий Git. Ветви отображаются в репозитории.

  4. Выберите ... рядом с ветвью, которую вы хотите задать по умолчанию, а затем выберите "Задать как ветвь по умолчанию".

    Установка ветви по умолчанию для репозитория Git

  5. Установив новую ветвь по умолчанию, вы можете удалить предыдущую, если хотите.

Перед внесением этого изменения следует рассмотреть другие аспекты.

Выбор имени

В Git 2.28 добавлена возможность выбора имени начальной ветви. В то же время Azure Repos, GitHub и другие поставщики услуг размещения Git добавили возможность выбрать другое имя исходной ветви. Ранее ветвь по умолчанию почти всегда называлась master. Наиболее популярным альтернативным именем является main. Менее распространенные варианты включают trunk и development. Отсутствуют какие-либо ограничения в используемых средствах или команде, все допустимые имена ветвей будут работать.

Обновление других систем

При переходе на другую ветвь по умолчанию могут повлиять другие части рабочего процесса. Эти части необходимо учитывать при планировании изменения.

Pipelines

Обновите триггеры CI для всех конвейеров. Конвейеры конструктора можно редактировать в Интернете. Конвейеры YAML можно изменять в соответствующих репозиториях.

Запросы на вытягивание в тестовом режиме

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

Существующие клоны

Новые клоны репозитория получат новую ветвь по умолчанию. После переключения все, у кого есть существующий клон, должны выполняться git remote set-head origin -a (заменяя origin его именем удаленного удаленного сервера, если это что-то другое), чтобы обновить представление ветви по умолчанию удаленного сервера. Будущие новые ветви должны основываться на новом значении по умолчанию.

Необходимо обновить некоторые закладки, документы и другие файлы, не относящиеся к коду, указывающие на файлы в Azure Repos. Имя ветви для файла или каталога может отображаться в URL-адресе.

Если URL-адрес содержит строку запроса , versionнапример &version=GBmybranchname, этот URL-адрес следует обновить. К счастью, большинство ссылок на ветвь по умолчанию не version будет иметь сегмент и может быть оставлен как есть. Кроме того, после удаления старой ветви по умолчанию все равно будет предпринята попытка перейти к новой ветви по умолчанию.

Временное зеркальное отображение

Репозиторий Git может иметь только одну ветвь по умолчанию. Однако в течение некоторого времени вы можете настроить нерегламентированное зеркальное отображение между старым по умолчанию и новым значением по умолчанию. Таким образом, если конечные пользователи продолжают отправлять старые значения по умолчанию, им не придется повторять работу в конце. Мы будем использовать Azure Pipelines для настройки этого временного зеркального отображения.

Примечание

В этом разделе используется язык, который не соответствует перспективам Майкрософт. В частности, слово master отображается в нескольких местах в соответствии с тем, как оно использовалось в Git. Цель этого раздела — объяснить, как перейти на более инклюзивный язык, например main. Избегая всех упоминаний, master будет сделать направления гораздо труднее понять.

Конвейер зеркального отображения

Примечание

Эти инструкции не являются обманутыми, и для настройки репозитория могут потребоваться дополнительные изменения, такие как ослабление разрешений и политик.

Предупреждение

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

  1. Для всех существующих сборок CI обновите их, чтобы активировать новую ветвь по умолчанию вместо старой.

  2. Предоставьте удостоверению сборки разрешение "Участие" в репозитории. Перейдите крепозиториям>>параметров проекта(репозиторию)>Разрешения. Может существовать до двух удостоверений: один для службы сборки коллекции проектов, а другой — для службы сборки проекта. Убедитесь, что в разрешении "Участие" указано "Разрешить".

  1. Если новая ветвь по умолчанию имеет политики ветвей, предоставьте удостоверение сборки политикам обхода при отправке разрешений. Это разрешение является угрозой безопасности, так как злоумышленник может создать конвейер для создания кода для кроссовки кода в репозиторий в проекте. Если зеркальное отображение больше не требуется, обязательно удалите это разрешение.

  2. Добавьте новый файл mirror.yml в репозиторий в новой ветви по умолчанию. В этом примере предполагается, что старая ветвь по умолчанию была master , а новая — main. Обновите триггерные ветви и git push строку, если имена ветвей отличаются.

trigger:
  branches:
    include:
    - master
    - main
 
pool: { vmImage: ubuntu-latest }
steps:
- checkout: self
  persistCredentials: true
- script: |
    git checkout $(Build.SourceBranchName)
    git push origin HEAD:master HEAD:main
  displayName: Mirror old and new default branches
  1. Создайте конвейер, выбрав в мастере пункты "Azure Repos Git" и "Существующий YAML-файл Azure Pipelines". Выберите файл, mirror.yml добавленный на предыдущем шаге. Сохраните и запустите конвейер.

Устранение неполадок

Этот конвейер будет выполняться каждый раз master при отправке или отправке main. Они будут синхронизированы, пока новые фиксации не поступают в обе ветви одновременно.

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

  1. Клонируйте репозиторий и cd в каталог.
  2. Ознакомьтесь с git checkout main новой ветвью по умолчанию (если main это новая ветвь по умолчанию).
  3. Создайте новую ветвь для интеграции двух ветвей с git checkout -b integrate.
  4. Объедините старую ветвь по умолчанию с git merge master (если master это старая ветвь по умолчанию).
  5. Отправьте новую ветвь, а затем откройте и завершите запрос на вытягивание в новую ветвь по умолчанию.
  6. Затем конвейер зеркального отображения должен заботиться о зеркальной фиксации слияния обратно в старое значение по умолчанию.