Git Hooks

Git je výkonný systém na správu verzií, ktorý sme v posledných príspevkoch sotva poškriabali. Dnes sa pozrieme na výkon automatizácie, ktorý vám Git môže poskytnúť pomocou Git Hooks.

Každý repozitár má zabudované háčiky, keď použijete príkaz git init. Keď je úložisko inicializované, získate skrytý adresár .git a v ňom je adresár s názvom hooks, ktorý bude obsahovať všetky vaše hooks. Otvorte akýkoľvek git repozitár, ktorý máte po ruke, a použite ls -a na zobrazenie skrytého adresára, potom ho otvorte vo svojom obľúbenom editore kódu.

Na začiatok uvidíte veľa súborov s príponou .sample. Toto sú presne to, čo hovoria, vzorové skripty, ktoré by ste mohli použiť vo svojich projektoch. Súbory sú pomenované tak, aby zodpovedali háku, na ktorom bežia. Takže post-commit.sample beží na post-commit háku.

Na napísanie háku môžete použiť takmer akýkoľvek jazyk. Súbor je analyzovaný podľa šebang zápis v hornej časti súboru. Ak by ste chceli použiť node, použili by ste #! /usr/bindi/env node a váš súbor bude analyzovaný ako súbor uzla.

Predtým, ako sa ponoríme do toho, čo môžete robiť s git hooks, pozrime sa na niektoré z hákov, ktoré máte k dispozícii.

Typy Git Hooks

Commit Workflow Hooks

pre-commit sa spustí ešte predtým, ako zadáte správu odovzdania a možno ho obísť pomocou príkazu git commit –no-verify.

ready-commit-msg možno použiť na úpravu predvolenej správy, ktorú vidíte v správe odovzdania. Použite ho na poskytnutie pokynov vývojárom o tom, aký typ správy odovzdania by mali zanechať. Môže sa tiež použiť na automatizáciu obsahu miesta, kde sa správa automaticky generuje pre vás, ako sú napríklad zlúčenia alebo na automatické pridanie čísla problému do správy odovzdania.

Čítať:  Ako vytvoriť efektívny marketingový plán obsahu elektronického obchodu pre vašu novú firmu

commit-msg možno použiť na overenie správy odovzdania pre váš projekt. Možno nechcete, aby niekto mohol vložiť správu o odovzdaní, ktorá jednoducho hovorí „zaoberám sa bielym miestom“. Tento háčik môžete použiť na zistenie prítomnosti medzier medzi slovami a potom ukončiť a poskytnúť používateľovi varovanie, že potrebuje lepšiu správu o odovzdaní.

post-commit sa spustí po všetkých vyššie uvedených hákoch odovzdania. Je to najužitočnejšie pre oznámenie o vykonaní potvrdenia.

Klientske háčiky

post-checkout sa spustí po úspešnom spustení príkazu git checkout. Ak ste na lokalite používali skupinu veľkých súborov, ale nechceli ste ich mať v ovládaní zdroja, môžete použiť tento príkaz na presun súborov za vás.

pre-push beží počas príkazu git push predtým, ako sa akékoľvek objekty prenesú do vzdialeného úložiska.

Serverové háčiky

predbežné prijímanie sa spustí, keď klient odošle kód do vzdialeného úložiska. Toto sa dá použiť na kontrolu kódu, ktorý sa posiela, aby ste sa uistili, že spĺňa kritériá vášho projektu predtým, ako prijmete push.

po prijatí sa spustí po prijatí aktualizácií do vášho vzdialeného úložiska. Toto by sa dalo použiť na zavolanie webového háku, ktorý spustí proces nasadenia alebo upozorní chatovaciu miestnosť, že bol prijatý príkaz a je pripravený na kontrolu.

Mnohé z vyššie uvedených háčikov možno nastaviť tak, aby sa spúšťali iba na konkrétnych vetvách. To môže znamenať, že hák po prijatí použijete iba vtedy, keď niekto poslal kód do hlavnej vetvy, ktorá má byť pripravená na nasadenie. Zoznam vývojárov môže byť upozornený, aby skontrolovali kód a potom ho nasadili. Týmto spôsobom by ste mali vždy dve skupiny očí na nasadenie, čo môže znamenať zachytenie chýb, ktoré môže jeden vývojár ľahko prehliadnuť.

Čítať:  9 najlepších alternatív Copy.ai

Preskočil som niektoré háčiky, ktoré sú k dispozícii, pretože som nikdy nevidel potrebu ich použiť. Jeden súbor háčikov, o ktorých som nehovoril, sú háčiky pracovného toku e-mailov. Ak neprijímate záplaty do svojho kódu prostredníctvom e-mailu, pravdepodobne ich nikdy nebudete potrebovať. Všetky dostupné háčiky nájdete v dokumentácii.

V praxi som najčastejšie používal tieto háčiky:

  • vopred sa zaviazať
  • predtlačenie
  • commit-msg
  • predbežný príjem
  • post-commit
  • po prijatí

Teraz urobme niečo s týmito háčikmi.

Aktivácia doplnku WordPress pomocou WP Cli a Git Hooks

