Des commits atomiques ⚛️
Par Maxime Bréhin • Publié le 10 juin 2022 • 2 min

La qualité des commits est souvent prise à la légère, voire négligée. Pourtant la création de commits dits « atomiques » ⚛️ bénéficie grandement aux projets et à leurs participants. Je t’explique ici ce qu’on entend par « atomique » et quels sont les bénéfices ?

Cet article fait partie de notre série sur le glossaire Git.

Tu préfères une vidéo ?

Si tu es du genre à préférer regarder que lire pour apprendre, on a pensé à toi :

C’est d’la bombe bébé !

Le terme atomique est utilisé ici non pas pour décrire des commits qui feraient exploser notre historique 🤯 mais plutôt l’inverse, à savoir faciliter sa cohérence.

Si on s’en réfère à sa définition Wikipedia, un commit atomique est une opération qui applique un ensemble de changements distincts en une seule opération.

Avec mes mots ça donnerait : un commit atomique représente un ensemble de travail cohérent s’intéressant à un aspect particulier du projet découpé le plus finement possible. Autrement dit, si ta méthode de gestion de projet t’encourage à définir en amont les tâches les plus petites possibles, tu peux considérer que chacune des tâches doit être représentée par un commit.

Les solutions comme GitHub, GitLab, BitBucket et bien d’autres encouragent d’ailleurs ce principe en permettant certaines automatisations entre leur gestion de tickets/issues et nos commits (principalement l’insertion des références des commits et la fermeture automatique de tickets).

Bénéfices

Comme je l’ai énoncé plus haut, les bénéfices sont multiples :

  • l’historique (log) du projet gagne en lisiblité (couplé au bon nommage des commits) ;
  • le réemploi d’un aspect du projet d’un endroit à un autre est facilité (exemple du report de correctif via le cherry-picking, sorte de copier/coller de commit) ;
  • l’analyse du contenu du commit est plus simple et efficace (contrairement à des commits « fourre-tout ») ;
  • la fréquence des commits est plus importante, donnant le sentiment d’un accomplissement plus régulier (il ne faut pas négliger l’aspect psychologique) et permettant un suivi projet efficace.

Parfois « l’effort » fourni pour la bonne mise en œuvre des commits atomiques aura un effet bénéfique sur la méthodologie projet et le management : la mécanique mentale de découpe des aspect au plus près du code sera exploitée en amont, lors de la découpe des tâches à réaliser en réunion d’équipe.

Un exemple simple

Prenons l’exemple d’un projet où je dois afficher un texte à l’utilisateur qui aura plusieurs déclinaisons selon un nombre count passé en paramètre :

  • si count = 0, j’affiche Aucune tâche réalisée
  • si count = 1, j’affiche Une tâche réalisée
  • si count > 0, j’affiche ${count} tâches réalisées

Mon travail va se décliner sous la forme de sous-tâches, chacune représentée par un commit identifiable :

  • création d’une fonction utilitaire de pluralisation et de ses tests ;
  • création et affichage du texte faisant l’appel à cette fonction utilitaire.

Ainsi même sur un sujet en apparence simple, on voit qu’on peut découper en sous-aspects. Le premier commit, celui intégrant la fonction utilitaire, pourra facilement être extrait et exploité ailleurs, sans embarquer la gestion de l’affichage du texte.

Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !