Un messaggio di commit git dovrebbe menzionare il file che è stato modificato?


50

Nella prima riga di un messaggio di commit git ho l'abitudine di menzionare il file che è stato modificato se una modifica non si estende su più file, ad esempio:

Add [somefunc] to [somefile] 

È una buona cosa da fare o non è necessario?

Risposte:


84

Gli strumenti di controllo della versione sono abbastanza potenti da consentire alla persona di vedere quali file sono stati modificati e quali metodi sono stati aggiunti. Significa che in generale i messaggi di registro che duplicano chiaramente ciò che già esiste stanno inquinando il registro.

Hai aggiunto il somefuncmetodo per soddisfare un requisito, ovvero:

  • per aggiungere una funzione,
  • per rimuovere un bug o
  • per riformattare il codice sorgente.

Ciò significa che i tuoi messaggi di log devono piuttosto spiegare quali funzionalità / bug sono stati interessati o qual è lo scopo del refactoring.


5
Dovrebbe anche parlare del perché . Quali altre opzioni hai preso in considerazione e perché hai scelto questa?
Jay Bazuzi,

2
Commento si impegna allo stesso modo in cui commenterei il codice, solo da una prospettiva di livello superiore (cioè meno informazioni, più riepilogo). Personalmente, lo divido a livello di file / modulo (in git) ma solo perché i commit sono economici in anticipo e mi piace essere in grado di leggere la storia come un libro. YMMV.
Evan Plaice,

1
Se per qualche motivo la persona commette contemporaneamente un mucchio di file che non sono correlati allo stesso bug, preferisco che elenchino i nomi dei file e l'id del bug prima dell'estate. Non ho bisogno di sapere file.cpp: aggiunto getMethod (), ma vorrei bug id # 10 file.cpp: riassunto decente qui. Se commettono un sacco di file che sono distribuiti su più segnalazioni di bug, tuttavia, parleremo, perché non mi piace molto. Preferirei che si impegnassero più volte. Uno per ogni problema che stanno risolvendo.
William,

@William: Inoltre, in caso di problemi con una correzione di bug, è possibile ripristinarlo con il minimo sforzo. Combina dieci correzioni di bug in un unico commit e questo può essere un problema serio.
David Thornley,

59

No. Esistono molti modi per esaminare il contenuto di un commit. Il commento dovrebbe descrivere lo scopo del commit.


30

Non dimenticare di aggiungere il BIGLIETTO / NUMERO DI EMISSIONE .

Se hai qualche funzione o sistema di tracciamento dei problemi con un ticket # o numero di emissione , assicurati di inserire quell'ID # nel commit. Questo aiuterà chiunque desideri saperne di più sulla funzione o sul problema su cui stavi lavorando.

Nel mio ultimo progetto, c'era una macro che è stata sviluppata per assicurarsi che le prime 7 cifre del commento fossero un numero di emissione valido da una missione chiara (il nostro sistema di tracciamento di problemi / funzionalità).


Come commetti un cambio di refactoring, allora?
Jules,

Il refactoring di @Jules ha un ticket # che non è mai finito
Caleth,

Una metodologia di @Jules è che il refactoring viene tracciato come un tipo di problema "chore" e quindi ha anche un numero di problema.
Scott McIntyre,

@ScottMcIntyre Anche se questo può essere vero, non sono convinto che sia una buona idea. Il refactoring viene spesso eseguito opportunisticamente, o come parte del processo di sviluppo del codice che si basa sul codice da refactoring. Come Fowler dice , "Planned refactoring è [...] un segno che la squadra non ha fatto abbastanza refactoring utilizzando gli altri flussi di lavoro". O più senza mezzi termini di Ron Jeffries: Refactoring - Non sul backlog! .
Jules,

3

Faccio quel tipo di cose quando commetto, ad esempio la correzione di un difetto che ha richiesto modifiche a più file. Questo rende un po 'più facile dire cosa è effettivamente cambiato senza guardare i singoli file nel changeset.

Per i changeset di un singolo file, questo non è necessario.

La prima riga è sempre una descrizione di alto livello del changeset, come un collegamento al difetto o alla user story.


3

Se sono informazioni rilevanti nella narrativa del messaggio di commit, allora sì, includerle. Se l'unica informazione è il nome file stesso, allora no.

Ad esempio, ciò ha senso: "Spostato la funzione build_foo () da fooutil.c a foobase.c, poiché la maggior parte dei programmi che vogliono usare build_foo () includono già foobase.c"

Questo non: "Aggiornato build_foo () in fooutil.c per prendere un parametro bar."


1

Voglio aggiungere una prospettiva diversa qui.

La mia risposta è Sì o No. Ma generalmente direi Sì.

Il controllo della versione è effettivamente abbastanza potente da sapere quale file viene aggiornato. Ma quando lo facciamo

$ git log

Vediamo solo il messaggio di commit. Questo è quello che fanno molte persone.

Guardando nel registro stesso. Aggiunge ulteriore contesto ad esso. Per esempio:

readme.md: Fix typo detected by language tool

È meglio di

Fix typo detected by language tool

Tuttavia, se le modifiche generano più file, almeno menziona il componente che viene modificato.

API: Fix reset password not sent email to user

Leggendolo, sappiamo che l'errore da correggere si trova nel componente API e probabilmente si trova nella directory API nella base di codice.

Potremmo comunque farlo

$ git show COMMIT_ID --name-only 

ma aggiunge più passaggi solo per ottenere i file.


0

L'unica volta che ho visto che ciò è utile per un singolo check-in di file è se hai apportato modifiche a una funzione utilizzata in molti punti all'interno del file con il risultato che il diff è disordinato. Anche allora metterei prima il tracker delle modifiche # e una descrizione in chiaro del cambiamento.


-1

Penso che la vera domanda qui sia quanto siano limitati i tuoi impegni? Se aspetti di eseguire il commit di una varietà di modifiche non correlate insieme in un unico commit, potresti sentire la necessità di specificare quali file sono stati modificati per quale scopo.

Tuttavia, se hai semplicemente eseguito commit più ristretti più frequentemente, un singolo commit spiegherebbe quali file sono stati modificati e potresti semplicemente descrivere quale fosse lo scopo nel messaggio.

Più impegni, più spesso. Questo è il modo in cui puoi evitare di essere così prolisso nei tuoi messaggi.


-2

Non dovrebbe

Tutti coloro che sono interessati possono vedere i cambiamenti in una storia

Inoltre, non è possibile in sistemi più grandi poiché molti file potrebbero essere generati automaticamente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.