Conventional & Atomic commits
by Joujou
08/10/2025
🚀
Pourquoi changer ? 🤔
by Joujou
- 08/10/2025
Pourquoi changer ? 🤔
Ce qu'on a aujourd'hui
- Commits pas clairs et trop gros
- Historique illisible
- Reverts impossibles
- Pas de cohérence
- Aucune structure
75d0bd4636 &1243 - fix: review njourdan
4c47d78dda &1243 - fix: review
076c43dee2 &1262 - #3287 - review front - ajustements
cb7dfc0b3f oups phpcs desoleeeeeby Joujou
- 08/10/2025
Pourquoi changer ? 🤔
Ce qu'on veut obtenir
- Chaque commit a un but clair et autonome
- Lecture rapide, homogène et automatisable
- Historique propre et filtrable
- Reverts sûrs et ciblés
43c89cd feat(review): add AI reply generation
a2b4c87 fix(review): prevent duplicate reply submissions
92f7b10 refactor(user): extract ACL logic into dedicated service
by Joujou
- 08/10/2025
🚀 L’objectif : des commits utiles pour les humains et pour Git.
Pourquoi changer ? 🤔
Ce qu'on veut obtenir
commit 43c89c feat(review): add AI reply generation
Le but de cette feature est d'ajouter la fonctionnalité de génération de réponse grâce à l'IA.
- Ajout d'un service pour générer une réponse en passant une review en paramètre.
- Ajout des traductions.
- Ajout d'un bouton sur la page d'un avis pour générer la réponse.
Le service de génération fait un appel à ChatGPT en passant au format CSV :
l'auteur, la note, la note maximal, l'enseigne, le magasin et le store qualifier.
La réponse demandée à ChatGPT est une chaine de caractère courte avec au maximum 380 caractères.
Il est possible de que le prompt ne soit pas optimal.
Epic: &1311
Closes: #3312by Joujou
- 08/10/2025
Deux principes
by Joujou
- 08/10/2025
☢️ Commit atomique
📓Conventional Commits
by Joujou
- 08/10/2025
☢️ Commit atomique
by Joujou
- 08/10/2025
☢️ Commit atomique
un commit = une intention unique et complète
- Ne doit concerner qu'un seul sujet (correction d'un bug, fonctionnalité, etc.)
- Ne doit pas rendre le projet incohérent (en échouant aux tests, en rendant la compilation impossible, etc.)
- Dois pouvoir être rollback sans casser le projet
💡 Atomique ≠ petit→il peut toucher plusieurs fichiers si tout sert une même intention
by Joujou
- 08/10/2025
☢️ Commit atomique
18a45dd Fixed type
d2f3dfb Fixed bug store
c4f6b47 Added store endpoint
438d4ed Fixed bug endpoint
42f67ef Removed comments
9ceb668 Added endpoints
917h8jl Added comments❌ Pas atomiques
On comprend rien
by Joujou
- 08/10/2025
☢️ Commit atomique
18a45dd Fixed type
d2f3dfb Fixed bug store
c4f6b47 Added store endpoint
438d4ed Fixed bug endpoint
42f67ef Removed comments
9ceb668 Added endpoints
917h8jl Added comments❌ Pas atomiques
917h8jl9ceb66842f67ef438d4edc4f6b47d3f3dfb18a45ddgit bisect
by Joujou
- 08/10/2025
☢️ Commit atomique
9ceb668 Added store exporter endpoint
917h8jl Added brand exporter endpont✅ Atomiques
Compréhensible et on peut rollback facilement
by Joujou
- 08/10/2025
☢️ Commit atomique
18a45dd Fixed review section on Store Locator
d2f3dfb Added MakerBundle
c4f6b47 Replaced oldSoundRabbitMQ by Messenger
438d4ed Added AI reply generation
42f67ef Fixed authentication form
9ceb668 Added store exporter endpoint
917h8jl Added brand exporter endpoint✅ Atomiques
917h8jl9ceb66842f67ef438d4edc4f6b47d3f3dfb18a45ddgit bisect
by Joujou
- 08/10/2025
☢️ Commit atomique
Les questions à se poser
Quelle est l'intention de mon commit ?
Est-ce qu'il correspond à une unité logique ?
Casse-t-il le projet s'il est isolé ?
Est-il possible de revert ce changement seul ?
by Joujou
- 08/10/2025
☢️ Commit atomique
Exemple
- Migration Doctrine
- Ajout d'une action dans ReviewController
- Ajout d'un service AIReplyGenerator
- Ajout des traductions
- Modification du formulaire de réponse à un avis
une seule unité logique = un seul commit
by Joujou
- 08/10/2025
☢️ Commit atomique
un commit = un changement qu'on peut lire, tester et revert seul
by Joujou
- 08/10/2025
📓Conventional Commits
by Joujou
- 08/10/2025
📓Conventional Commits
🎯 Objectif
- Lisible, compréhensible et cohérent
- Contrat entre le developpement et le répositorie
- Automatisable (changelogs, CI, versionning, etc.)
by Joujou
- 08/10/2025
📓Conventional Commits
📑 Structure
<type>(<scope>): <titre>
<body>
Epic: &<numéro>
Closes: #<numéro>Type : Quoi ?
Scope : Où ?
Body : Pourquoi ?
Footer : Epic / tickets
by Joujou
- 08/10/2025
📓Conventional Commits
📑 Structure
| Type | Description | Exemple |
|---|---|---|
| feat | Nouvelle fonctionnalité | feat(review): add reply system |
| fix | Correction de bug | fix(auth): handle null password |
| docs | Documentation uniquement | docs(api): add usage examples |
| style | Formatage sans logique métier | style(css): fix spacing in header |
| refactor | Amélioration du code sans changement fonctionnel | refactor(service): simplify email validation |
| test | Ajout ou modif de tests | test(review): add reply service tests |
| chore | Tâches diverses (config, dépendances, CI) | chore(ci): update node version |
| perf | Amélioration des performances | perf(cache): optimize query loading |
| wip | Travail en cours (toléré sur branches perso uniquement) | wip(review): initial form setup |
Types
by Joujou
- 08/10/2025
📓Conventional Commits
📑 Structure
Scopes
- Ajoute du contexte additionnel au type
- Correspond au domaine / module / etc.
Exemple : auth, review, store, api, etc.
by Joujou
- 08/10/2025
📓Conventional Commits
📑 Structure
Body
- Explications des changements :
- Quoi ?
- Où ?
- Comment ?
- Pourquoi ?
- Contexte
💡En lisant le body, on doit comprendre ce que fait le commit et comment
by Joujou
- 08/10/2025
📓Conventional Commits
📑 Structure
Footer
- Liens vers gitlab (tickets, epics, etc.)
- Trigger les actions gitlab (closes, etc.)
- Mentionne s'il y a un BREAKING CHANGE
by Joujou
- 08/10/2025
📓Conventional Commits
Exemple
commit 43c89c feat(review): add AI reply generation
Le but de cette feature est d'ajouter la fonctionnalité de génération de réponse grâce à l'IA.
- Ajout d'un service pour générer une réponse en passant une review en paramètre.
- Ajout des traductions.
- Ajout d'un bouton sur la page d'un avis pour générer la réponse.
Le service de génération fait un appel à ChatGPT en passant au format CSV :
l'auteur, la note, la note maximal, l'enseigne, le magasin et le store qualifier.
La réponse demandée à ChatGPT est une chaine de caractère courte avec au maximum 380 caractères.
Il est possible de que le prompt ne soit pas optimal.
Epic: &1311
Closes: #3312by Joujou
- 08/10/2025
Conclusion
🧠 À retenir
- Commits atomiques→une unité logique par commit
- Conventional commits→format clair et traçable
🚀 Bénéfices
- Historique lisible et exploitable
- Revert et review plus simples
- Cohérence d'équipe et meilleure qualité
- Automatisation CI/CD
by Joujou
- 08/10/2025
Conclusion
🛠️ Mise en place
- Ajout d'une documentation dans le projet ✅
- Période de rodage 📅
- Installation de Husky + Commitlint ⚙️
- Mise en place de la CI ⚙️
💬 De bons commits racontent notre travail, ils sont le lien entre le code, le métier et l’équipe.
by Joujou
- 08/10/2025
💬 Questions ?
Conventional & Atomic commits
By Nicolas Jourdan
Conventional & Atomic commits
- 31