Zmienianie gałęzi domyślnej
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Gałąź domyślna to pierwsza gałąź, którą usługa Git wyewidencjonuje na nowym klonie. Ponadto żądania ściągnięcia domyślnie kierują się na tę gałąź.
Omówimy proces zmiany gałęzi domyślnej. Omówimy również inne kwestie, które należy wziąć pod uwagę i zaktualizować podczas wprowadzania tej zmiany. Na koniec przyjrzymy się narzędziu do złagodzenia przejścia.
Wymagania wstępne
Kategoria | Wymagania |
---|---|
Dostęp do projektu | Członek projektu . |
uprawnienia | — Wyświetlanie kodu w projektach prywatnych: co najmniej dostęp na poziomie Podstawowym. — Klonowanie lub współtworzenie kodu w prywatnych projektach: członkostwo w grupie zabezpieczeń Współautorzy lub odpowiednie uprawnienia w projekcie. — Ustaw uprawnienia gałęzi lub repozytorium: Zarządzanie uprawnieniami dla gałęzi lub repozytorium. - Zmień gałąź domyślną: Edytuj zasady uprawnienia dla repozytorium. — Zaimportuj repozytorium: członek grupy zabezpieczeń Administratorzy projektów lub uprawnienia na poziomie projektu Git Utwórz repozytorium ustawione na Dozwolone. Aby uzyskać więcej informacji, zobacz Ustawianie uprawnień repozytorium Git. |
Usługi | Repozytoria włączone. |
Narzędzia | Opcjonalny. Użyj poleceń az repos: Azure DevOps CLI. |
Uwaga
W projektach publicznych użytkownicy z dostępem Stakeholder mają pełny dostęp do usługi Azure Repos, w tym wyświetlanie, klonowanie i współtworzenie kodu.
Kategoria | Wymagania |
---|---|
Dostęp do projektu | Członek projektu . |
uprawnienia | — Wyświetl kod: przynajmniej podstawowy dostęp. — Klonowanie lub współtworzenie kodu: członek grupy zabezpieczeń Współtwórców lub posiadający odpowiednie uprawnienia w projekcie. |
Usługi | Repozytoria włączone. |
Ustawianie nowej gałęzi domyślnej
Możesz użyć gałęzi innej niż main
dla nowych zmian lub zmienić główny wiersz programowania w repozytorium. Aby zmienić domyślną nazwę gałęzi dla nowych repozytoriów, zobacz Ustawienia i zasady wszystkich repozytoriów.
Aby zmienić domyślną gałąź repozytorium na potrzeby scalania nowych żądań ściągnięcia, potrzebujesz co najmniej dwóch gałęzi. Jeśli istnieje tylko jedna gałąź, jest już domyślna. Aby zmienić wartość domyślną, musisz utworzyć drugą gałąź.
Uwaga
Zmiana gałęzi domyślnej wymaga posiadania uprawnień do edytowania zasad (). Aby uzyskać więcej informacji, zobacz Ustawianie uprawnień repozytorium Git.
Przed wprowadzeniem tej zmiany należy wziąć pod uwagę inne aspekty.
Wybierz nazwę
git 2.28 dodano możliwość wybierania początkowej nazwy gałęzi.
Jednocześnie usługa Azure Repos, GitHub i inni dostawcy hostingu Git dodali możliwość wyboru innej początkowej nazwy gałęzi.
Wcześniej gałąź domyślna miała prawie zawsze nazwę master
.
Najpopularniejszą alternatywną nazwą jest main
.
Mniej typowe opcje obejmują trunk
i development
.
Jeśli nie ma żadnych ograniczeń w narzędziach, których używasz, ani w zespole, w którym pracujesz, każda prawidłowa nazwa gałęzi będzie działać.
Aktualizowanie innych systemów
Zmiana na inną gałąź domyślną może mieć wpływ na inne części przepływu pracy. Podczas planowania zmiany należy wziąć pod uwagę te części.
Rurociągi
Zaktualizuj wyzwalacze CI dla wszystkich potoków. Procesy projektowe można edytować w Internecie. Potoki YAML można edytować w odpowiednich repozytoriach.
Żądania ściągnięcia w locie
Przekieruj każdy otwarty pull request do nowej gałęzi domyślnej.
Istniejące klony
Nowe klony repozytorium otrzymają nową gałąź domyślną.
Po przełączeniu wszyscy z istniejącym klonem powinni uruchomić git remote set-head origin -a
(zastępując origin
nazwą zdalną, jeśli jest to coś innego), aby zaktualizować widok gałęzi domyślnej zdalnego.
Przyszłe nowe gałęzie powinny być oparte na nowej wartości domyślnej.
Łącza przychodzące
Niektóre zakładki, dokumenty i inne pliki inne niż kod, które wskazują pliki w usłudze Azure Repos, muszą zostać zaktualizowane. Nazwa gałęzi pliku lub katalogu może być wyświetlana w adresie URL.
Jeśli adres URL zawiera ciąg zapytania dla version
, na przykład &version=GBmybranchname
, należy zaktualizować ten adres URL.
Na szczęście większość linków do gałęzi domyślnej nie będzie miała segmentu version
i może pozostać as-is.
Ponadto, po usunięciu starej gałęzi domyślnej, próby przejścia do niej zostaną automatycznie przekierowane do nowej domyślnej gałęzi.
Tymczasowe lustrzanie
Repozytorium Git może mieć tylko jedną gałąź domyślną. Przez pewien czas można skonfigurować ad hoc synchronizację między starą wartością domyślną a nową wartością domyślną. W ten sposób, jeśli użytkownicy końcowi będą nadal przełączać się na starą wartość domyślną, nie będą musieli wykonywać pracy ponownie z ich strony. Użyjemy usługi Azure Pipelines do skonfigurowania tego tymczasowego mirroringu.
Uwaga
W tej sekcji jest używany język, który jest sprzeczny z perspektywą firmy Microsoft.
W szczególności słowo master
pojawia się w kilku miejscach spójnych ze sposobem jego użycia w usłudze Git.
Celem tego tematu jest wyjaśnienie, jak przełączyć się na bardziej inkluzywny język, na przykład main
.
Unikanie wszystkich wspomnień o master
utrudniłoby zrozumienie wskazówek.
Potok dublowania
Uwaga
Te instrukcje nie są niezawodne, a konfiguracja repozytorium może wymagać dodatkowych zmian, takich jak poluzowanie uprawnień i zasad.
Ostrzeżenie
Jeśli stare i nowe gałęzie domyślne zostaną zaktualizowane przed uruchomieniem potoku, potok nie będzie mógł odzwierciedlać zmian. Ktoś będzie musiał ręcznie scalić starą gałąź domyślną z nową gałęzią domyślną, aby ponownie uruchomić ją automatycznie.
W przypadku wszystkich istniejących kompilacji ciągłej integracji zaktualizuj je, aby wyzwalać względem nowej gałęzi domyślnej zamiast starej.
Udziel tożsamości kompilacji współtworzenie uprawnienia do repozytorium. Przejdź do Ustawienia projektu>Repozytoria>(Twoje repozytorium)>Uprawnienia. Może istnieć do dwóch tożsamości— jedna dla usługi kompilacji kolekcji projektów, a druga dla usługi kompilacji projektu. Upewnij się, że uprawnienia do współpracy mają Zezwalaj.
Jeśli nowa gałąź domyślna ma zasady gałęzi, przyznaj również tożsamość kompilacji zasady obejścia podczas wypychania uprawnień. To uprawnienie stanowi zagrożenie bezpieczeństwa, ponieważ złośliwy użytkownik mógłby utworzyć pipeline, aby przemycić kod do repozytorium w projekcie. Gdy dublowanie nie jest już potrzebne, upewnij się, że usunąć to uprawnienie.
Dodaj nowy plik,
mirror.yml
do repozytorium w nowej gałęzi domyślnej. W tym przykładzie przyjęto założenie, że stara gałąź domyślna zostałamaster
, a nowa gałąź jestmain
. Zaktualizuj gałęzie wyzwalające i wierszgit push
, jeśli nazwy gałęzi są inne.
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
- Utwórz nową linię przetwarzania, wybierając opcję "Azure Repos Git" i "Istniejący plik YAML usługi Azure Pipelines" w kreatorze konfiguracji.
Wybierz plik
mirror.yml
dodany w poprzednim kroku. Zapisz i uruchom potok.
Rozwiązywanie problemów
Ten pipeline będzie uruchamiany przy każdym wypychaniu do master
lub main
.
Zachowa to synchronizację tak długo, jak nowe zatwierdzenia nie są dostarczane jednocześnie w obu gałęziach.
Jeśli potok zaczyna zawodzić z komunikatem o błędzie, takim jak "Aktualizacje zostały odrzucone, ponieważ wypchnięty wierzchołek gałęzi znajduje się za jego zdalnym odpowiednikiem", ktoś będzie musiał ręcznie scalić starą gałąź z nową gałęzią.
- Sklonuj repozytorium i
cd
do jego katalogu. - Przełącz na nową gałąź domyślną
git checkout main
(jeślimain
jest twoją nową gałęzią domyślną). - Utwórz nową gałąź do integracji dwóch gałęzi z
git checkout -b integrate
. - Połącz starą gałąź domyślną z
git merge master
(o ilemaster
jest twoją starą gałęzią domyślną). - Wypchnij nową gałąź, a następnie otwórz i ukończ pull request do nowej gałęzi domyślnej.
- Potok dublowania powinien następnie uwzględniać dublowanie zatwierdzenia scalania z powrotem do starej wartości domyślnej.