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

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

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

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

Настройка нового ветвь по умолчанию

Для новых изменений или изменения main линии разработки в репозитории можно использовать ветвь, отличной 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 для всех конвейеров. Designer конвейеры можно редактировать в Интернете. Конвейеры 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:
    - main
    - master
 
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. Затем конвейер зеркального отображения должен выполнить зеркальное отображение фиксации слияния в старом значении по умолчанию.