Git/Vytváření nových repozitářů
Tato příručka je určena pouze pro osoby s administrátorským přístupem ke Gerritu v týmu Release Engineering atd.. Pokud jste vývojář, který chce nový repozitář ("projektu Gerrit"), měli byste místo toho navštívit stránku Gerrit/Nová úložiště. Pokud chcete migrovat existující rozšíření ze Subversion do Gitu, hledáte tuto frontu. |
Toto je navrženo jako rychlý a stručný návod, jak vytvořit nový Git repozitář hostovaný Wikimedia Foundation. Nástroj používaný od června 2012 je Gerrit a budete muset být jednou z osob, které mají povoleno vytvářet nové repozitáře.
Krok 0: Přečtěte si a pochopte dokumentaci Gerritu
Než se pokusíte vytvořit repozitáře, je nutné si přečíst a seznámit se se dvěma částmi dokumentace Gerritu:
- Řízení přístupu Gerrit
- Téměř vždy budete nastavovat oprávnění po vytvoření nového repozitáře, takže je důležité pochopit, co jednotlivá oprávnění znamenají a jak je používat.
- Příkaz create-project
- Repozitář budete vytvářet pomocí příkazového řádku, proto se ujistěte, že jste si přečetli a porozuměli různým možnostem dostupným prostřednictvím příkazového řádku (zejména přepínačům
--parenta--owner!).
Krok 1: Vyberte název repozitáře
Než začnete, ujistěte se, že jste si vybrali název repozitáře, který nechcete měnit. Přejmenování repozitářů je téměř nemožné (od verze Gerrit v2.4), takže se před vytvořením repozitáře musíte ujistit, že jste s jeho názvem spokojeni. Snažte se, aby název byl krátký, ale zároveň smysluplný. Upozorňujeme, že jméno musí být složeno buď z latinských písmen (a-z), římských číslic (0-9), nebo pomlček (-).
Krok 2: Vyberte domovské umístění repozitáře
Pro účely organizace (a oprávnění) používáme pro umístění repozitářů názvy projektů nejvyšší úrovně (například mediawiki/* nebo operations/*). Nejlepší je nevytvářet nové repozitáře nejvyšší úrovně bez předchozího projednání, aby bylo možné repozitáře nejvyšší úrovně pojmenovat a nastavit způsobem, který je užitečný a popisný.
Například mediawiki/extensions/VisualEditor, kde mediawiki/extensions je prefix používaný pro jakékoli rozšíření MediaWiki.
Pokud si nejste jisti, zeptejte se, například na wikitech-l.
Krok 3: Vytvoření repozitáře
I když existuje způsob, jak vytvářet nové repozitáře prostřednictvím webového rozhraní Gerritu, nepoužívejte prosím toto grafické rozhraní.
There's a couple of shortcomings[1], so please create the new repository via the command line.
Řekněme, že vytváříme nový repozitář s názvem test/my-new-repo, takže příkaz by byl následující:
ssh -p 29418 gerrit.wikimedia.org gerrit create-project --require-change-id --owner=MyGroup --parent=test --description='"My super awesome repository"' test/my-new-repo
--parent and --owner are mandatory and values should be carefully chosen. If you forget them, do a mistake, the repository has a good percentage of chances of being unusable without admin intervention. |
Řekněme, že vytváříme nový repozitář s názvem $1, takže příkaz by byl následující:
Nastavení přepínače --parent je velmi důležité, abyste zdědili oprávnění z repozitáře, ve kterém jsou umístěna.
Pokud nezadáte rodičovskou hodnotu, výchozí hodnota rodiče je All-Projects, což je pro většinu repozitářů téměř zbytečné.
Pokud se ale spletete, lze rodiče upravit pomocí administrátora Gerritu.
Nastavení přepínače --owner je ještě důležitější, protože pokud nenastavíte vlastníka repozitáře na skupinu, jejímž jste členem (nebo jejímž je zamýšlený uživatel členem), nebudete moci vy (nebo oni) upravit oprávnění k nově vytvořenému repozitáři (a budete muset požádat administrátora Gerritu, aby to opravil).
Krok 4: Nastavení oprávnění
V některých případech můžete chtít upravit oprávnění nad rámec toho, co je zděděno z nadřazeného repozitáře. Jakmile je repozitář vytvořen (a vy jste vlastníkem), můžete upravit oprávnění prostřednictvím webového uživatelského rozhraní Gerrit. Budete chtít použít dokumentaci Gerritu o přístupových právech.
Po dokončení změny počátečních oprávnění nezapomeňte z oprávnění Vlastník odebrat skupinu Tvůrci projektů a skupin, protože ji po počáteční konfiguraci práv nepotřebují.
<span id="Step_5:_Create_.gitreview_file">
Krok 5: Vytvořte soubor .gitreview
Jakmile si vytvoříte nové repozitář, nezapomeňte do kořenového adresáře nového repozitáře přidat soubor .gitreview.
To je obzvláště důležité pro rozšíření, protože pokud tak neučiníte, Translatewiki přestane fungovat.
Soubor s adresou .gitreview by měl vypadat takto:
[gerrit]
host=gerrit.wikimedia.org
port=29418
project=foo/bar.git
defaultbranch=master
defaultrebase=0
track=1
Hostitel a port by se nikdy neměly měnit.
Hodnota project by měla být změněna tak, aby odpovídala repozitáři, který jste právě vytvořili.
defaultbranch je primární větev, do které budete odesílat kód – obvykle je to master.
defaultrebase zakáže implicitní rebasing, který provádí git review před odesláním změny.
Mnoho repozitářů považuje toto chování za otravné, takže ho tam obecně budete chtít zahrnout.
Lze to ale bezpečně vynechat.
Krok 6: Zaregistrujte submodul rozšíření na mediawiki/{extensions,skins}.git
Pouze pro repozitáře s doménou nižší než mediawiki/extensions/ nebo mediawiki/skins/ zaregistrujte prosím submodul repozitáře v superprojektu mediawiki/extension.git, respektive mediawiki/skins.git.
Toto používají různé nástroje a roboti pro řadu akcí, jako je nasazení kódu do Beta clusteru, synchronizace dat extension.json/composer.json nebo aktualizace závislostí knihoven prostřednictvím LibUp a další.
Import z existujícího repozitáře
V případě, že potřebujete importovat existující repozitář, budete muset k refs/* přidat následující oprávnění:
PushCreate ReferenceCreate Annotated TagCreate Signed TagForge Author IdentityForge Committer Identity
Pak naklonujte zrcadlo existujícího repozitáře a odešlete všechny reference Gerritu:
$ git clone --mirror <path to existing repository> mirroring $ cd mirroring $ git remote add gerrit https://gerrit.wikimedia.org/r/<your gerrit repo name> $ git push --mirror gerrit
Dojde k chybě ohledně hodnoty refs/meta/config, která obsahuje konfiguraci repozitáře Gerrit a nelze ji přepsat.
Poznámky pod čarou
- ↑ Main drawback is inability to set the Owner, which can leave you locked out of your own brand new repository