AVISO LEGAL: Eu sou o autor do gitchangelog do qual falarei a seguir.
TL; DR: convém verificar o próprio changelog do gitchangelog ou a saída ascii que gerou a anterior.
Se você deseja gerar um log de alterações a partir do seu histórico do git, provavelmente precisará considerar:
- o formato de saída . (ASCII personalizado puro, tipo de registro de alterações Debian, Markdow, ReST ...)
- alguns filtros de confirmação (você provavelmente não deseja ver todas as alterações de digitação ou cosméticas entrando no seu registro de alterações)
- alguns confirmam a disputa de texto antes de serem incluídos no changelog. (Garantir a normalização das mensagens como tendo uma primeira letra maiúscula ou um ponto final, mas isso também pode estar removendo algumas marcações especiais no resumo)
- seu histórico do git é compatível ? Mesclar, etiquetar nem sempre é tão facilmente suportado pela maioria das ferramentas. Depende de como você gerencia seu histórico.
Opcionalmente, você pode querer alguma categorização (coisas novas, alterações, correções) ...
Com tudo isso em mente, eu criei e usei o gitchangelog . Ele visa alavancar uma convenção de mensagens de confirmação do git para atingir todos os objetivos anteriores.
Ter uma convenção de mensagem de confirmação é obrigatório para criar um bom registro de alterações (com ou sem o uso gitchangelog
).
confirmar convenção de mensagem
A seguir, sugestões para o que pode ser útil pensar em adicionar suas mensagens de confirmação.
Convém separar aproximadamente seus commits em grandes seções:
- por intenção (por exemplo: novo, corrigir, alterar ...)
- por objeto (por exemplo: doc, embalagem, código ...)
- por público (por exemplo: desenvolvedor, testador, usuários ...)
Além disso, você pode marcar algumas confirmações:
- como confirmações "menores" que não devem ser exibidas no seu log de alterações (alterações cosméticas, pequenos erros de digitação nos comentários ...)
- como "refatorar" se você realmente não tiver nenhuma alteração significativa de recurso. Portanto, isso também não deve fazer parte do log de alterações exibido ao usuário final, por exemplo, mas pode ser de algum interesse se você tiver um log de alterações do desenvolvedor.
- você também pode marcar "api" para marcar alterações na API ou novos itens da API ...
- ... etc ...
Tente escrever sua mensagem de confirmação direcionando os usuários (funcionalidade) o mais rápido possível.
exemplo
Isso é padrão git log --oneline
para mostrar como essas informações podem ser armazenadas:
* 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
Então, se você percebeu, o formato que eu escolhi é:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Para ver um resultado de saída real, você pode olhar o final da página PyPI de gitchangelog
Para ver uma documentação completa da minha convenção de mensagens de confirmação, você pode ver o arquivo de referência gitchangelog.rc.reference
Como gerar um excelente log de alterações a partir disso
Então, é muito fácil criar um registro de alterações completo. Você pode criar seu próprio script rapidamente, ou usargitchangelog
.
gitchangelog
irá gerar um changelog completo (com suporte a seções como New
, Fix
...) e é razoavelmente configurável para suas próprias convenções de confirmação. Ele suporta qualquer tipo de saída, graças a templates através Mustache
, Mako templating
e tem um motor padrão legado escrito em python matéria; todos os três mecanismos atuais têm exemplos de como usá-los e podem gerar changelogs como o exibido na página PyPI do gitchangelog.
Eu estou certo que você sabe que há uma abundância de outros git log
para changelog
ferramentas lá fora também.
--graph
, que mostra visualmente em quais ramificações as confirmações estão.