Ontdek en Automatiseer Git Hooks voor Efficiënter Versiebeheer
description
Met deze prompt leer je hoe je Git hooks effectief kunt gebruiken om handmatige taken te automatiseren, fouten te verminderen en je ontwikkelproces te versnellen. Het helpt je om specifieke hooks te configureren die passen bij jouw project en team, waardoor je meer controle en consistentie krijgt dan met handmatige workflows.
prompt
Help me met het opzetten van Git hooks die passen bij mijn projecttype: <voer je projecttype in> en ontwikkelteam: <voer teamgr ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn voorbeelden van Git hooks voor jouw webapplicatie en klein ontwikkelteam, die automatisering en kwaliteitscontrole verbeteren. Deze hooks worden geplaatst in de `.git/hooks`-directory van je project.
**1. Pre-commit hook**
Voorkomt dat onnodige bestanden worden gecommit en voert codeformattering en linting uit.
```bash
#!/bin/sh
# .git/hooks/pre-commit
# Voorkom commit van tijdelijke of build-bestanden
if git diff --cached --name-only | grep -E '^(node_modules/|dist/|build/)'; then
echo "Fout: je probeert build- of node_modules-bestanden te committen."
exit 1
fi
# Voer linting (bijvoorbeeld ESLint voor JS)
echo "Linting code..."
npx eslint src/
if [ $? -ne 0 ]; then
echo "Linting faalde. Los de problemen op en probeer opnieuw."
exit 1
fi
# Voer code formatter (bijvoorbeeld Prettier)
echo "Formatteren code..."
npx prettier --write src/
git add src/
exit 0
```
**2. Commit-msg hook**
Controleert of het commitbericht aan bepaalde richtlijnen voldoet (bijvoorbeeld een JIRA-nummer of conventie).
```bash
#!/bin/sh
# .git/hooks/commit-msg
COMMIT_MSG_FILE=$1
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
# Voorbeeld: vereis dat commitbericht een ticketnummer bevat
if ! grep -qE '^(feat|fix|docs|style|refactor|test|chore)\(.+\): .+' "$COMMIT_MSG_FILE"; then
echo "Fout: commit-bericht voldoet niet aan de conventie."
echo "Gebruik bijvoorbeeld: feat(login): voeg inlogfunctie toe"
exit 1
fi
exit 0
```
**3. post-merge hook**
Automatiseert het installeren van dependencies en builden na een merge.
```bash
#!/bin/sh
# .git/hooks/post-merge
echo "Dependencies installeren..."
npm install
echo "Project builden..."
npm run build
# Eventueel: cache legen of andere taken
# npm run clean
exit 0
```
**Hoe te gebruiken:**
- Plaats deze scripts in de `.git/hooks/` directory van jullie repository.
- Maak ze uitvoerbaar met `chmod +x <bestandsnaam>`.
- Overweeg om ze te delen via een versiebeheersysteem door ze te plaatsen in een directory zoals `.githooks/` en symbolic links te maken, of gebruik tools zoals Husky om hooks te beheren.
Hiermee worden veelvoorkomende taken geautomatiseerd en blijft de codekwaliteit hoog.
provider: deepseek
model: deepseek-chat
Zeker! Hier zijn praktische Git hooks voor jullie webapplicatieproject met 3 ontwikkelaars:
## Pre-commit Hook (`.git/hooks/pre-commit`)
```bash
#!/bin/bash
# Syntax en code kwaliteit checks
echo "Running pre-commit checks..."
# TypeScript/JavaScript check (indien van toepassing)
if [ -f "tsconfig.json" ]; then
npx tsc --noEmit
if [ $? -ne 0 ]; then
echo "TypeScript compilation failed!"
exit 1
fi
fi
# ESLint check
if [ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ]; then
npx eslint --ext .js,.ts,.jsx,.tsx src/
if [ $? -ne 0 ]; then
echo "ESLint checks failed!"
exit 1
fi
fi
# Testen uitvoeren (optioneel, kan lang duren)
# npm test -- --passWithNoTests
echo "Pre-commit checks passed! ✓"
exit 0
```
## Commit-msg Hook (`.git/hooks/commit-msg`)
```bash
#!/bin/bash
# Commit message conventie enforcement
COMMIT_MSG_FILE=$1
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
# Pattern voor conventionele commits
PATTERN="^(feat|fix|docs|style|refactor|test|chore|perf)(\([a-z-]+\))?: .{1,50}"
if ! echo "$COMMIT_MSG" | grep -Eq "$PATTERN"; then
echo "Invalid commit message format!"
echo "Use: <type>(<scope>): <description>"
echo "Types: feat, fix, docs, style, refactor, test, chore, perf"
echo "Example: feat(auth): add login functionality"
exit 1
fi
# Max length check
if [ ${#COMMIT_MSG} -gt 100 ]; then
echo "Commit message too long (max 100 characters)"
exit 1
fi
exit 0
```
## Post-merge Hook (`.git/hooks/post-merge`)
```bash
#!/bin/bash
# Automatische acties na merge/pull
echo "Running post-merge tasks..."
# Dependency installatie bij package.json wijziging
if git diff --name-only HEAD@{1} HEAD | grep -q "package.json"; then
echo "package.json changed, installing dependencies..."
npm install
fi
# Environment setup check
if [ ! -f ".env" ] && [ -f ".env.example" ]; then
echo "Warning: .env file missing. Copying from .env.example..."
cp .env.example .env
fi
# Database migrations (indien van toepassing)
if [ -f "package.json" ] && grep -q "migrate" package.json; then
echo "Running database migrations..."
npx prisma migrate deploy # of jouw migratie commando
fi
# Cache clearing
echo "Clearing cache..."
rm -rf .next/ # Next.js
rm -rf dist/ # Build output
# of: npm run clean
echo "Post-merge tasks completed! ✓"
```
## Installatie en Setup
1. **Maak hooks aan**:
```bash
chmod +x .git/hooks/pre-commit
chmod +x .git/hooks/commit-msg
chmod +x .git/hooks/post-merge
```
2. **Team afspraken**:
- Spreek commit conventies af
- Zorg dat alle dependencies geïnstalleerd zijn
- Test de hooks lokaal voor implementatie
3. **Aanvullende tips**:
- Gebruik `husky` voor cross-platform compatibiliteit
- Voeg team-specifieke checks toe (bv. security scans)
- Log hook resultaten voor debugging
Deze hooks zorgen voor consistentie en kwaliteit in jullie ontwikkelproces!