Pre jeden klientsky projekt som tento rok pridával obchod a stále som robil niekoľko úloh na hlavnej stránke. To znamenalo, že to urobila hlavná stránka nie mať nainštalovaný alebo aktivovaný niektorý z našich doplnkov WooCommerce. Potreboval som rozvinúť obchod WooCommerce na jednej vetve a až keď som bol pripravený to všetko presadiť naživo, chcel som presunúť WooCommerce na hlavnú.

Na začiatok budeme potrebovať novú pobočku s názvom obchod. Môžeme to získať pomocou git checkout -b store. Tým sa vytvorí nová pobočka a skontroluje sa to za nás. Teraz si pripravíme háčik.

Najprv musíme vytvoriť háčik po pokladni pomocou tohto príkazu touch .git/hooks/post-checkout.

Ďalej ho musíme urobiť spustiteľným. Môžeme to urobiť príkazom chmod z terminálu chmod +x .git/hooks/post-checkout.

Teraz otvorte súbor vo svojom zvolenom editore kódu a skopírujte nižšie uvedený kód do súboru po pokladni.

#! /bin/bash

Čítať:  Je používanie WhatsApp bezpečné? Ako funguje jeho end-to-end šifrovanie?

wp plugin aktivuje woocommerce

echo “aktivovaný WooCommerce”

wp plugin aktivuje automatewoo

echo “aktivovaný AutomateWoo”

Môžete to demonštrovať prechodom na ľubovoľnú pobočku cez terminál. Mali by ste vidieť dva riadky oznamujúce, že WooCommerce a AutomateWoo boli aktivované. Vieme, že to funguje, ale nie je to úplne to, čo chceme, pretože pluginy sa zapínajú vždy, keď prejdeme na akúkoľvek vetvu.

Čo naozaj chceme, je zapnúť ich, keď sa presunieme do pobočky našej predajne, a potom ich vypnúť, keď sme na našej hlavnej pobočke. Aby sme to urobili, budeme potrebovať hák, ktorý zistí, ktorá vetva sme. Vymeňte obsah po pokladni s kódom uvedeným nižšie.

#! /bin/bash

oldrev=1 dolár
newrev=2 doláre

branch_name=”(git symbolic-ref HEAD 2>/dev/null)”

ak [ “refs/head/store” = “$branch_name” ];potom
wp plugin aktivuje woocommerce
echo “aktivované Woo”

wp plugin aktivuje automatewoo
echo “aktivovaný AutomateWoo”
fi

ak [ “refs/head/main” = “$branch_name” ];potom
wp plugin deaktivuje woocommerce
echo “deaktivovaný Woo”

wp plugin deaktivovať automatewoo
echo “deaktivovaný AutomateWoo”
fi

Tento kód začína priradením vetvy, ktorú kontrolujeme, k premennej branch_name. Potom máme dva príkazy if. Prvé kontroly, či sme sa presunuli do pobočky predajne. Ak máme, používa WP CLI na aktiváciu WooCommerce a AutomateWoo.

Ďalší príkaz if kontroluje, či sme na hlavnej vetve. Ak áno, deaktivuje pluginy s WP CLI a povie nám o tom v termináli.

Ovládanie pracovných tokov Git pomocou Git Hooks

V predchádzajúcom príspevku o Git som hovoril o rôznych pracovných postupoch Git. Jedným z veľmi bežných prípadov použitia hákov je zabrániť komukoľvek odovzdať kód priamo do hlavnej vetvy. Môžete použiť háčik, aby ste sa uistili, že všetok kód je zlúčený z inej vetvy do hlavnej.

Čítať:  Náklady na získanie zákazníka vs. udržanie zákazníka

Začnite premenovaním pre-commit.sample na pre-commit a potom ho urobte spustiteľným, ako som opísal vyššie. Potom uchopte nižšie uvedený kód a použite ho v súbore pred potvrdením.

#! /bin/bash

používateľské meno=$GIT_AUTHOR_NAME
branch=”$(git symbolic-ref HEAD 2>/dev/null)”

ak [ “$branch” = “refs/heads/main” ]; potom
echo “WHOA to bolo ‘”${branch}”‘ to by ste nemali robiť. Prestaňte robiť hlúposti a vytvorte si vlastnú pobočku a zlúčte ju.”
exit 1 # ak toto odstránite, nezablokuje to odovzdanie, ale odošle správu na slack
fi

Toto skontroluje, či sme na hlavnej vetve, a ak áno, odovzdanie sa zastaví. Potom vytlačí používateľovi pripomenutie, že by sa nemal zaväzovať priamo hlavnej vetve.

Pamätajte, že mnohé miesta sa menia na hlavné ako ich pobočka. Staršie projekty tu môžu potrebovať master, ak neboli aktualizované.

Môžete to dokonca urobiť o krok ďalej a použiť cURL získať prístup k API chatovacej aplikácie a potom sa verejne sťažovať, že sa niekto pokúsil zaviazať k main.

Jediným obmedzením git hooks je vaša predstavivosť. Môžete ich použiť na zastavenie niekto z páchania, ak je v jeho kóde prítomný TODO alebo k zastaviť medzery na konci súboru.

Ak máte nejakú časť vášho pracovného postupu, ktorá je neustálym kameňom úrazu, pozrite sa na háčiky na automatizáciu, aby ste si to nemuseli pamätať.

Nové Publikácie:

ODPORÚČANIE