2010-11-08 6 views

Répondre

12

Il varie, bien sûr, mais un format très commun est quelque chose comme ceci (extrait de http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html, que je pense que ce sommes vraiment bien):

Short (50 chars or less) summary of changes 

More detailed explanatory text, if necessary. Wrap it to about 72 
characters or so. In some contexts, the first line is treated as the 
subject of an email and the rest of the text as the body. The blank 
line separating the summary from the body is critical (unless you omit 
the body entirely); tools like rebase can get confused if you run the 
two together. 

Further paragraphs come after blank lines. 

- Bullet points are okay, too 

- Typically a hyphen or asterisk is used for the bullet, preceded by a 
    single space, with blank lines in between, but conventions vary here 

Une chose qu'il ne traite pas quelque chose J'ai adopté pour moi-même, à savoir en utilisant des balises courtes au début de la première ligne pour identifier quel genre de commettre c'est. Cela peut être des balises comme [fix] pour une correction de bogue, [new] pour une nouvelle fonctionnalité ou [dev] pour un commit qui n'affecte que les internes. Avec une politique comme celle-là, il est facile d'autogénérer un changelog depuis les commits.

Edit: Voici un autre bon résumé, ce site même: In git, what are some good conventions to format multiple comments to a single commit

+1

Le préfixe le plus commun pour la première ligne est la partie du projet à laquelle la validation s'applique. Ce pourrait être un nom de fichier, un module, tout ce qui vous convient. Sinon, je pense que vous avez pratiquement couvert les suspects habituels! – Cascabel

+0

J'ai tendance à ne pas encombrer mon résumé avec des métadonnées (autres que des pointeurs de bugs). Commits bien écrits avec de bons résumés sont un bon début. vous pouvez toujours ajouter des balises près du bas du résumé pour décider si quelque chose est éligible pour les notes de mise à jour. Ensuite, j'ai mis ceux dans le tag réel et [générer mon journal des modifications] (http://dustin.github.com/2009/01/17/changelog.html) à partir de balises. :) – Dustin

1

Je ne recommanderais pas de grands messages. Si vous ne pouvez pas expliquer en une phrase ce que vous faites, votre engagement comporte trop de changements. Utilisez git rebase -i et divisez votre commit si vous avez déjà validé. Si vous n'avez pas encore validé les modifications, utilisez git add -p pour mettre en scène de petites parties et ensuite commettre comme des commits de plus petite taille.

Un historique des modifications granulaires comme celui-ci aidera les fusions et les rebases ultérieures. Il vous aidera également à établir un lien avec votre outil de suivi des problèmes. Si vous avez 2 tickets ou plus adressés, il sera plus difficile de déchiffrer quel ticket chaque changement dans le commit adressé.

+1

Les changements non-triviaux nécessitent souvent une explication substantielle, en particulier si l'on travaille sur un grand projet qui doit conserver la sémantique d'un document de spécification externe et/ou interne. J'ai dû écrire quatre messages de validation de paragraphe pour changer une seule macro dans la source de MPICH parce que j'ai dû expliquer le comportement standard de MPI ET la macro sémantique interne pour justifier le changement. Si je n'avais pas fait cela, un futur développeur perdrait énormément de temps à redécouvrir cette information. Je downvote si je pouvais ... – Jeff

+0

Merci, @Jeff. Le logiciel est un monde tellement vaste qu'il ne s'agit pas vraiment de règles mais de lignes directrices. Parfois, il est tout simplement impossible de les appliquer. –

+0

Je suis d'accord avec l'idée de commits atomiques (qui est pourquoi un généralement n'aime pas écrasant) mais je pense qu'il est préférable d'erreur de fournir plus de contexte que nécessaire plutôt que moins. Aussi, si le travail n'a pas été commis comme atomique commet je ne recommanderais pas de les casser après comme vous le suggérez. Cela augmente le risque de commettre un code incomplet. –