Miten hookit toimivat?
Git kutsuu hook-ohjelmia määritellyissä elinkaaren vaiheissa. Tärkeimmät periaatteet:
- Hookit sijaitsevat oletuksena
$GIT_DIR/hooks-kansiossa tai hakemistossa, jonka olet asettanutcore.hooksPath-asetuksella. - Git jättää huomiotta hookit, joilta puuttuu suoritusoikeus.
pre-commit-hook voi keskeyttää commitin palauttamalla nollasta poikkeavan paluuarvon;commit-msgvoi hylätä viestin japost-commitsuoritetaan commitin jälkeen.
Gitin virallinen kirja jakaa hookit asiakaspuolen ja palvelinpuolen hookkeihin. Esimerkkitiedostot kansiossa päättyvät .sample-päätteeseen: poista pääte ja anna tiedostolle suoritusoikeus ottaaksesi sen käyttöön.
Yksinkertainen pre-commit-esimerkki
Luo tiedosto .git/hooks/pre-commit ja anna sille suoritusoikeus. Skriptin sisältö:
#!/bin/sh
git diff --cached --check
Tämä tarkistaa indeksissä olevat muutokset esimerkiksi välilyöntivirheiden varalta. Ota hook käyttöön komennolla chmod +x .git/hooks/pre-commit.
Jos hook palauttaa virheen, commit keskeytyy ja saat virheilmoituksen komentoriville.
Huomioita
- Asiakaspuolen hookit eivät siirry kloonauksen mukana, joten ne eivät yksin riitä tiimin sääntöjen valvontaan. Voit jakaa hookit projektissa ja ohjata Gitin hakemistoon komennolla
git config core.hooksPath .githooks. - Windowsissa skriptin on käytettävä koneella saatavilla olevaa tulkkia (esim. sh Git Bashin mukana).
- Hookit täydentävät CI-putkea kehittäjän koneella, mutta eivät korvaa sitä.
Lue lisää Gitin virallisesta hook-dokumentaatiosta ja Git-kirjan hook-luvusta.
