Změna výchozí větve

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Výchozí větev je první větev, kterou Git bude rezervovat na novém klonu. Také žádosti o přijetí změn cílí ve výchozím nastavení na tuto větev.

Projdeme si proces změny výchozí větve. Při provádění této změny také probereme další věci, které musíte zvážit a aktualizovat. Nakonec se podíváme na nástroj pro usnadnění přechodu.

Nastavení nové výchozí větve

Můžete použít jinou větev než main pro nové změny nebo změnit hlavní linii vývoje v úložišti. Pokud chcete změnit výchozí název větve pro nová úložiště, přečtěte si téma Všechna nastavení a zásady úložišť.

Pokud chcete změnit výchozí větev úložiště pro sloučení nových žádostí o přijetí změn, potřebujete aspoň dvě větve. Pokud existuje jenom jedna větev, je to už výchozí. Abyste mohli změnit výchozí hodnotu, musíte vytvořit druhou větev.

Poznámka:

Změna výchozí větve vyžaduje, abyste měli oprávnění k úpravám zásad . Další informace najdete v tématu Nastavení oprávnění úložiště Git.

  1. V úložišti projektu vyberte Větve.

  2. Na stránce Větve vyberte Další možnosti vedle nové výchozí větve, kterou chcete použít, a zvolte Nastavit jako výchozí větev.

    Snímek obrazovky znázorňující nastavení výchozí větve

  3. Po nastavení nové výchozí větve můžete předchozí výchozí větev odstranit, pokud chcete.

  1. Výběrem tlačítka nastavení v levém dolním rohu projektu otevřete stránku pro správu projektu.

    Otevření oblasti správy webového portálu pro váš projekt

  2. Vyberte Úložiště.

  3. Vyberte úložiště Git. Vaše větve se zobrazí v úložišti.

  4. Vyberte ... vedle větve, kterou chcete nastavit jako výchozí, a pak vyberte Nastavit jako výchozí větev.

    Nastavení výchozí větve úložiště Git

  5. Jakmile nastavíte novou výchozí větev, můžete předchozí větev odstranit, pokud chcete.

Před provedením této změny byste měli zvážit další aspekty.

Zvolte název.

Git 2.28 přidal možnost zvolit počáteční název větve. Azure Repos, GitHub a další poskytovatelé hostingu Gitu zároveň přidali možnost zvolit jiný počáteční název větve. Dříve byla výchozí větev téměř vždy pojmenována master. Nejoblíbenější alternativní název je main. Méně časté možnosti zahrnují trunk a development. V nástrojích, které používáte, nebo týmu, které používáte, chybí žádná omezení, bude fungovat jakýkoli platný název větve.

Aktualizace jiných systémů

Když změníte jinou výchozí větev, můžou to mít vliv na jiné části pracovního postupu. Tyto části budete muset vzít v úvahu při plánování změny.

Pipelines

Aktualizujte triggery CI pro všechny kanály. Kanály návrháře je možné upravovat na webu. Kanály YAML je možné upravovat v příslušných úložištích.

Žádosti o přijetí změn v letu

Znovu nasměrujte jednotlivé otevřené žádosti o přijetí změn na novou výchozí větev.

Existující klony

Nové klony úložiště získají novou výchozí větev. Po přepnutí by se měl spustit git remote set-head origin -a každý s existujícím klonem (pokud origin je to něco jiného) a aktualizovat tak zobrazení výchozí větve vzdáleného počítače. Budoucí nové větve by měly být založené na novém výchozím nastavení.

Některé záložky, dokumenty a další soubory bez kódu, které odkazují na soubory v Azure Repos, bude potřeba aktualizovat. Název větve pro soubor nebo adresář se může zobrazit v adrese URL.

Pokud adresa URL obsahuje například řetězec version&version=GBmybranchnamedotazu, měla by se tato adresa URL aktualizovat. Většina odkazů na výchozí větev naštěstí nebude mít version segment a dá se ponechat tak, jak je. Jakmile odstraníte starou výchozí větev, pokusí se na ni přejít i tak do nového výchozího nastavení.

