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.
V úložišti projektu vyberte Větve.
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.
Po nastavení nové výchozí větve můžete předchozí výchozí větev odstranit, pokud chcete.
Výběrem tlačítka nastavení v levém dolním rohu projektu otevřete stránku pro správu projektu.
Vyberte Úložiště.
Vyberte úložiště Git. Vaše větve se zobrazí v úložišti.
Vyberte ... vedle větve, kterou chcete nastavit jako výchozí, a pak vyberte Nastavit jako výchozí větev.
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í.
Příchozí odkazy
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=GBmybranchname
dotazu, 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.
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.
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.
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.
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 bylamaster
a nová větev jemain
. Pokud se názvy větví liší, aktualizujte aktivační větve agit 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
- 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ě.
- Naklonujte úložiště a
cd
do jeho adresáře. - Podívejte se na novou výchozí větev s
git checkout main
novou výchozí větví (pokudmain
je to nová výchozí větev). - Vytvořte novou větev pro integraci dvou větví s
git checkout -b integrate
. - Sloučí starou výchozí větev s
git merge master
původní větví (pokudmaster
je to stará výchozí větev). - Nasdílejte novou větev, otevřete a dokončete žádost o přijetí změn do nové výchozí větve.
- Kanál zrcadlení by se pak měl postarat o zrcadlení potvrzení sloučení zpět do původního výchozího stavu.