Générer des messages de commit significatifs à partir de diffs avec OpenCommit
Nous sommes tous passés par là : fin de journée, une douzaine de modifications dans cinq fichiers différents, la fatigue s'installe, et un autre chef-d'œuvre du genre git commit -m "fix", wip 2 ou refactor s'envole dans l'historique du dépôt. Puis quelques mois plus tard, vous ouvrez git log pour comprendre pourquoi l'autorisation a cessé de fonctionner, et vous vous retrouvez face à un mur de lignes uniques.
L'auteur d'OpenCommit a décidé d'automatiser cette routine. Le projet prend vos modifications staged (staged changes), analyse le diff du code avec un modèle de langage, et produit une description claire et appropriée suivant le standard Conventional Commits.

Comment ça marche en pratique
L'outil s'installe en tant que package CLI global via npm. Vous effectuez des modifications dans votre projet, et au lieu de la commande commit habituelle, vous appelez oco :
npm install -g opencommit
Ensuite, vous devez configurer une clé API. Par défaut, l'utilitaire est configuré pour les modèles OpenAI (par exemple, gpt-4o-mini) :
oco config set OCO_API_KEY=sk-...
Après cela, le flux de travail est simplifié à l'extrême. Vous modifiez les fichiers et exécutez :
git add .
oco
La commande oco appellera elle-même le modèle, lui transmettra le diff des modifications, et suggérera un texte prêt à l'emploi. Si tout semble correct, vous appuyez sur Entrée et le commit est créé. Si vous souhaitez passer la confirmation manuelle, il existe le flag oco --yes.
Travailler sans envoyer de code dans le cloud
De nombreux développeurs ne peuvent pas envoyer de code source vers des serveurs tiers pour des raisons de sécurité ou des politiques d'entreprise. OpenCommit dispose d'une intégration avec des runners locaux pour cela.
L'outil peut communiquer avec Ollama et llama.cpp. Pour le travail local, vous devez simplement lancer Ollama avec le modèle requis (par exemple, Llama 3 ou Mistral) et modifier la configuration :
oco config set OCO_AI_PROVIDER='ollama' OCO_MODEL='llama3:8b'
Si le serveur GPU se trouve sur une machine séparée du réseau local, vous devez simplement spécifier l'adresse de l'endpoint :
oco config set OCO_API_URL='http://192.168.1.10:11434/api/chat'
Le même schéma fonctionne pour llama.cpp en exécutant le serveur HTTP intégré llama-server.
Configurer pour les standards de l'équipe
OpenCommit propose plusieurs paramètres utiles qui rendent les messages générés adaptés au développement réel en équipe.
Conventional Commits et commitlint
Par défaut, l'utilitaire génère des messages au format Conventional Commits (feat: ..., fix: ..., chore: ...). Si votre dépôt a déjà @commitlint configuré, vous pouvez basculer l'utilitaire pour utiliser les règles du linter local :
oco config set OCO_PROMPT_MODULE=@commitlint
Lors de la première exécution, la commande créera un fichier local .opencommit-commitlint, à partir duquel le modèle prendra des exemples et des contraintes pour la génération de texte.
Ignorer les fichiers inutiles
Envoyer des milliers de lignes de fichiers lock modifiés au prompt est inutile et coûteux en termes de tokens. Les fichiers *.lock et *-lock.* sont exclus automatiquement, et pour les autres, vous pouvez créer .opencommitignore :
path/to/large-asset.zip
**/*.jpg
dist/**
Modèles avec les numéros de tickets
Il est souvent nécessaire d'inclure le numéro de tâche de Jira ou GitHub Issues au début du message. Pour cela, il existe le support des templates via le placeholder $msg :
oco '#1042: $msg'
L'utilitaire substituera la description générée à la place de $msg, en laissant le préfixe de la tâche intact.
Intégration avec Git Hook
La façon la plus pratique de travailler avec OpenCommit est de l'accrocher au hook prepare-commit-msg. Vous n'aurez alors même plus besoin de vous souvenir de la commande oco.
Le hook est activé avec :
oco hook set
Maintenant, quand vous appelez git commit (ou appuyez sur le bouton commit dans l'interface VS Code / WebStorm), OpenCommit générera automatiquement le texte et l'insérera dans la fenêtre de saisie de l'éditeur. Vous pourrez ajuster la formulation immédiatement si le modèle a manqué un détail important.
Nuances et limitations
Lors de l'utilisation de l'utilitaire, il y a quelques points à garder à l'esprit :
- Taille du diff. Si vous avez modifié des centaines de fichiers à la fois, la requête peut atteindre la limite de contexte du modèle ou générer une description trop générique. OpenCommit fonctionne mieux avec des commits petits et atomiques.
- GitHub Action. Le dépôt dispose d'une action prête à l'emploi pour corriger automatiquement les commits lors du push vers une branche. Vous devez être prudent avec ceci : l'action effectue un rebase interactif, réécrivant les SHAs des commits. Ce scénario ne peut pas être utilisé pour les branches partagées (
main,dev).
À qui cela sera utile
OpenCommit résout le problème de la gestion négligée de l'historique des commits dans les projets personnels et les petites équipes. Si vous êtes trop paresseux pour formater manuellement les commits selon les directives, l'outil fait gagner beaucoup de temps.
Le moyen le plus simple de commencer est avec une installation globale et Ollama local : vous pourrez ainsi tester immédiatement la qualité de la génération sur vos dépôts sans dépenser en tokens.
Projets similaires