Durante um apoio a projeto me deparei com o seguinte cenário quando acessei git log:
|
|
A situação do histórico era tão caótica que era quase impossível entender qual o propósito de um commit, tornando inútil a sua descrição. A história daquele fonte estava muito mal contada e é aí que está o problema. Quando era necessário entender a implementação de uma regra de negócio ou o que motivou as alterações no código não existia contexto, não existia história. Uma sequência de commits com o mesmo título “Update azure-pipelines-unit.yml for Azure Pipelines” não deixa claro o motivo da alteração. Apenas sabemos que ocorreu uma sequência de alterações em um arquivo.
A falta de relação do commit com uma issue em uma ferramenta ALM contribuía para a falta de contexto. Em algumas situações era necessário recorrer ao time de negócio para resgatar o histórico que motivou a alteração de uma regra de negócio.
Os commits em um repositório git contam uma história, a história de vida de um código. Eles descrevem o que motivou a fazer as alterações que foram feitas de uma forma muito clara, mantendo o histórico e apoiando os futuros desenvolvedores.
Um commit bem escrito é dividido em duas partes, o assunto com no máximo 50 caracteres e que de forma imperativa expressa a sua intenção e um body que descreve o porquê do commit. Um bom commit também faz referência ou está vinculado a uma issue que contextualiza o commit. No exemplo abaixo, é possível verificar algumas boas práticas na escrita de commits aplicadas no repositório do Erlang.
|
|
O projeto Erlang possui uma qualidade alta na escrita de seus commits. No exemplo abaixo o assunto demonstra a intenção e no body o porquê.
Exemplo de um commit com boas práticas
1 2 3 4 5 6 7
Don't keep a stacktrace longer than necessary After an exception had been caught, the stacktrace (`p->ftrace`) would be retained in the process until another exception occurred. While at it, also clear the exception term (`p->fvalue`) in the common error handling code instead of in the code for `try_case` in each module
Guia de Boas Práticas
Mais do que uma simples descrição, as boas práticas na escrita de commit servem para apoiar o processo de revisão, contribuir para um release notes rico e ajudar os futuros desenvolvedores.
- O commit é composto por um assunto e um body opcional.
- Sempre mantenha uma linha em branco entre o assunto e body quando existir um.
- Não utilize ponto final no final do assunto.
- Mantenha o assunto com no máximo 50 caracteres.
- Utilize o body para explicar o que foi feito ao invés de como foi feito.
- Dê preferência para uma linguagem imperativa no assunto.
- Relacione as issues no final do body.
- Conheça o git (squash é um excelente exemplo).
- Respeite os padrões acordados com o time.