Ändern des Standardbranches

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Der Standardzweig ist die erste Verzweigung, die Git auf einem frischen Klon auscheckt. Außerdem zielen Pullanforderungen standardmäßig auf diesen Zweig ab.

Wir durchlaufen den Prozess zum Ändern des Standardzweigs. Wir decken auch andere Dinge ab, 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.

Festlegen eines neuen Standardzweigs

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

Um den Standardzweig Ihres Repo für das Zusammenführen neuer Pullanforderungen zu ändern, benötigen Sie mindestens zwei Zweige. Wenn nur eine Verzweigung vorhanden ist, ist es bereits der Standard. Sie müssen einen zweiten Zweig erstellen, um den Standard zu ändern.

Hinweis

Diese Prozedur erfordert möglicherweise, dass Sie Git-Repositoryberechtigungen festlegen.

  1. Wählen Sie unter Dem Projekt-Repodie Option "Zweige" aus.

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

    Screenshot that shows Set default branch.

  3. Nachdem Sie den neuen Standardzweig festgelegt haben, können Sie die vorherige Standardeinstellung löschen, wenn Sie möchten.

  1. Wählen Sie die Schaltfläche "Einstellungen" in der unteren linken Ecke ihres Projekts aus, um die Projektverwaltungsseite zu öffnen.

    Open the administrative area of the web portal for your project

  2. Wählen Sie Repositorys aus.

  3. Wählen Sie Ihr Git-Repository aus. Ihre Zweigstellen werden unter Ihrem Repo angezeigt.

  4. Wählen Sie den ... neben dem Branch aus, den Sie als Standard festlegen möchten, und wählen Sie dann "Als Standardzweig festlegen" aus.

    Set a default branch for a Git repo

  5. Nachdem Sie den neuen Standardzweig festgelegt haben, können Sie die vorherige löschen, wenn Sie möchten.

  1. Wählen Sie die Schaltfläche "Einstellungen" in Ihrem Projekt aus, um die Projektverwaltungsseite zu öffnen.

    Open the administrative area of the web portal for your project

  2. Wählen Sie "Versionssteuerung" aus.

  3. Wählen Sie Ihr Git-Repository aus. Ihre Zweigstellen werden unter Ihrem Repo angezeigt.

  4. Wählen Sie den ... neben dem Branch aus, den Sie als Standard festlegen möchten, und wählen Sie dann "Als Standardzweig festlegen" aus.

    Set a default branch for a Git repo

  5. Nachdem Sie den neuen Standardzweig festgelegt haben, können Sie die vorherige löschen, wenn Sie möchten.

Es gibt weitere 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 Zweignamen auszuwählen. Gleichzeitig haben Azure Repos, GitHub und andere Git-Hostinganbieter die Möglichkeit hinzugefügt, einen anderen Anfangszweignamen auszuwählen. Zuvor wurde der Standardzweig fast immer benannt master. Der beliebteste alternative Name ist main. Weniger häufige Optionen umfassen trunk und development. Abgesehen von Einschränkungen der Tools, die Sie verwenden oder teamieren, funktionieren alle gültigen Zweignamen.

Aktualisieren anderer Systeme

Wenn Sie sich in einen anderen Standardzweig ändern, können andere Teile Ihres Workflows betroffen sein. 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-Anforderungen

Retargetieren Sie jede geöffnete Pullanforderung auf den neuen Standardzweig.

Vorhandene Klonen

Neue Klonen des Repositorys erhalten den neuen Standardzweig. Nach dem Wechsel sollte jeder mit einem vorhandenen Klon ausgeführt git remote set-head origin -a werden (durch origin den Namen des Remotes ersetzen, wenn es sich um etwas anderes handelt), um die Ansicht des Standardzweigs des Remotes zu aktualisieren. Zukünftige neue Zweigstellen sollten auf dem neuen Standard basieren.

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

Wenn eine URL eine Abfragezeichenfolge versionfür z &version=GBmybranchname. B. enthält, sollte diese URL aktualisiert werden. Glücklicherweise verfügen die meisten Links zu den Standardzweigen nicht über ein version Segment und können wie folgt links sein. Wenn Sie auch den alten Standardzweig löschen, wird versucht, dazu zu navigieren, trotzdem zum neuen Standard.

Temporäre Spiegelung

