Zinvolle commitberichten genereren uit diffs met OpenCommit
We kennen het allemaal: einde van de werkdag, een dozijn wijzigingen in vijf verschillende bestanden, vermoeidheid slaat toe, en nog zo'n meesterwerk als git commit -m "fix", wip 2 of refactor vliegt de repositorygeschiedenis in. Dan open je maanden later git log om uit te zoeken waarom autorisatie is gebroken, en zie je alleen een muur van eendelige berichten.
De auteur van OpenCommit besloot deze routine te automatiseren. Het project neemt je staged wijzigingen (staged changes), analyseert de code-diff met behulp van een taalmodel, en produceert een correcte, duidelijke beschrijving volgens de Conventional Commits-standaard.

Hoe het in de praktijk werkt
De tool installeert als een globaal CLI-pakket via npm. Je maakt wijzigingen aan je project, en in plaats van de gebruikelijke commit-commando roep je oco aan:
npm install -g opencommit
Vervolgens moet je een API-sleutel instellen. Standaard is het hulpprogramma geconfigureerd voor OpenAI-modellen (bijvoorbeeld gpt-4o-mini):
oco config set OCO_API_KEY=sk-...
Daarna is de workflow tot het uiterste vereenvoudigd. Je maakt wijzigingen aan bestanden en voert uit:
git add .
oco
Het oco-commando roept het model zelf aan, geeft de diff van wijzigingen door, en suggereert kant-en-klare tekst. Als alles er goed uitziet, druk je op Enter en wordt de commit aangemaakt. Als je handmatige bevestiging wilt overslaan, is er de vlag oco --yes.
Werken zonder code naar de cloud te sturen
Veel ontwikkelaars kunnen broncode niet naar servers van derden sturen vanwege beveiligingsvereisten of bedrijfsbeleid. OpenCommit heeft integratie met lokale runners hiervoor.
De tool kan communiceren met Ollama en llama.cpp. Voor lokaal werk hoef je alleen Ollama te starten met het gewenste model (bijvoorbeeld Llama 3 of Mistral) en de configuratie om te schakelen:
oco config set OCO_AI_PROVIDER='ollama' OCO_MODEL='llama3:8b'
Als de GPU-server op een aparte machine in het lokale netwerk staat, hoef je alleen het eindpuntadres op te geven:
oco config set OCO_API_URL='http://192.168.1.10:11434/api/chat'
Ditzelfde schema werkt voor llama.cpp door de ingebouwde HTTP-server llama-server te draaien.
Configureren voor teamstandaarden
OpenCommit heeft verschillende nuttige instellingen die gegenereerde berichten geschikt maken voor echte teamontwikkeling.
Conventional Commits en commitlint
Out-of-the-box genereert het hulpprogramma berichten in Conventional Commits-formaat (feat: ..., fix: ..., chore: ...). Als je repository al @commitlint geconfigureerd heeft, kun je het hulpprogramma overschakelen naar lokale linter-regels:
oco config set OCO_PROMPT_MODULE=@commitlint
Bij de eerste run maakt het commando een lokaal .opencommit-commitlint bestand aan, waaruit het model voorbeelden en beperkingen haalt voor tekstgeneratie.
Onnodige bestanden negeren
Duizenden regels gewijzigde lock-bestanden naar de prompt sturen is zinloos en kostbaar qua tokens. Bestanden *.lock en *-lock.* worden automatisch uitgesloten, en voor andere kun je .opencommitignore aanmaken:
path/to/large-asset.zip
**/*.jpg
dist/**
Sjablonen met ticketnummers
Vaak moet je het takenummer van Jira of GitHub Issues aan het begin van het bericht opnemen. Hiervoor is er sjabloonondersteuning via de placeholder $msg:
oco '#1042: $msg'
Het hulpprogramma zal de gegenereerde beschrijving op de plaats van $msg substitueren, waarbij het takenprefix onaangeroerd blijft.
Integratie met Git Hook
De meest handige manier om met OpenCommit te werken is door het te koppelen aan de prepare-commit-msg hook. Dan hoef je het oco-commando niet eens te onthouden.
De hook wordt ingeschakeld met:
oco hook set
Nu wanneer je git commit aanroept (of de commit-knop in de VS Code / WebStorm-interface indrukt), zal OpenCommit automatisch tekst genereren en in het invoervenster van de editor invoegen. Je kunt de formulering direct aanpassen als het model een belangrijk detail heeft gemist.
Nuances en beperkingen
Bij het gebruik van het hulpprogramma zijn er een paar zaken om in gedachten te houden:
- Diff-grootte. Als je honderden bestanden tegelijk hebt gewijzigd, kan de aanvraag de contextlimiet van het model raken of een te generieke beschrijving genereren. OpenCommit werkt het beste met kleine, atomaire commits.
- GitHub Action. De repository heeft een kant-en-klare action voor het automatisch repareren van commits bij het pushen naar een branch. Je moet hier voorzichtig mee zijn: de action voert een interactieve rebase uit, waarbij commit-SHA's worden herschreven. Dit scenario kan niet worden gebruikt voor gedeelde branches (
main,dev).
Wie heeft er profijt van
OpenCommit lost het probleem op van onzorgvuldig commitgeschiedenisbeheer in persoonlijke projecten en kleine teams. Als je te lui bent om handmatig commits te formatteren volgens richtlijnen, bespaart de tool enorm veel tijd.
De gemakkelijkste manier om te beginnen is met een globale installatie en lokale Ollama: zo kun je onmiddellijk de generatiekwaliteit testen op je repositories zonder uitgaven aan tokens.
Gerelateerde projecten