slogan3

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

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!