Ein Git-Repository kann nur über einen Standardzweig verfügen. Sie können jedoch für eine Zeit die Ad-hoc-Spiegelung zwischen Ihrem alten Standard und Ihrem neuen Standard einrichten. Wenn Ihre Endbenutzer auf diese Weise weiterhin auf den alten Standard pushen, müssen sie die Arbeit am Ende nicht wiederholen. Wir verwenden Azure Pipelines, um diese temporäre Spiegelung einzurichten.

Hinweis

In diesem Abschnitt wird die Sprache verwendet, die nicht mit der Perspektive von Microsoft übereinstimmt. Insbesondere wird das Wort master an mehreren Stellen im Einklang mit der Verwendung in Git angezeigt. Der Zweck dieses Themas besteht darin, zu erläutern, wie Sie zu einer inklusiveren Sprache wechseln, z main. B. . Alle Erwähnungen master zu vermeiden, würde die Wegbeschreibungen viel schwieriger zu verstehen machen.

Die Spiegelpipeline

Hinweis

Diese Anweisungen sind nicht narrensicher, und Ihr Repository-Setup erfordert möglicherweise zusätzliche Änderungen wie die Lockerung von Berechtigungen und Richtlinien.

Warnung

Wenn die alten und neuen Standardzweige beide aktualisiert werden, bevor diese Pipeline ausgeführt wird, kann die Pipeline die Änderungen nicht spiegeln. Jemand muss den alten Standardzweig manuell in den neuen Standardzweig zusammenführen , um es automatisch wieder auszuführen.

  1. Aktualisieren Sie sie für alle vorhandenen CI-Builds, um sie anstelle der alten für Ihren neuen Standardzweig auszulösen.

  2. Gewähren Sie der Berechtigung "Build identity Contribute " für Ihr Repo. Navigieren Sie zu Project Einstellungen>Repositories>(Ihre Repo)->Berechtigungen. Es kann bis zu zwei Identitäten geben, eine für den Projektsammlungs-Builddienst und den anderen für den Projektbuilddienst. Stellen Sie sicher, dass die Berechtigung "Mitwirken" " Zulassen" sagt.

  1. Wenn der neue Standardzweig über Verzweigungsrichtlinien verfügt, gewähren Sie auch die Buildidentität den Richtlinien für die Umgehung, wenn Sie die Berechtigung pushen . Diese Berechtigung ist ein Sicherheitsrisiko, da ein böswilliger Benutzer eine Pipeline zum Sneakcode in ein Repository in Ihrem Projekt erstellen könnte. Wenn die Spiegelung nicht mehr benötigt wird, müssen Sie diese Berechtigung entfernen.

  2. Fügen Sie ihrem Repository in der neuen Standardzweigung eine neue Datei mirror.yml hinzu. In diesem Beispiel wird angenommen, dass der alte Standardzweig master war und der neue mainist . Aktualisieren Sie die ausgelösten Verzweigungen und die git push Zeile, wenn Ihre Verzweigungsnamen unterschiedlich sind.

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. Erstellen Sie eine neue Pipeline, indem Sie "Azure Repos Git" und "Vorhandene Azure Pipelines YAML-Datei" im Assistenten auswählen. Wählen Sie die Datei aus, die mirror.yml 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 an oder an mastermain. Sie werden synchronisiert, solange neue Commits nicht gleichzeitig auf beiden Zweigen ankommen.

Wenn die Pipeline mit einer Fehlermeldung wie "Updates abgelehnt wurde, weil eine Push-Verzweigungsspitze hinter der Remotefunktion liegt", muss jemand den alten Zweig mit der Hand zusammenführen.

  1. Klonen Sie das Repository und cd in ihr Verzeichnis.
  2. Schauen Sie sich den neuen Standardzweig mit (wenn main Es sich um git checkout main Ihren neuen Standardzweig handelt).
  3. Erstellen Sie einen neuen Zweig für die Integration der beiden Zweige mit git checkout -b integrate.
  4. Zusammenführen des alten Standardzweigs mit (wenn master es sich um git merge master Ihren alten Standardzweig handelt).
  5. Drücken Sie den neuen Zweig, öffnen und abschließen Sie dann eine Pullanforderung in den neuen Standardzweig.
  6. Die Spiegelungspipeline sollte dann darauf achten, den Merge-Commit zurück auf den alten Standard zu spiegeln.