Git/Tipy
| Gerrit |
|---|
| v · d · u |
Seznam tipů a triků pro Git
Jak se vypořádat se starými větvemi
Pokud s Gitem pracujete už nějakou dobu, pravděpodobně máte spoustu starých, nefunkčních větví, které už nepotřebujete. Ty, které už rozhodně nepotřebujete, jsou ty, které již byly sloučeny zpět do hlavního souboru. Můžete je identifikovat pomocí:
$ git branch --merged
Podobně, když odesíláte změnu k revizi, můžete nechat svou větev automaticky smazat, jakmile ji Gerrit sloučí:
$ git review -f
Kontroly před commitem
Git umožňuje definovat kontroly, kterými musí commit projít, pomocí háčků (podrobnosti viz githooks(5)).
Měli byste mít na paměti, že musíte definovat háčky zvlášť pro každý repozitář (například rozšíření) a že je git clone nekopíruje, takže si musíte vytvořit nějakou proceduru, která bude odpovídat vašim osobním pracovním postupům, jak je udržet organizované.
Začněte povolením ukázky před commitem nainstalované Gitem. Zakazuje názvy souborů bez ASCII kódu a koncové mezery.
Zákaz commitů do masteru
Ukládání master do lokálního repozitáře obvykle není to, co chcete.
Chcete-li funkci zakázat, vložte na začátek tento úryvek:
# Zakázat commity do masteru. if["$(gitsymbolic-refHEAD)"="refs/heads/master"];then echo"Error: Attempt to commit to master." echo exit1 fi
Můžete také zakázat commity do jiných větví (REL1_20 atd.), ale ve většině případů stačí ochrana před master.
Spustit php -l na PHP souborech
Pravděpodobně je dobrý nápad zkontrolovat, zda nějaké PHP soubory, které jste přidali nebo změnili, projdou jednoduchým testem php -l.
Chcete-li to povolit, vložte tento úryvek kódu před poslední řádek s kódem exec git diff-index:
# Spouštět linty na přidaných nebo změněných souborech. gitdiff--cached--name-only--diff-filter=ACM-z$against| whileread-d''-rFILENAME;do case"$FILENAME"in *.php) if["x$MW_GITPHPLINT"!="xfalse"];then if!gitshow:"$FILENAME"|php-l;then echo" in '$FILENAME'" exit1 fi fi ;; esac done STATUS=$? if[$STATUS-ne0];then exit$STATUS fi
Spouštění testovacích sad
Jak navrhuje kontrolní seznam před potvrzením, měli byste před odesláním změny spustit testy.
V racionálním světě je tento únavný úkol ponechán na robotu, zatímco v reálném světě, kde navzdory častým A/B testům UI drobností o tom ani nikdo nemluví, si musíte robota postavit sami.
Naštěstí Git nabízí vše potřebné v zaháčkovaném formátu post-commit.
Následující příklad částečně testuje parser a backend SQLite (pro další inspiraci viz Úložiště pracovních míst Jenkins):
#!/bin/sh atnow<<EOF WWWDIR=~/public_html/w-sqlite && rm -Rf "\$WWWDIR" && git clone ~/public_html/w "\$WWWDIR" && cd "\$WWWDIR" && mkdir data && nice php ./maintenance/run.php install --confpath . --dbtype=sqlite --dbpath=./data --showexceptions=true --pass testpass --server http://localhost/ sqlitetest WikiAdmin && nice php ./tests/parserTests.php && nice composer phpunit:entrypoint -- --group Parser --exclude-group Broken,ParserFuzz,Stub -- EOF
Je samozřejmě velmi důležité přizpůsobit tento háček vašemu osobnímu pracovnímu prostoru a také nepoužívat stejný pro core jako pro extensions.
Spuštění testovací sady jako úlohy at vám umožní pokračovat v práci, zatímco test běží na pozadí, a po jeho skončení vám budou zaslány výsledky poštou.
Toto nastavení předpokládá, že spouštíte vždy jen jednu testovací sadu. Pokud chcete spouštět více testů paralelně, můžete v sadě WWWDIR odkazovat na SHA1 sady HEAD nebo dokonce zkusit sadu git describe --tags, ale mějte na paměti, že každý klon spotřebuje více než 200 MB místa na disku.
Jaké testy byste měli provést, závisí na vašem oboru práce.
Pokud pracujete s bity analyzátoru, spuštění těchto testů může stačit.
Pokud plánujete komplexní změny schématu databáze, můžete otestovat nové instalace a spustit update.php ze starších instalací.
Pokud pracujete na rozšířeních, můžete naklonovat master a tagy (ne větve, ty druhé jsou pohyblivé cíle) 1.18.4 a 1.19.2 a zjistit, zda je váš kód s nimi stále kompatibilní.
Pokud vyvíjíte na počítači s malými zdroji, ale máte přístup k výkonnějším strojům na internetu, můžete na něm vytvořit holé repozitáře a podobným způsobem na nich použít háček post-update (commit se předává jako 1ドル).
Pak už jen stačí git push $POWERFULMACHINE, abyste spustili testovací sadu.
Zobrazit zdrojový kód
Pro procházení celého repozitáře používáme plugin Gerrit s názvem "Gitiles":
Existují také alternativy: