Ändra standardgrenen
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Standardgrenen är den första grenen som Git checkar ut på en ny klon. Dessutom pull-begäranden rikta in sig på den här grenen som standard.
Vi går igenom processen med att ändra standardgrenen. Vi tar även upp andra saker som du måste tänka på och uppdatera när du gör den här ändringen. Slutligen ska vi titta på ett verktyg för att underlätta övergången.
Förutsättningar
Kategori | Krav |
---|---|
Åtkomst till projekt | Medlem av ett -projekt. |
behörigheter | Visa kod i privata projekt: Minst grundläggande åtkomst . – Klona eller bidra till kod i privata projekt: Medlem i Bidragsgivare säkerhetsgrupp eller projektets motsvarande behörigheter. – Ange behörigheter för gren eller lagringsplats: Hantera behörigheter behörigheter för grenen eller lagringsplatsen. – Ändra standardgren: Redigera principer behörigheter för lagringsplatsen. – Importera en lagringsplats: Medlem i Projektadministratörer säkerhetsgrupp eller Git-projektnivå Skapa lagringsplats behörighet inställd på Tillåt. Mer information finns i Ange Behörigheter för Git-lagringsplats. |
Tjänster | Repos aktiverat. |
Verktyg | Valfritt. Använd kommandona az repos: Azure DevOps CLI. |
Anmärkning
I offentliga projekt har användare med åtkomst på intressentnivå fullständig åtkomst till Azure Repos, inklusive att se, klona och bidra till kod.
Kategori | Krav |
---|---|
Åtkomst till projekt | Medlem av ett -projekt. |
behörigheter | – Visa kod: Minst Grundläggande åtkomst. – Klona eller bidra till kod: Medlem i Contributors säkerhetsgrupp eller motsvarande behörigheter i projektet. |
Tjänster | Repos aktiverat. |
Ange en ny standardgren
Du kan använda en annan gren än main
för nya ändringar eller ändra huvudutvecklingslinjen i lagringsplatsen. Om du vill ändra standardgrennamnet för nya lagringsplatser läser du Alla lagringsplatsers inställningar och principer.
Om du vill ändra lagringsplatsens standardgren för sammanslagning av nya pull-begäranden behöver du minst två grenar. Om det bara finns en gren är det redan standard. Du måste skapa en andra gren för att ändra standardinställningen.
Anmärkning
För att ändra standardgrenen måste du ha Redigera policyer behörighet. Mer information finns i Ange Behörigheter för Git-lagringsplats.
Under din projektrepoväljer du Grenar.
På sidan Grenar väljer du Fler alternativ bredvid den nya standardgrenen som du vill använda och väljer Ange som standardgren.
När du har angett den nya standardgrenen kan du ta bort den tidigare standardinställningen om du vill.
Det finns andra aspekter som du bör tänka på innan du gör den här ändringen.
Välj ett namn
Git 2.28 lagt till möjligheten att välja ett första grennamn.
Samtidigt har Azure Repos, GitHub och andra Git-värdleverantörer lagt till möjligheten att välja ett annat initialt grennamn.
Tidigare hette standardgrenen nästan alltid master
.
Det mest populära alternativa namnet är main
.
Mindre vanliga alternativ är trunk
och development
.
Om du inte har några begränsningar från de verktyg du använder eller teamet som du använder fungerar alla giltiga grennamn.
Uppdatera andra system
När du byter till en annan standardgren kan andra delar av arbetsflödet påverkas. Du måste ta hänsyn till dessa delar när du planerar en ändring.
Rörledningar
Uppdatera CI-utlösare för alla pipelines. Designerpipelines kan redigeras på webben. YAML-pipelines kan redigeras i respektive lagringsplatser.
Pull-begäranden ombord
Omdirigera varje öppen pull request till den nya standardgrenen.
Befintliga kloner
Nya kloner av repositoryn får den nya standardgrenen.
Efter växeln ska alla med en befintlig klon köra git remote set-head origin -a
(ersätta origin
med namnet på fjärren om det är något annat) för att uppdatera sin vy över fjärrens standardgren.
Framtida nya grenar bör baseras på det nya standardvärdet.
Inkommande länkar
Vissa bokmärken, dokument och andra filer som inte är kodfiler som pekar på filer i Azure Repos måste uppdateras. Grennamnet för en fil eller katalog kan visas i URL:en.
Om en URL innehåller en frågesträng för version
, till exempel &version=GBmybranchname
, bör url:en uppdateras.
Lyckligtvis har de flesta länkar till standardgrenen inte ett version
segment och kan lämnas as-is.
När du har tagit bort den gamla standardgrenen tas även försök att navigera till den till den nya standardinställningen ändå.
Tillfällig spegling
En Git-lagringsplats kan bara ha en standardgren. Men under en tid kan du konfigurera ad hoc-spegling mellan din gamla standard och din nya standard. På så sätt behöver slutanvändarna inte göra om deras arbete om de fortsätter att överföra till den gamla standardinställningen. Vi använder Azure Pipelines för att konfigurera den här tillfälliga speglingen.
Anmärkning
Det här avsnittet använder språk som strider mot Microsofts perspektiv.
Mer specifikt visas ordet master
på flera platser som överensstämmer med hur det har använts i Git.
Syftet med det här avsnittet är att förklara hur du byter till ett mer inkluderande språk, till exempel main
.
Att undvika allt omnämnande av master
skulle göra riktningarna mycket svårare att förstå.
Speglingsrörledningen
Anmärkning
Dessa instruktioner är inte idiotsäkra, och konfigurationen av lagringsplatsen kan kräva ytterligare förändringar, såsom att göra behörigheter och principer mindre strikta.
Varning
Om både de gamla och nya standardgrenarna uppdateras innan pipelinen körs, kommer pipelinen inte att kunna spegla ändringarna. Någon måste manuellt slå samman den gamla standardgrenen med den nya standardgrenen för att få den att köras automatiskt igen.
För alla befintliga CI-versioner uppdaterar du dem till utlösa mot din nya standardgren i stället för den gamla.
Ge byggidentiteten Contribute- behörighet till lagringsplatsen. Gå till Projektinställningar>lagringsplatser>(din lagringsplats)>behörigheter. Det kan finnas upp till två identiteter, en för projektsamlingarnas byggtjänst och den andra för projektens byggtjänst. Kontrollera att behörigheten Contribute är Tillåt.
Om den nya standardgrenen har grenprinciper beviljar du även versionsidentiteten Kringgå principer när du pushar behörighet. Den här behörigheten är en säkerhetsrisk eftersom en obehörig användare kan skapa en pipeline för att smyga in kod på en lagringsplats i projektet. När spegling inte längre behövs se till att ta bort den här behörigheten.
Lägg till en ny fil
mirror.yml
till lagringsplatsen i den nya standardgrenen. I det här exemplet antar vi att den gamla standardgrenen varmaster
och att den nya ärmain
. Uppdatera de utlösande grenarna ochgit push
raden om dina grennamn är olika.
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
- Skapa en ny pipeline och välj "Azure Repos Git" och "Existing Azure Pipelines YAML file" i guiden.
Välj den
mirror.yml
fil som du lade till i föregående steg. Spara och kör pipelinen.
Felsökning
Den här pipelinen körs varje gång det sker en push till master
eller main
.
Det håller dem synkroniserade så länge nya ändringar inte tas emot samtidigt på båda grenarna.
Om pipelinen börjar misslyckas med ett felmeddelande som "Uppdateringar avvisades eftersom den pushade grentippen ligger bakom sin fjärrgren" måste någon slå ihop den gamla grenen med den nya grenen manuellt.
- Klona lagringsplatsen och
cd
in i dess mapp. - Kolla in den nya standardgrenen med
git checkout main
(ommain
är din nya standardgren). - Skapa en ny gren för att integrera de två grenarna med
git checkout -b integrate
. - Sammanfoga den gamla standardgrenen med
git merge master
(ommaster
är din gamla standardgren). - Push den nya grenen, öppna sedan en pull request och slutför den till den nya standardgrenen.
- Speglingspipelinen bör sedan hantera speglingen av sammanslagningen tillbaka till den gamla standardinställningen.