Un message git commit doit-il mentionner le fichier qui a été modifié?


50

Dans la première ligne d'un message de validation git, j'ai l'habitude de mentionner le fichier modifié si une modification ne s'étend pas sur plusieurs fichiers, par exemple:

Add [somefunc] to [somefile] 

Est-ce une bonne chose à faire ou est-ce inutile?

Réponses:


84

Les outils de contrôle de version sont suffisamment puissants pour permettre à la personne de voir quels fichiers ont été modifiés et quelles méthodes ont été ajoutées. Cela signifie qu'en général, les messages de journal qui dupliquent clairement ce qui existe déjà polluent le journal.

Vous avez ajouté une somefuncméthode pour remplir une exigence, à savoir:

  • ajouter une fonctionnalité,
  • supprimer un bug ou
  • refactoriser le code source.

Cela signifie que vos messages de journal doivent plutôt expliquer quelles fonctionnalités / quels bugs ont été affectés ou quel était l'objectif du refactoring.


5
Il devrait aussi parler de pourquoi . Quelles autres options avez-vous envisagées et pourquoi avez-vous choisi celle-ci?
Jay Bazuzi

2
Je commente les commits de la même manière que le code de commentaire, mais dans une perspective de niveau supérieur (c.-à-d. Moins d'informations, plus de résumé). Personnellement, je le décompose au niveau fichier / module (dans git) mais uniquement parce que les commits sont peu coûteux et que j'aime pouvoir lire l'histoire comme un livre. YMMV.
Evan Plaice

1
Si, pour une raison quelconque, la personne commet plusieurs fichiers à la fois qui ne sont pas liés au même bogue, je préfère qu'ils énumèrent les noms de fichiers et l'identifiant du bogue avant le résumé. Je n'ai pas besoin de savoir fichier.cpp: ajouté à getMethod (), mais j'aimerais connaître l'ID de bogue n ° 10 fichier.cpp: un résumé correct ici. S'ils commettent une série de fichiers répartis sur plusieurs rapports de bogue, nous en discuterons, car je n'aime pas vraiment cela. Je préférerais de beaucoup qu'ils fassent plusieurs commits. Un pour chaque problème qu'ils résolvent.
William

@ William: De plus, s'il y a un problème avec une correction de bogue, il est possible de l'inverser en toute simplicité. Combinez dix correctifs dans un commit, ce qui peut poser un problème sérieux.
David Thornley

59

Non. Il existe de nombreuses façons d’examiner le contenu d’un commit. Le commentaire devrait décrire le but du commit.


30

N'oubliez pas d'ajouter TICKET / NUMÉRO D'ÉDITION .

Si vous avez une fonctionnalité ou un système de suivi de problème avec un numéro de ticket ou un numéro de problème , assurez-vous de mettre ce numéro d’identification dans la validation. Cela aidera tous ceux qui souhaitent en savoir plus sur la fonctionnalité ou le problème sur lequel vous travailliez.

Dans mon dernier projet, une macro avait été mise au point pour s’assurer que les 7 premiers chiffres du commentaire étaient un numéro correct issu d’une quête claire (notre système de suivi des problèmes / fonctionnalités).


Comment commettez-vous un changement de refactoring, alors?
Jules

@Jules Refactoring a un ticket # qui n'est jamais fini
Caleth 10/06/2016

Une des méthodes de @Jules est que le refactoring est suivi comme un problème de type "corvée" et qu'il comporte donc également un numéro.
Scott McIntyre

@ScottMcIntyre Bien que cela puisse être vrai, je ne suis pas convaincu que ce soit une bonne idée. Il est souvent préférable de refactoriser de manière opportuniste ou dans le cadre du processus de développement de code reposant sur le code à refactoriser. Comme Fowler met , « refactoring prévu est [...] un signe que l'équipe n'a pas fait assez refactoring en utilisant les autres flux de travail ». Ou plus simplement par Ron Jeffries: Refactoring - Pas sur l'arriéré! .
Jules

3

Je fais ce genre de chose lorsque je commets, par exemple, le correctif pour un défaut nécessitant des modifications de plusieurs fichiers. Cela rend un peu plus facile de dire ce qui a réellement changé sans regarder les fichiers individuels dans le changeset.

Cela n'est pas nécessaire pour les modifications d'un seul fichier.

La première ligne est toujours une description de haut niveau du changeset, par exemple un lien vers le défaut ou la user story.


3

S'il s'agit d'informations pertinentes dans le récit du message de validation, alors oui, incluez-les. Si la seule information est le nom du fichier lui-même, alors non.

Par exemple, cela a du sens: "Déplacé la fonction build_foo () de fooutil.c à foobase.c, car la plupart des programmes qui souhaitent utiliser build_foo () incluent déjà foobase.c"

Celui-ci ne: "Mis à jour le build_foo () dans fooutil.c pour prendre un paramètre de barre."


1

Je veux ajouter une perspective différente ici.

Ma réponse est oui ou non, mais en général je dirais oui.

Le contrôle de version est en effet assez puissant pour savoir quel fichier est mis à jour. Mais quand on fait

$ git log

Nous ne voyons que le message commit. C'est ce que font la plupart des gens.

En regardant dans le journal lui-même. Cela ajoute un contexte supplémentaire. Par exemple:

readme.md: Fix typo detected by language tool

Est mieux que

Fix typo detected by language tool

Toutefois, si les modifications génèrent plusieurs fichiers, mentionnez au moins le composant en cours de modification.

API: Fix reset password not sent email to user

En le lisant, nous savons que l'erreur corrigée se produit au niveau du composant API et probablement dans le répertoire API au niveau de la base de code.

Nous pourrions cependant faire

$ git show COMMIT_ID --name-only 

mais cela ajoute plus d’étape juste pour récupérer les fichiers.


0

La seule fois où j'ai pu constater que cela était utile pour l'archivage d'un fichier unique, c'est si vous avez modifié une fonction utilisée à de nombreux endroits dans le fichier, ce qui a pour résultat que le fichier diff est encombré. Même alors, je mettrais en premier le numéro de suivi des modifications et une description en texte clair des modifications.


-1

Je pense que la vraie question est de savoir quelle est la portée de vos commits. Si vous attendez la validation de diverses modifications non liées dans une validation, vous pourriez alors ressentir le besoin de spécifier quels fichiers ont été modifiés et dans quel but.

Toutefois, si vous faites simplement des commits plus étroits plus fréquemment, un seul commet vous expliquera quels fichiers ont été modifiés et vous pouvez simplement décrire l'objectif de ce message.

Plus commet, plus souvent. C'est la façon dont vous pouvez éviter d'être aussi prolixe dans vos messages.


-2

Il ne devrait pas

Tous ceux qui sont intéressés peuvent voir les changements dans une histoire

Cela n'est également pas faisable dans les grands systèmes, car de nombreux fichiers peuvent être générés automatiquement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.