Dočasné zrcadlení

Úložiště Git může mít jenom jednu výchozí větev. Na chvíli ale můžete nastavit ad hoc zrcadlení mezi starým výchozím a novým výchozím nastavením. Tímto způsobem, pokud koncoví uživatelé budou pokračovat v nabízení do starého výchozího nastavení, nebudou muset znovu provést práci na jejich konci. K nastavení tohoto dočasného zrcadlení použijeme Azure Pipelines .

Poznámka:

Tato část používá jazyk, který je v rozporu s perspektivou Microsoftu. Konkrétně se slovo master zobrazuje na několika místech konzistentních s tím, jak se používá v Gitu. Účelem tohoto tématu je vysvětlit, jak přejít na inkluzivnější jazyk, například main. Vyhněte se všem zmínkám master o tom, že by bylo mnohem obtížnější pochopit směry.

Kanál zrcadlení

Poznámka:

Tyto pokyny nejsou bez kontroly pravopisu a vaše nastavení úložiště může vyžadovat další změny, jako je například uvolnění oprávnění a zásad.

Upozorňující

Pokud se staré i nové výchozí větve před spuštěním tohoto kanálu aktualizují, kanál nebude moct změny zrcadlit. Někdo bude muset ručně sloučit starou výchozí větev do nové výchozí větve, aby ji znovu spustil.

  1. U všech existujících buildů CI je aktualizujte tak, aby se aktivovaly proti nové výchozí větvi místo původní větve.

  2. Udělte identitě sestavení oprávnění Přispívat k vašemu úložišti. Přejděte na Project Nastavení> Repositories>(vaše úložiště)>Oprávnění. Může existovat až dvě identity, jedna pro službu sestavení kolekce projektů a druhá pro službu sestavení projektu. Ujistěte se, že oprávnění Přispívat říká Povolit.

  1. Pokud má nová výchozí větev zásady větve, udělte identitě sestavení zásady obejití při nabízení oprávnění. Toto oprávnění představuje bezpečnostní riziko, protože uživatel se zlými úmysly by mohl vytvořit kanál, který by mohl vylít kód do úložiště ve vašem projektu. Pokud už zrcadlení nepotřebujete, nezapomeňte toto oprávnění odebrat.

  2. Přidejte nový soubor mirror.yml do úložiště v nové výchozí větvi. V tomto příkladu předpokládáme, že stará výchozí větev byla master a nová větev je main. Pokud se názvy větví liší, aktualizujte aktivační větve a git push řádek.

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. Vytvořte nový kanál a v průvodci zvolte Azure Repos Git a Existující soubor YAML služby Azure Pipelines. mirror.yml Zvolte soubor, který jste přidali v předchozím kroku. Uložte a spusťte kanál.

Řešení problému

Tento kanál se spustí při každém nasdílení změn do master nebo do main. Budou se synchronizovat, dokud nové potvrzení nedorazí na obě větve současně.

Pokud kanál začne selhává s chybovou zprávou typu "Aktualizace byly odmítnuty, protože tip nabízené větve je za jeho vzdáleným", bude muset někdo sloučit starou větev do nové větve ručně.

  1. Naklonujte úložiště a cd do jeho adresáře.
  2. Podívejte se na novou výchozí větev s git checkout main novou výchozí větví (pokud main je to nová výchozí větev).
  3. Vytvořte novou větev pro integraci dvou větví s git checkout -b integrate.
  4. Sloučí starou výchozí větev s git merge master původní větví (pokud master je to stará výchozí větev).
  5. Nasdílejte novou větev, otevřete a dokončete žádost o přijetí změn do nové výchozí větve.
  6. Kanál zrcadlení by se pak měl postarat o zrcadlení potvrzení sloučení zpět do původního výchozího stavu.