Gå til innholdet

Pre-commit-hooks

Kommandoen archgate check --staged sjekker bare git-stagede filer mot ADR-reglene dine. Fordi den hopper over ustagede og usporede filer, kjører den raskt nok til å brukes som en pre-commit-hook uten å bremse arbeidsflyten din.

Når en sjekk feiler, blokkeres committen. Brudd skrives ut til stderr med filstier og linjenumre slik at du kan finne og fikse dem umiddelbart.

Lefthook er en rask, kryssplattform git-hooks-behandler. Legg til følgende i lefthook.yml:

lefthook.yml
pre-commit:
commands:
adr-check:
run: archgate check --staged

Installer hooken med:

Terminal window
lefthook install

Husky er et populært git-hooks-verktøy for Node.js-prosjekter. Legg til sjekken i pre-commit-hooken din:

.husky/pre-commit
archgate check --staged

Sørg for at hook-filen er kjørbar:

Terminal window
chmod +x .husky/pre-commit

Når archgate check --staged finner brudd, avslutter den med kode 1. Dette blokkerer committen. Utskriften inkluderer:

  • ADR-ID-en og regelnavnet som ble brutt
  • Filstien der bruddet ble funnet
  • Linjenummeret (når tilgjengelig)
  • En beskrivelse av hva regelen forventer

Fiks bruddene, stage filene på nytt med git add, og commit igjen.

--staged-flagget begrenser sjekker til bare filene i git-stageområdet. Dette betyr:

  • Et prosjekt med hundrevis av kildefiler, men bare tre stagede filer, vil bare sjekke de tre filene.
  • Regler som ikke matcher noen stagede filer, hoppes helt over.
  • Typiske pre-commit-sjekker fullføres på under et sekund.

Uten --staged skanner archgate check alle filer som matcher hver ADRs files-globmønster, noe som er nyttig for CI, men tregere for interaktiv bruk.

| Flagg | Formål | | ------------ | -------------------------------------------------------------------------------------------------------------------------- | | --staged | Sjekk bare git-stagede filer (påkrevd for pre-commit) | | --verbose | Vis beståtte regler og tidsinformasjon — nyttig for å feilsøke hvorfor en sjekk er treg eller hvilke regler som evalueres | | --json | Skriv ut resultater som JSON — nyttig for å pipe til andre verktøy eller egendefinerte rapporteringsskript | | --adr <id> | Sjekk bare regler fra en spesifikk ADR — nyttig for å isolere en enkelt regel under feilsøking | | --ci | Skriv ut GitHub Actions-annotasjoner — bruk dette i CI-arbeidsflyter i stedet for pre-commit-hooks |

Pre-commit-hooks kan kjøre flere kommandoer. For eksempel med Lefthook:

lefthook.yml
pre-commit:
commands:
lint:
run: npm run lint
typecheck:
run: npm run typecheck
adr-check:
run: archgate check --staged

Hver kommando kjører uavhengig. Hvis en kommando avslutter med en kode som ikke er null, blokkeres committen.