Standardzweig ändern

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Die Standardbranch ist der erste Branch, den Git bei einem neuen Klon auscheckt. Außerdem zielen Pullanforderungen standardmäßig auf diese Verzweigung ab.

Wir werden den Prozess zum Ändern des Standardbranchs durchgehen. Wir behandeln auch andere Dinge, die Sie berücksichtigen und aktualisieren müssen, wenn Sie diese Änderung vornehmen. Schließlich sehen wir uns ein Tool zur Beschleunigung des Übergangs an.

Voraussetzungen

Kategorie Anforderungen
Projektzugriff Mitglied eines Projekts.
Erlaubnisse - Code in privaten Projekten anzeigen: Mindestens einfacher Zugriff.
- Klonen oder Mitwirken an Code in privaten Projekten: Mitglied der Sicherheitsgruppe "Mitwirkende" oder entsprechende Berechtigungen im Projekt.
- Berechtigungen für Branch oder Repository festlegen: Berechtigungen verwalten für den Branch oder das Repository.
- Verzweigungsrichtlinien festlegen, Statusprüfungen konfigurieren oder die Standardverzweigung ändern: Berechtigung Richtlinien bearbeiten für das Repository oder die Verzweigung oder Mitgliedschaft in der Sicherheitsgruppe Projektadministratoren.
- Ein Repository importieren: Mitglied der Sicherheitsgruppe Projektadministratoren oder die Berechtigung Repository erstellen auf Git-Projektebene auf Zulassen festgelegt. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen.
Dienste Repos aktiviert.
Werkzeuge Wahlfrei. Verwenden Sie az repos Befehle: Azure DevOps CLI.
Kategorie Anforderungen
Projektzugriff Mitglied eines Projekts.
Erlaubnisse - Code anzeigen: Mindestens einfacher Zugriff.
- Code klonen oder dazu beitragen: Mitglied der Sicherheitsgruppe Contributors oder entsprechende Berechtigungen im Projekt.
Dienste Repos aktiviert.

Festlegen einer neuen Standardverzweigung

Sie können einen anderen Zweig als main für neue Änderungen verwenden oder Ihre Hauptentwicklungslinie in Ihrem Repository ändern. Informationen zum Ändern des Standardverzweigungsnamens für neue Repositorys finden Sie unter "Alle Repositoryeinstellungen und -richtlinien".

Zum Ändern der Standardverzweigung Ihres Repositorys zum Zusammenführen neuer Pullanforderungen benötigen Sie mindestens zwei Verzweigungen. Wenn nur ein Branch vorhanden ist, ist dieser bereits der Standardbranch. Sie müssen eine zweite Verzweigung erstellen, um die Standardeinstellung zu ändern.

Hinweis

Das Ändern der Standardverzweigung erfordert, dass Sie über die Berechtigung "Richtlinien bearbeiten" verfügen. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen.

  1. Wählen Sie in Ihrem Projekt-Repository die Verzweigungen aus.

  2. Wählen Sie auf der Seite "Verzweigungen " neben der gewünschten neuen Standardverzweigung weitere Optionen aus, und wählen Sie "Als Standardverzweigung festlegen" aus.

    Screenshot, das zeigt: 'Standardverzweigung festlegen'.

  3. Nachdem Sie die neue Standardverzweigung festgelegt haben, können Sie bei Bedarf den vorherigen Standardwert löschen.

Es gibt andere Aspekte, die Sie berücksichtigen sollten, bevor Sie diese Änderung vornehmen.

Wählen Sie einen Namen aus.

Git 2.28 hat die Möglichkeit hinzugefügt, einen ursprünglichen Verzweigungsnamen auszuwählen. Gleichzeitig haben Azure Repos, GitHub und andere Git-Hostinganbieter die Möglichkeit hinzugefügt, einen anderen ursprünglichen Branchnamen auszuwählen. Bisher wurde der Standard-Branch fast immer als master benannt. Der beliebteste alternative Name ist main. Weniger häufige Optionen umfassen trunk und development. Wenn keine Einschränkungen für die Tools, die Sie verwenden, oder das Team, in dem Sie arbeiten, vorliegen, funktionieren alle gültigen Branchnamen.

Aktualisieren anderer Systeme

Wenn Sie zu einer anderen Standardverzweigung wechseln, sind möglicherweise andere Teile Ihres Workflows betroffen. Sie müssen diese Teile berücksichtigen, wenn Sie eine Änderung planen.

Pipelines

Aktualisieren Sie die CI-Trigger für alle Pipelines. Designerpipelinen können im Web bearbeitet werden. YAML-Pipelines können in ihren jeweiligen Repositorys bearbeitet werden.

In-Flight Pull Requests

Retargetieren Sie jede geöffnete Pullanforderung auf die neue Standardverzweigung.

Vorhandene Klonen

Neue Klone des Repositories erhalten den neuen Standard-Branch. Nach dem Wechsel sollte jeder mit einem vorhandenen Klon git remote set-head origin -a ausführen (ersetzen Sie dabei origin durch den Namen des Remoterepositorys, wenn es sich um ein anderes handelt), um seine Ansicht des Standardbranchs des Remoterepositorys zu aktualisieren. Zukünftige neue Branches sollten auf der neuen Standardeinstellung basieren.

