Git větev, která ti potichu rozbije týmovou spolupráci

Z Mazovia

Jeden terminál nestačí, spouštějte úlohy podle jazyka Terminál a buildovací úlohy jsou třetí místo, kde se více jazyků sráží. Místo jednoho univerzálního skriptu si definujte samostatné úlohy pro každý jazyk a spouštějte je přes přiřazené klávesové zkratky. Pomůže i oddělení virtuálních prostředí nebo správců závislostí — jedno pro každý jazyk. Pokud používáte monorepo, nastavte si pracovní prostory tak, aby editor načetl jen relevantní části projektu podle toho, na čem právě pracujete.

Začni tím, že si pokrytí změříš jen na novém nebo upravovaném kódu. Celorepozitářové číslo je zavádějící, protože starý kód bez testů ho sráží dolů a nutí tě psát testy tam, kde se nic nemění. Praktický postup: nastav nástroj tak, aby reportoval pokrytí změněných řádků v rámci pull requestu, a stanov jen minimální hranici pro nový kód. Tím se vyhneš hromadění prázdných testů, které sice zvyšují procento, ale netestují žádné chování.

Základem obrany je používat parametrizované dotazy nebo prepared statements. Databázový ovladač pošle strukturu dotazu zvlášť a hodnoty zvlášť, takže vstup nikdy nezmění syntaxi příkazu. V praxi to znamená, že místo skládání řetězce s proměnnou uvnitř dotazu předáte hodnotu jako vázaný parametr. Tento přístup podporuje většina moderních knihoven a frameworků. Pokud používáte ORM, ověřte, že i přímé dotazy v něm jsou parametrizované, protože některé metody umožňují vložit surový řetězec.

Struktura, která šetří čas při hledání 2. Oddělte titulek od těla prázdným řádkem. První řádek slouží jako souhrn, zbytek jako vysvětlení. Do těla patří kontext: co bylo špatně, jaké bylo očekávání a proč jste zvolili právě toto řešení. Pokud commit opravuje chybu, uveďte číslo issue nebo alespoň popis chování před a po. Tělo nemusí být dlouhé, ale musí odpovědět na otázku "proč", kterou titulek neřeší.

Odhadujte analytiku dvakrát: nejdřív hrubě, pak těsně před prac

Většina týmů se domluví na nějakém větvení, a pak se diví, proč se změny pořád ztrácejí. Nejčastější příčina není Git sám, ale práce přímo na hlavní větvi. Když všichni commitají do main, každý push se stává malou sázkou: buď projde, nebo přepíše něčí práci. Řešení je jednoduché a nezajímavé — main nech jen pro to, co je ověřené. Denní práce patří na krátce žijící větve, které vznikají z aktuálního main a do něj se také vracejí.

Nakonec si nastavení otestujte na skutečném souboru od každého jazyka. Otevřete je vedle sebe, zkuste formátování, našeptávání i spuštění testů. Pokud něco nefunguje, vypněte rozšíření po jednom a sledujte, co se změní. Dokumentace k jazykům a konfiguraci editoru bývá obsáhlá, ale praktický test odhalí víc než hodina čtení. Jakmile prostředí jednou sedne, přidání dalšího jazyka je otázka pár minut, ne dnů.

Více jazyků v jednom repozitáři vypadá jako maličkost, dokud nezačnete přepínat mezi soubory a editor přestane rozumět tomu, co vlastně píšete. Klíčové je nastavit prostředí tak, aby každý typ souboru měl přiřazený správný jazyk a nástroje. Většina editorů dnes podporuje rozšíření pro jednotlivé jazyky, ale automatická detekce podle přípony selhává u souborů jako .h, .m nebo šablon s vloženými bloky. Ruční mapování přípon na konkrétní jazyk je první krok, který odstraní většinu zbytečného zvýrazňování a chybových podtržení.

Dobře napsaná commit zpráva není práce navíc. Je to nástroj, který vám za půl roku ušetří hodiny hledání v historii. Začněte už u příštího commitu: napište titulek v rozkazovacím způsobu, přidejte tělo s kontextem a rozdělte změny tak, aby každá měla vlastní záznam. Historie se pak stane čitelnou kronikou projektu, ne sbírkou záhad.

3. Jeden commit, jedna logická změna. Smíchání opravy chyby, refaktoringu a nové funkce do jednoho commitu je nejčastější důvod, proč se změny nedají dohledat. Když později potřebujete vrátit pouze opravu, musíte rozplétat celý balík. Rozdělte práci na menší commity, i když to znamená častější ukládání. Menší commity se snadněji čtou, testují i revertují.

1. Pište v rozkazovacím způsobu a v přítomném čase. Formulace jako "Přidat validaci vstupu" nebo "Opravit chybu v parseru" čte člověk přirozeně. Minulý čas ("Přidal jsem validaci") svádí k tomu psát o sobě, ne o změně. První řádek by měl být krátký, ideálně do 50 znaků, a měl by říct, co commit dělá, ne proč jste ho vytvořili vy.

Nejčastější chybou je snaha nastavit všechno ručně v uživatelském profilu. Takové nastavení se rozbije při prvním přechodu na jiný počítač nebo při aktualizaci editoru. Druhou častou chybou je ignorování pořadí, v jakém se rozšíření načítají. Když dvě rozšíření tvrdí, že vlastní stejnou příponu, vyhrává to, které se načte později, a výsledek je nepředvídatelný. Řešením je explicitní priorita nebo vypnutí konfliktního rozšíření pro daný typ souboru.