Ä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. Pull-begäranden riktar sig också som standard mot den här grenen.

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.

Ange en ny standardgren

Du kan använda en annan gren än main för nya ändringar eller ändra huvudutvecklingslinjen i lagringsplatsen. Information om hur du ändrar standardgrennamnet för nya lagringsplatser finns i 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.

Kommentar

Om du ändrar standardgrenen måste du ha behörigheten Redigera principer . Mer information finns i Ange Behörigheter för Git-lagringsplats.

  1. Under din projektrepo väljer du Grenar.

  2. På sidan Grenar väljer du Fler alternativ bredvid den nya standardgren som du vill använda och väljer Ange som standardgren.

    Skärmbild som visar Ange standardgren.

  3. När du har angett den nya standardgrenen kan du ta bort den tidigare standardinställningen om du vill.

  1. Välj inställningsknappen i projektets nedre vänstra hörn för att öppna projektadministrationssidan.

    Öppna det administrativa området i webbportalen för projektet

  2. Välj Databaser.

  3. Välj din Git-lagringsplats. Dina grenar visas under lagringsplatsen.

  4. Välj ... bredvid den gren som du vill ange som standard och välj sedan Ange som standardgren.

    Ange en standardgren för en Git-lagringsplats

  5. När du har angett den nya standardgrenen kan du ta bort den föregående 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 har 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 masterstandardgrenen nästan alltid . 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.

Pipelines

Uppdatera CI-utlösarna för alla pipelines. Designerpipelines kan redigeras på webben. YAML-pipelines kan redigeras i respektive lagringsplatser.

Pull-begäranden under flygning

Ommåla varje öppen pull-begäran till den nya standardgrenen.

Befintliga kloner

Nya kloner av lagringsplatsen hämtar 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.

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. Som tur är har version de flesta länkar till standardgrenen inget segment och kan lämnas som de är. 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 ett tag 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 arbetet på slutet om slutanvändarna fortsätter att push-överföra till den gamla standardinställningen. Vi använder Azure Pipelines för att konfigurera den här tillfälliga speglingen.

Kommentar

I det här avsnittet används 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å.

Speglingspipelinen

Kommentar

De här instruktionerna är inte idiotsäkra och lagringsplatsens installation kan kräva ytterligare ändringar, till exempel att förlora behörigheter och principer.

Varning

Om både de gamla och nya standardgrenarna uppdateras innan pipelinen körs kan pipelinen inte spegla ändringarna. Någon måste manuellt sammanfoga den gamla standardgrenen till den nya standardgrenen för att få den att köras automatiskt igen.

  1. För alla befintliga CI-versioner uppdaterar du dem så att de utlöses mot din nya standardgren i stället för den gamla.

  2. Ge byggidentiteten Contribute behörighet till lagringsplatsen. Gå till Project Inställningar> Repositories>(din lagringsplats)>Behörigheter. Det kan finnas upp till två identiteter, en för byggtjänsten för projektsamlingen och den andra för projektversionstjänsten. Kontrollera att behörigheten Contribute säger Tillåt.

  1. Om den nya standardgrenen har grenprinciper beviljar du även byggidentiteten bypass-principerna när du push-överför 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 måste du ta bort den här behörigheten.

  2. Lägg till en ny fil mirror.yml i lagringsplatsen i den nya standardgrenen. I det här exemplet antar vi att den gamla standardgrenen var master och att den nya är main. Uppdatera de utlösande grenarna git push och 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
  1. 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-överföring till master eller till main. Det håller dem synkroniserade så länge nya incheckningar inte tas emot på båda grenarna samtidigt.

Om pipelinen börjar misslyckas med ett felmeddelande som "Uppdateringar avvisades eftersom ett push-grentips ligger bakom fjärren" måste någon sammanfoga den gamla grenen till den nya grenen för hand.

  1. Klona lagringsplatsen och cd till dess katalog.
  2. Kolla in den nya standardgrenen med git checkout main (om main är din nya standardgren).
  3. Skapa en ny gren för att integrera de två grenarna med git checkout -b integrate.
  4. Sammanfoga den gamla standardgrenen med git merge master (om master är din gamla standardgren).
  5. Push-överför den nya grenen och öppna och slutför sedan en pull-begäran till den nya standardgrenen.
  6. Speglingspipelinen bör sedan ta hand om speglingen av sammanfogningen tillbaka till den gamla standardinställningen.