Tim Pope defende um estilo de mensagem de confirmação do Git específico em seu blog: http://www.tpope.net/node/106 .
Aqui está um rápido resumo do que ele recomenda:
- A primeira linha tem 50 caracteres ou menos.
- Então uma linha em branco.
- O texto restante deve ter quebra de 72 caracteres.
Sua postagem no blog fornece a justificativa para essas recomendações (que chamarei de "formatação 50/72" por questões de concisão):
- Na prática, algumas ferramentas tratam a primeira linha como uma linha de assunto e o segundo parágrafo como um corpo (semelhante ao email).
git log
não lida com quebra automática, por isso é difícil ler se as linhas são muito longas.git format-patch --stdout
converte confirmações em e-mail - portanto, para jogar bem, ajuda se suas confirmações já estiverem bem agrupadas.
Gostaria de acrescentar que acho que Tim concordaria com:
- O ato de resumir sua confirmação é uma boa prática inerente a qualquer sistema de controle de versão. Ajuda outras pessoas (ou mais tarde você) a encontrar confirmações relevantes mais rapidamente.
Então, tenho alguns ângulos para minha pergunta:
- Que parte (mais ou menos) dos "líderes de pensamento" ou "usuários experientes" do Git adotam o estilo de formatação 50/72? Eu pergunto isso porque, em algum momento, os usuários mais novos não sabem ou não se importam com as práticas da comunidade.
- Para aqueles que não usam essa formatação, existe uma razão de princípios para usar um estilo de formatação diferente? (Observe que estou procurando uma discussão sobre o mérito, não “nunca ouvi falar disso” ou “não me importo”.)
- Empiricamente falando, qual porcentagem de repositórios Git adotam esse estilo? (Caso alguém queira fazer uma análise nos repositórios do GitHub ... dica, dica.)
Meu ponto aqui não é recomendar o estilo 50/72 ou abater outros estilos. (Para ser aberto sobre isso, prefiro, mas estou aberto a outras idéias.) Eu só quero entender o porquê as pessoas gostam ou se opõem a vários estilos de mensagens de confirmação do Git. (Sinta-se à vontade para mencionar pontos que também não foram mencionados.)
Respostas:
Em relação à linha "resumo" (os 50 na sua fórmula), a documentação do kernel do Linux tem o seguinte a dizer :
Dito isso, parece que os mantenedores do kernel realmente tentam manter as coisas em torno de 50. Aqui está um histograma dos comprimentos das linhas de resumo no log git para o kernel:
( ver em tamanho normal )
Há um número considerável de confirmações que possuem linhas de resumo que são mais longas (algumas muito mais longas) do que esse gráfico pode conter sem fazer com que a parte interessante pareça uma única linha. (Provavelmente existe alguma técnica estatística sofisticada para incorporar esses dados aqui, mas tudo bem… :-)
Se você deseja ver os comprimentos brutos:
ou um histograma baseado em texto:
fonte
git shortlog | awk '/^ / {gensub(/[[:space:]]\+\(.*\)$/, "\\1", ""); print length()}'
Com relação aos “líderes de pensamento”: Linus defende enfaticamente o empacotamento de linha para a mensagem de confirmação completa:
As exceções referem-se principalmente ao texto “sem prosa”, ou seja, texto que não foi digitado por um humano para o commit - por exemplo, mensagens de erro do compilador.
fonte
A separação de apresentação e dados direciona minhas mensagens de confirmação aqui.
Sua mensagem de confirmação não deve ser contida em nenhum número de caracteres e, em vez disso, as quebras de linha devem ser usadas para separar pensamentos, parágrafos etc. como parte dos dados, não da apresentação. Nesse caso, os "dados" são a mensagem que você está tentando transmitir e a "apresentação" é como o usuário vê isso.
Uso uma única linha de resumo na parte superior e tento mantê-la curta, mas não me limite a um número arbitrário. Seria muito melhor se o Git realmente fornecesse uma maneira de armazenar mensagens de resumo como uma entidade separada da mensagem, mas como não tenho que invadir uma delas e usar a primeira quebra de linha como delimitador (felizmente, muitas ferramentas suportam isso significa separar os dados).
Para a própria mensagem, novas linhas indicam algo significativo nos dados. Uma única nova linha indica um início / interrupção em uma lista e uma nova linha dupla indica um novo pensamento / idéia.
Aqui está a aparência de um visualizador que envolve o texto com suavidade.
Minha suspeita é que o autor do Git comprometa a recomendação de mensagens que você vinculou nunca escreveu um software que será consumido por uma grande variedade de usuários finais em dispositivos diferentes antes (ou seja, um site), já que neste momento na evolução do software / computação é sabido que armazenar seus dados com informações de apresentação codificadas é uma má idéia no que diz respeito à experiência do usuário.
fonte
tig
,git log
ougitk
, e talvez também com o github.\n\n
é um separador de pensamentos.\n*
é um indicador de item da lista. A forma como essas são renderizadas depende da visualização. O problema com quebras de linha artificiais é que elas estão associadas a nada, exceto a apresentação. Não há informações relacionadas a dados sendo transmitidas colocando uma quebra de linha em 70 caracteres. Minha escolha\n\n
e\n*
é a mesma do motivo pelo qual a marcação foi escolhida, porque é uma forma de codificação de dados que também parece um tanto razoável em uma exibição de texto sem formatação.Concordo que é interessante propor um estilo particular de trabalho. No entanto, a menos que eu tenha a chance de definir o estilo, geralmente sigo o que foi feito para garantir a consistência.
Dando uma olhada no Linux Kernel Commits, o projeto que iniciou o git, se você preferir , http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h = bca476139d2ded86be146dae09b06e22548b67f3 , eles não seguem a regra 50/72. A primeira linha tem 54 caracteres.
Eu diria que a consistência é importante. Configure meios adequados para identificar usuários que fizeram confirmações (nome do usuário, usuário.e-mail - especialmente em redes internas. O usuário @ OFFICE-1-PC-10293982811111 não é um endereço de contato útil). Dependendo do projeto, disponibilize os detalhes apropriados no commit. É difícil dizer o que deveria ser; pode ser tarefas concluídas em um processo de desenvolvimento e detalhes do que mudou.
Não acredito que os usuários devam usar o git de uma maneira, porque certas interfaces para o git tratam os commits de determinadas maneiras.
Também devo observar que existem outras maneiras de encontrar confirmações. Para começar,
git diff
dirá o que mudou. Você também pode fazer coisas comogit log --pretty=format:'%T %cN %ce'
formatar as opções degit log
.fonte
O comprimento máximo recomendado do título é realmente 50?
Eu acredito nisso há anos, mas como acabei de notar, a documentação do "git commit" realmente afirma
Alguém poderia argumentar que "menos de 50" só pode significar "não mais que 49".
fonte