DevOps-bootcamp · Lektion

Pre-commit- och post-merge-hooks

Implementera praktiska exempel på pre-commit-hooks för lintning och post-merge-hooks för aviseringar.

Lektion 2 av 412 steg

Pre-commit- och post-merge-hooks är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Introduktion till praktiska Git-hookar

I den föregående lektionen lärde ni er om Git-hookar och deras olika typer. Nu blir det praktiskt!

Vi ska gå igenom hur två kraftfulla hookar implementeras: pre-commit och post-merge. Med dem kan ni automatisera kontroller före en commit och åtgärder efter en merge.

Pre-commit: Er kvalitetsgrind

Hooken pre-commit körs före en commit-åtgärd, men efter att ni har använt git add för att stage:a era ändringar.

  • Den passar perfekt för att upprätthålla kodkvalitet och kodstil.
  • Ni kan använda den för att köra linters, stilkontroller eller till och med grundläggande enhetstester.
  • Om skriptet avslutas med en status som inte är noll avbryts committen automatiskt.

På så sätt säkerställs att endast kod av hög kvalitet som följer reglerna läggs in i ert arkiv.

Konfigurera en pre-commit-hook

För att skapa en pre-commit-hook behöver ni skapa en körbar fil med namnet pre-commit i projektets katalog .git/hooks/.

Git tillhandahåller exempel på hookar med tillägget .sample. Ta bort tillägget och lägg till ert eget skript.

Kom ihåg att göra filen körbar med: chmod +x .git/hooks/pre-commit

Exempel: Förhindra commits med 'TODO'

Låt oss skapa en enkel pre-commit-hook som hindrar er från att committa filer som fortfarande innehåller ordet "TODO". Det är vanligt att göra så för att säkerställa att inga ofärdiga uppgifter råkar följa med in i kodbasen.

Skriptet kontrollerar alla stage:ade filer efter det här nyckelordet. Om det hittas stoppas committen.

Pre-commit-hook: Inga TODO-kommentarer!

Här är ett enkelt shellskript för filen .git/hooks/pre-commit. Det kontrollerar stage:ade .txt-filer efter ordet "TODO".

Steg:

  1. Skapa .git/hooks/pre-commit
  2. Klistra in den här koden
  3. Kör chmod +x .git/hooks/pre-commit
#!/bin/sh

# Check staged .txt files for "TODO"
for file in $(git diff --cached --name-only --diff-filter=ACM | grep '\.txt$'); do
  if grep -q "TODO" "$file"; then
    echo "ERROR: Found 'TODO' in staged file: $file"
    echo "Please remove TODOs before committing."
    exit 1
  fi
done

exit 0

Testa er pre-commit-hook

För att testa den här hooken skapar ni först en fil (till exempel test.txt) och lägger till "TODO: Finish this" i den. Försök sedan att committa den:

git add test.txt
git commit -m "Add test file"

Committen bör avbrytas, och ni får se felmeddelandet från er hook. Ta bort "TODO" från test.txt, så lyckas committen!

Post-merge: Automatisera efter merger

Hooken post-merge körs automatiskt efter att kommandot git merge har slutförts utan fel.

  • Den är användbar för integreringsuppgifter som bör utföras efter att kod har slagits samman.
  • Exempel är att avisera teammedlemmar, uppdatera projektberoenden (till exempel npm install) eller köra ett byggskript.
  • Till skillnad från pre-commit påverkar den här hooken inte resultatet av mergingen.

Det är ett utmärkt sätt att automatisera processer efter en merge.

Konfigurera en post-merge-hook

Precis som med pre-commit skapar ni en fil med namnet post-merge i katalogen .git/hooks/.

Kontrollera återigen att den är körbar:

chmod +x .git/hooks/post-merge

Det här skriptet körs sedan varje gång en merge slutförs i ert arkiv.

Exempel: Avisering när en merge är klar

Låt oss skapa en post-merge-hook som helt enkelt skriver ut ett meddelande i konsolen för att bekräfta att en merge precis har genomförts. I ett verkligt scenario skulle den kunna starta en CI/CD-pipeline eller skicka en avisering till en chattapplikation.

Post-merge-hook: Avisering

Här är ett enkelt shellskript för filen .git/hooks/post-merge. Det skriver ut ett bekräftelsemeddelande.

Steg:

  1. Skapa .git/hooks/post-merge
  2. Klistra in den här koden
  3. Kör chmod +x .git/hooks/post-merge
#!/bin/sh

# This hook runs after a merge operation.
echo "--- Post-merge hook triggered ---"
echo "A merge has just completed in your repository."
echo "You might want to run 'npm install' or 'bundle install' now."
echo "---------------------------------"

exit 0

Hookkontroll: Pre-commit kontra post-merge

Vilken av följande uppgifter skulle vanligtvis hanteras av en pre-commit-hook?

Sammanfattning: Hookar i praktiken

Bra jobbat! I den här lektionen har ni lärt er att implementera praktiska Git-hookar.

  • Pre-commit-hookar fungerar som en kvalitetsgrind och kör kontroller som linting eller tester *före* en commit.
  • Post-merge-hookar automatiserar åtgärder *efter* en merge, till exempel aviseringar eller uppdateringar av beroenden.

De här hookarna är kraftfulla verktyg för att upprätthålla standarder och automatisera arbetsflöden i ert Git-arkiv. Fortsätt utforska andra hooktyper för att anpassa er Git-upplevelse ytterligare!

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Pre-commit- och post-merge-hooks” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Pre-commit- och post-merge-hooks”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Pre-commit- och post-merge-hooks”?

Implementera praktiska exempel på pre-commit-hooks för lintning och post-merge-hooks för aviseringar. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Pre-commit- och post-merge-hooks”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Förstå Git Hooks
  2. Pre-commit- och post-merge-hooks
  3. Anpassa Git-konfigurationen
  4. Dela hooks med Husky
← Tillbaka till DevOps-bootcamp