Cette semaine, focus sur l’open source avec un article de Louis-Antonin Lesieur, alumni O’clock, qui a créé un CLI pour des commits aux petits oignons !
Bonjour tout le monde !
Je suis Louis-Antonin Lesieur, j’ai 30 ans, je viens de Normandie et j’ai eu l’honneur de faire partie de la promotion Quinoa chez O’clock en 2024. Tout au long de ma formation chez O’clock, j’ai eu à coeur d’étendre ma culture dév. Je me suis renseigné sur tout un tas de bonnes pratiques et l’importance de « bien nommer ses commits » est arrivé assez rapidement sur la table. Aujourd’hui je suis ravi de vous présenter Navi, le petit assistant discret qui vous aidera à révolutionner vos commits !
L’importance des commits bien faits
C’est pendant ma formation de développeur web fullstack que j’ai fait la connaissance des commits, ces petits messages informatifs qui ont pour but de documenter votre code à des moments bien précis.
Les bons commits c’est comme du bon code : ça doit se lire tout seul, se comprendre au premier coup d’oeil.
On doit tout de suite comprendre de quoi il retourne. Tu comprendras, au gré des sessions de pair-programming, ou pendant l’Apothéose (NDLR: projet de fin de formation), ou pendant ton stage ou même lorsque tu intégreras une équipe en entreprise que si tout est propre, ta vie de dév sera grandement facilitée.
J’ai vite compris que je n’y étais pas du tout en relisant mes premiers commits comme « Étape 1
check », « Clean up », « Petites modications CSS ». En plus de pas être clair, ça donne autant
envie d’y jeter un oeil que regarder un épisode d’Inspecteur Derrick pendant qu’on a la grippe :
c’est nul 👎
Et oui, qui dit petits messages ne doit pas dire écrire n’importe comment. « Venez comme vous êtes »,« La mode à petits prix », « La patte de l’expert » sont autant d’exemples qui montrent qu’être concis, ça marque. Un commit doit faire la même chose : il doit être atomique.
Note de l’équipe pédagogique
Les messages de commit jouent un rôle clé dans la gestion d’un projet. Ils facilitent les revues de code, apportent du contexte aux changements et expliquent ce qui ne peut être décrit directement dans le code. Un bon message de commit, c’est aussi un précieux coup de pouce pour ceux qui reprendront le projet plus tard, leur permettant de suivre l’évolution du code sans avoir à deviner les intentions derrière chaque modification.
Navicommit, quésaco ?
Navicommit c’est le petit nom que j’ai donné à un outil CLI* qui ambitionne d’encourager tous les petits nouveaux développeurs(ses) (et pas que) à se familiariser avec la fabrication de jolis commits. Il se présente sous la forme d’un package NPM : c’est simple à installer, et c’est simple à utiliser. Le créateur de ce package a même eu la bonne idée de faire un README clair et concis pour l’expliquer !
NDLR: *Un outil CLI (Command Line Interface) est un programme utilisable via un terminal en ligne de commande, permettant d’exécuter des tâches rapidement sans interface graphique.
Comment installer Navicommit ?
Je te recommande d’installer Navicommit de manière globale pour une expérience fluide. De cette façon, Navicommit sera toujours disponible à ta demande, qu’importe dans quel projet tu te trouves.
`npm install -g navicommit`
Ceci fait, Navicommit est installé sur ton système !
Dans ton Terminal, tu peux l’appeler en écrivant `navi commit`, et il apparaîtra pour te filer un coup de main. C’est plutôt pas mal, et ça va réellement t’éviter de :
-
- devenir un serial-commiteur qui fait des commits affreux
-
- perdre un temps précieux à passer de ton IDE favori au navigateur ou à GPT pour savoir quoi écrire
-
- prendre de mauvaises habitudes
Quand utiliser Navicommit ?
Chez O’clock, on nous apprend les bonnes manières du développeur web.
Une modification dans ton code, quelque chose de nouveau ? Ça serait trop bête de le perdre, donc tu mets tout ça en staging avec `git add `. Ceci fait, et pour ne pas être perdu lorsque tu reviendras dessus, tu vas documenter cet ajout. Et c’est précisément LÀ que Navicommit intervient.
Comment ça marche ?
Navicommit va te demander de lui renseigner ce que tu ajoutes comme nouveauté(s) / modication(s) par le biais d’une liste :
Chaque proposition embarque un mot-clé. « feat », « x », « refactor », « style », « test », « docs » ou « chore ». Ces termes sont des termes conventionnels, c’est à dire que n’importe quel développeur sensibilisé aux bonnes pratiques comprendra au premier coup d’oeil ce sur quoi la modification porte.
Navicommit va ensuite te demander de fournir une description brève et concise de la modification apportée. Rappelle-toi qu’il faut être concis, sans pour autant être mystérieux (pas de « nouveau fichier contrôleur », on préférera « crée un nouveau contrôleur pour les articles »).
Et DE PRÉFÉRENCE (en fait, par obligation, je serai intransigeant, pardon) en anglais* !
Il ne te reste plus qu’à appuyer sur Entrée et hop, Navi te donne le commit qui va bien. Tu peux le
copier-coller dans ton Terminal et git se chargera du REST 🥁
Note de la pédagogie
*Certes, nous recommandons en règle générale l’utilisation de l’anglais, toutefois, ce qui est important c’est la cohérence linguistique. Elle est essentielle pour maintenir un historique de commits clair et homogène. Il est donc nécessaire de choisir une langue unique pour tous les messages de commit, en accord avec les commentaires de code et la langue par défaut du projet s’il est localisé.
Quelles technologies pour Navicommit ?
Pour créer Navicommit, j’ai choisi de rester très simple et de cibler mes besoins techniques. Ce n’est pas une usine à gaz, donc inutile d’embarquer une fusée Ariane dans le code. Chez O’clock, on nous apprend à devenir des développeurs responsables, alors qui dit responsable dit réfléchir avant de faire.
J’ai défini le MVP pour Navicommit, les besoins et cherché les solutions à ces besoins.
MVP de Navicommit : fournir des commits bien nommés pour se familiariser avec la bonne
pratique de leur rédaction.
Besoins : un outil pour lancer la commande, un outil pour acher une liste, quelques fonctions
pour orchestrer le tout.
Solutions : les packages commander et inquirer et note cher Javascript.
Si tu jettes un oeil au repo de Navicommit, tu verras que chaque fichier a une et une seule responsabilité. C’est important de bien découper ton code, de bien nommer tes fichiers et tes fonctions, car en cas de maintenance ou d’évolution du projet, ça sera plus simple de t’y retrouver (et accessoirement tu augmentes tes chances de péter moins de choses).
Pourquoi c’est important d’avoir des commit bien faits ?
Au moment d’entamer l’Apothéose (NDLR: projet de fin de formation), j’ai eu à coeur de m’occuper du back-end de l’application que nous avions à réaliser avec mon équipe. On m’en a confié le lead, et c’était très important pour moi que mes camarades puissent comprendre chaque étape de ce qui était réalisé.
À la suite de la présentation de notre projet, j’ai moi-même eu à retourner sur le repo, et force est de constater que des commits bien nommés, ça change vraiment tout. J’ai économisé beaucoup de minutes grâce à ces commits bien documentés !
« Comment j’ai fait déjà quand j’ai réglé le soucis qui empêchait le front d’acher la liste des utilisateurs ? » => chercher un commit qui commence par « x: ». Sans ça, j’aurais du parcourir aléatoirement les 273 commits 🥵 du repo en me basant sur je ne sais quel moyen mnémotechnique pour retrouver grosso-modo à quelle période j’avais bien pu faire ça…
Un commit bien nommé = un développeur heureux 😌
Navicommit est un petit outil CLI, il ne prend que peu de place et pourtant il peut réellement t’aider à acquérir une compétence très importante. Il convient parfaitement aux débutants qui souhaitent intégrer très tôt les bonnes pratiques dans leur workflow, et aux développeurs qui en ont assez de se faire tirer les oreilles pour des contributions dont le sens n’est pas clair pour cause de commit sauvage.
La suite pour le Capitaine Navi ?
Navi et moi n’en avons pas ni de vous aider dans votre mission pour vous hisser haut (Santiano) sur l’échelle des bonnes pratiques. La prochaine étape consistera à aller un peu plus loin en offrant la possibilité d’ajouter d’autres corps de messages au commit généré (parce que oui, on peut faire des commits qui ne soient pas que des titres, mais ça, c’est pour plus tard 🤫 ).
En attendant, jetez un oeil sur le repo de Navicommit.
Le package est dispo juste ici.
Si vous testez Navicommit et que vous avez une interrogation, une remarque ou une proposition,
je vous encourage à rejoindre la discussion.
Le mot de la fin
Je m’amuse également à coder quelques autres outils CLI qui peuvent t’être utiles pour la suite de tes aventures, n’hésite pas à les consulter ici.
Enfin, si tu veux discuter de tout et n’importe quoi, tu me trouveras sur LinkedIn.
Merci de m’avoir lu, merci à l’équipe de m’avoir proposé d’écrire ce petit article, et merci O’clock 🥰