Automatizirajte svoj tijek rada s git kukama

Zasluge: Atlass

Što su git kuke

Git kuke su skripte koje se pokreću prije određenih događaja kao što su počinjenje, guranje, ponovno postavljanje itd. Budući da se temelje na događajima, kada izvodite određene git naredbe, git će provjeriti kuke u git spremištu da vidi postoji li pridružena skripta za trčanje. Kuke se nalaze u direktoriju .git / hooks.

cd .git / kuke

Ako nabrojite datoteke u tom direktoriju, vidjet ćete sljedeće uzorke kuke.

1. applypatch-msg.sample
2. počiniti-msg.sample
3. post-update.sample
4. pre-applypatch.sample
5. unaprijed počiniti.prizor
6. pre-push.sample
7. pre-rebase.sample
8. unaprijed rece.ve uzorak
9. pripremiti-počiniti-msg.sample
10.update.sample

Kako ih koristiti za poboljšanje vašeg tijeka rada u Git-u

Ako ste ikada radili na projektu otvorenog koda s puno suradnika ili ste možda tehnički tim koji vodi projekt, i tražite načine kako poboljšati radni tijek svog tima na takav način da dovode određene pogreške u toku rada koje programeri čine skloni izbjegavanju prije nego što se počine, možda ste programer koji voli uvijek imati svoju A igru ​​na 100, možda je sada dobro vrijeme za istraživanje git kuka.

U ovom ću članku pokazati kako koristiti pre-push git kuku za pokretanje testova prije nego što kôd gurnete na vašu udaljenu podružnicu. U ovom postu koristit ću PHP.

Ako koristite Mac knjigu, slijedite dalje. Ako koristite Windows PC, naredbe ljuske će biti drugačije. Naredbe sustava Windows nisu sadržane u ovom postu.

Klonirajte ovo spremište. Sadrži projekt izgrađen s Laravelom i sadrži neke jedinice testova napisane s PHPUnit. Nakon što ste to klonirali i postavili, promijenite direktorij u direktorij git hooks i stvorite pre-push datoteku. Otvorite ovo uz omiljeni uređivač teksta, ja koristim Atom.

cd .git / kuke
dodirnite pre-push
atom pre-push // Otvorite ovu datoteku s bilo kojim uređivačem teksta

U idealnom slučaju, želim biti u mogućnosti pokrenuti testove prije nego što kôd gurnem u svoju udaljenu podružnicu. Ako skripta udice izađe sa 0, tada je sve u redu, a git nastavlja gurati kod na moju udaljenu podružnicu. Ako izađe sa ne-nultim kodom, git zaustavlja operaciju.

Redak 7:
Funkcija exec pokreće naredbu za pokretanje testova koji je u ovom slučaju vendor / bin / phpunit.

Ako koristite neki drugi testni okvir kao što je codeception, trebali biste zamijeniti dobavljača / bin / phpunit određenom naredbom za pokretanje testova u odabranom okviru. Sadržaj izlazne varijable bit će niz napunjen sa svakim retkom iz naredbe.

Redak 9:
Ako izlazni kod nije jednak 0, test se nije uspješno pokrenuo. Možete ispitati sadržaj izlazne varijable i odrediti koju stavku polja želite prikazati na vašem terminalu. Predmet sam prikazao u indeksu 14 koji prikazuje sažetak testova, prolaza i neuspjeha. Ovaj dio stvarno ovisi o vama. Na terminalu možete izlaziti što god želite; dno crta je da se git zaustavi i push push se ionako ne događa.

Redak 18:
Nulti izlazni kod znači da smo svi zeleni. Git nastavlja s push potezom do vaše udaljene podružnice.

Što dalje?

Napravite izvršnu datoteku prije pritiska kako bi mogla funkcionirati kao kuka.

chmod a + x pre push

Sada nastavite s malom izmjenom bilo koje datoteke u projektu i ugradite promijenjene datoteke (datoteke). Možete prilagoditi svoj kôd da pokrene neuspjeh samo tako da odmah vidimo kuku u akciji.

ga. && gc -m "mala promjena"
git push origin podružnica-ti-na-se

Ako dođe do kvara, vidjet ćete nešto poput onoga što je ispod na vašem terminalu:

Kakva je korist od toga?

1. Recite da ste zaboravili pokrenuti testnu naredbu prije guranja, to vam štedi neugodnost s kojom biste se mogli suočiti kad izrada ne uspije na github / bitbucket / gitlab.
2. Ručno pokretanje testa cijelo vrijeme prije nego što je guranje ponavljajući zadatak, što radimo s ponavljajućim zadacima? I ja sam tako mislila! Plus to povećava vašu produktivnost.
3. Možete napraviti stvarno cool stvari poput računanja ukupnog vremena koje je trebalo za pokretanje testova. Na taj način možete odmah znati jesu li testovi trajali predugo. Sve je na vama.

Slobodno istražite druge slučajeve upotrebe različitih git kuka. Git kuke je zanimljiv alat za automatizaciju vašeg tijeka rada. Podijelite svoje misli putem odjeljka za komentar u nastavku.

Jeste li smatrali da je ovaj post koristan? Ljubazno pokažite malo ljubavi i dijelite.