Einige Lesezeichen, Dokumente und andere Nicht-Codedateien, die auf Dateien in Azure Repos verweisen, müssen aktualisiert werden. Der Branchname für eine Datei oder ein Verzeichnis kann in der URL angezeigt werden.

Wenn eine URL einen Querystring für version enthält, z. B. &version=GBmybranchname, sollte diese URL aktualisiert werden. Glücklicherweise verfügen die meisten Links zur Standard-Branch nicht über ein version Segment und können wie sie sind verlassen werden. Sobald Sie die alte Standard-Branch löschen, werden alle Versuche, dorthin zu navigieren, dennoch zum neuen Standard-Branch weitergeleitet.

Temporäre Spiegelung

Ein Git-Repository kann nur einen Standardbranch haben. Sie können jedoch für einen gewissen Zeitraum Ad-hoc-Spiegelung zwischen Ihrem alten Standardbranch und dem neuen Standardbranch einrichten. Auf diese Weise müssen Ihre Endbenutzer die Arbeit nicht wiederholen, wenn sie weiterhin in den alten Standardbranch pushen. Wir verwenden Azure Pipelines , um diese temporäre Spiegelung einzurichten.

Hinweis

In diesem Abschnitt wird die Sprache verwendet, die mit der Perspektive von Microsoft in Konflikt steht. Insbesondere wird das Wort master an mehreren Stellen angezeigt, die mit der Verwendung in Git übereinstimmen. Der Zweck dieses Themas besteht darin, zu erläutern, wie Sie zu einer inklusiveren Sprache wechseln können, wie zum Beispiel main. Das vollständige Vermeiden der Erwähnung von master würde die Wegbeschreibung deutlich schwieriger verständlich machen.

Die Spiegelungspipeline

Hinweis

Diese Anweisungen sind nicht narrensicher, und Ihre Repositoryeinrichtung erfordert möglicherweise zusätzliche Änderungen, z. B. das Lockern von Berechtigungen und Richtlinien.

Warnung

Wenn sowohl die alten als auch die neuen Standardbranches aktualisiert werden, bevor diese Pipeline ausgeführt wird, kann die Pipeline die Änderungen nicht spiegeln. Jemand muss die alte Standardverzweigung manuell in die neue Standardverzweigung zusammenführen , damit sie automatisch wieder ausgeführt wird.

  1. Aktualisieren Sie für alle vorhandenen CI-Builds diese so, dass sie für Ihren neuen Standardbranch ausgelöst werden, anstatt für den alten.

  2. Erteilen Sie der Build-Identität die Berechtigung "Mitwirken" für Ihr Repository. Navigieren Sie zu Projekteinstellungen>Repositorys>(Ihr Repository)>Berechtigungen. Es können bis zu zwei Identitäten vorhanden sein: eine für den Projektsammlungs-Builddienst und die andere für den Projektbuilddienst. Stellen Sie sicher, dass die Berechtigung Beitragen: Zulassen lautet.

  1. Wenn der neue Standardbranch über Branchrichtlinien verfügt, erteilen Sie der Buildidentität außerdem die Berechtigung Richtlinien bei Pushvorgängen umgehen. Diese Berechtigung stellt ein Sicherheitsrisiko dar, da ein böswilliger Benutzer eine Pipeline erstellen könnte, um unbemerkt Code in ein Repository Ihres Projekts einzuschleusen. Stellen Sie sicher, diese Berechtigung zu entfernen, wenn die Spiegelung nicht mehr benötigt wird.

  2. Fügen Sie Ihrem Repository im neuen Standardbranch eine neue Datei mirror.yml hinzu. In diesem Beispiel wird davon ausgegangen, dass der alte Standard-Branch master war und der neue main ist. Aktualisieren Sie die auslösenden Branches und die git push Zeile, wenn Ihre Branch-Namen unterschiedlich sind.

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. Erstellen Sie eine neue Pipeline, und wählen Sie im Assistenten "Azure Repos Git" und "Vorhandene Azure Pipelines YAML-Datei" aus. Wählen Sie die mirror.yml Datei aus, die Sie im vorherigen Schritt hinzugefügt haben. Speichern Sie die Pipeline, und führen Sie sie aus.

Problembehandlung

Diese Pipeline wird jedes Mal ausgeführt, wenn ein Push in master oder in main erfolgt. Sie hält die Branches synchronisiert, solange keine neuen Commits gleichzeitig in beiden Branches eingehen.

Wenn die Pipeline mit einer Fehlermeldung wie „Updates wurden abgelehnt, weil eine gepushte Branchspitze hinter der Remoteversion zurückliegt“ fehlschlägt, muss jemand den alten Branch manuell in den neuen Branch zusammenführen.

  1. Klonen Sie das Repository und cd in das zugehörige Verzeichnis.
  2. Sehen Sie sich den neuen Standardbranch mit git checkout main an (falls main Ihr neuer Standardbranch ist).
  3. Erstellen Sie einen neuen Branch zum Integrieren der zwei Branches in git checkout -b integrate.
  4. Zusammenführen der alten Standardverzweigung mit git merge master (wenn master Ihre alte Standardverzweigung ist).
  5. Pushen Sie den neuen Branch, öffnen Sie einen Pull Request in den neuen Standardbranch, und schließen Sie diesen ab.
  6. Die Spiegelungspipeline sollte dann dafür sorgen, dass der Mergecommit wieder in den alten Standardbranch gespiegelt wird.