NOTA BENE: sono l'autore di gitchangelog di cui parlerò nel seguito.
TL; DR: potresti voler controllare il log delle modifiche di gitchangelog o l' output ASCII che ha generato il precedente.
Se vuoi generare un log delle modifiche dalla tua cronologia git, probabilmente dovrai considerare:
- il formato di output . (ASCII personalizzato puro, tipo di log delle modifiche Debian, Markdow, ReST ...)
- alcuni filtri di commit (probabilmente non vorrai vedere tutti gli errori di battitura o i cambiamenti estetici che entrano nel tuo registro delle modifiche)
- alcuni commettono il wrangling del testo prima di essere inclusi nel log delle modifiche. (Garantire la normalizzazione dei messaggi con la prima lettera maiuscola o un punto finale, ma potrebbe anche rimuovere alcuni markup speciali nel riepilogo)
- la tua cronologia git è compatibile ? La fusione, la codifica, non sono sempre così facilmente supportati dalla maggior parte degli strumenti. Dipende da come gestisci la tua cronologia.
Opzionalmente potresti volere un po 'di categorizzazione (cose nuove, modifiche, correzioni di bug) ...
Con tutto ciò in mente, ho creato e usato gitchangelog . Ha lo scopo di sfruttare una convenzione di messaggio git commit per raggiungere tutti gli obiettivi precedenti.
Avere una convenzione con i messaggi di commit è obbligatorio per creare un bel log delle modifiche (con o senza utilizzo gitchangelog
).
impegna convenzione messaggio
Di seguito sono riportati alcuni suggerimenti su cosa potrebbe essere utile pensare all'aggiunta nei messaggi di commit.
Potresti voler separare approssimativamente i tuoi commit in grandi sezioni:
- per intento (ad esempio: nuovo, correzione, modifica ...)
- per oggetto (ad esempio: doc, packaging, code ...)
- dal pubblico (ad esempio: sviluppatore, tester, utenti ...)
Inoltre, potresti voler taggare alcuni commit:
- come commit "minori" che non dovrebbero essere inviati al tuo log delle modifiche (modifiche cosmetiche, piccolo errore di battitura nei commenti ...)
- come "refattore" se in realtà non sono presenti modifiche significative alle funzioni. Pertanto, ciò non dovrebbe far parte del registro delle modifiche visualizzato all'utente finale, ad esempio, ma potrebbe essere di interesse se si dispone di un registro delle modifiche per gli sviluppatori.
- puoi anche taggare con "api" per contrassegnare le modifiche API o nuovi elementi API ...
- ...eccetera...
Prova a scrivere il tuo messaggio di commit indirizzando gli utenti (funzionalità) il più spesso possibile.
esempio
Questo è standard git log --oneline
per mostrare come queste informazioni potrebbero essere memorizzate:
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
Quindi, se hai notato, il formato che ho scelto è:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Per vedere un risultato di output effettivo, puoi guardare la fine della pagina PyPI di gitchangelog
Per vedere una documentazione completa della mia convenzione sul messaggio di commit puoi vedere il file di riferimento gitchangelog.rc.reference
Come generare un log delle modifiche squisito da questo
Quindi, è abbastanza facile creare un log delle modifiche completo. Potresti creare il tuo script abbastanza rapidamente o usarlo gitchangelog
.
gitchangelog
genererà un log delle modifiche completo (con supporto di sezionamento come New
, Fix
...) ed è ragionevolmente configurabile per le proprie convenzioni di impegno. Supporta qualsiasi tipo di uscita, grazie al templating attraverso Mustache
, Mako templating
e ha un motore predefinito legacy scritto in python crudo; tutti gli attuali 3 motori hanno esempi su come usarli e possono emettere il log delle modifiche come quello visualizzato nella pagina PyPI di gitchangelog.
Sono sicuro che so che ci sono un sacco di altri git log
per changelog
strumenti là fuori anche.
--graph
, che mostra visivamente su quali rami si trovano i commit.