As mensagens de commit devem ser escritas no tempo presente ou no passado? [fechadas]


102

Então, o que você acha que é melhor e mais intuitivo?

Fixed the XXX bug in YYY
Fix the XXX bug in YYY
Fixes the XXX bug in YYY
Fixing the XXX bug in YYY

Forneça seus fundamentos. Nota Estou perguntando de sua perspectiva geral, o que significa que você não deve tentar associar isso às suas ferramentas ou linguagens de programação svn / cvs preferidas, mas sim pensar nisso como algo que deve / pode ser aplicado a quaisquer ferramentas e linguagens de programação.


Alguém no seu trabalho é muito pedante, espero que não seja você. Quem quer que seja, deve considerar o presente perfeito versus o presente imperfeito, e o enigma filosófico de se o comentário de commit é lido como se fosse do tempo em que foi digitado ou do tempo em que foi persistido no repositório. Se for o último, use o presente perfeito para uma ação concluída. Se for o primeiro, use imperfeito para uma atividade presente incompleta.
Heath Hunnicutt

1
Não é um idiota dessa questão. Trata-se de perguntar sobre um pequeno aspecto, não sobre diretrizes gerais.

3
Felizmente, não é. Eu estava perguntando, tentando descobrir, gostaria de saber qual é a prática geral por aí. Para falar a verdade, essa é na verdade a pergunta mais insignificante que já fiz no SO, mas ei, ainda é uma pergunta, não é? A própria questão obteve três votos, o que (se não for óbvio para você) indica que não sou o único por aí que está pensando que esta questão é válida em si mesma. Estou atrás de respostas construtivas e você não está ajudando em nada.
Seu

1
Se você pensou que as pessoas não deveriam se preocupar muito com os tempos em mensagens de commit, digamos, diga suas razões e suas preferências. Muito mais útil e útil do que seu comentário sarcástico acima.
Seu

10
Eu levo essa questão muito a sério. É uma ótima pergunta. Ser consistente é muito importante no desenvolvimento de software, e isso deve ser do interesse de todos os visitantes interessados ​​no tema deste site. Essa é minha opinião.
Niklas Berglund

Respostas:


39

Eu penso nessas mensagens como elas aparecem para outros desenvolvedores. Eles ainda não têm as alterações aplicadas e há a questão implícita, "o que a aplicação deste changeset / patch fará?" Irá "Corrigir o bug XXX em YYY"!

Para outros verbos, escrevê-los como um comando parece mais natural e funciona melhor se você tiver um objetivo específico antecipadamente - você pode literalmente escrever o resumo do commit junto com os testes iniciais antes que o trabalho seja concluído.

Eu não coloco muito peso nisso, mas para mim este é o caminho de menor resistência, mantendo a consistência.


8
Lembro-me de ter encontrado algo na documentação do git recomendando fortemente este tempo, mas ainda acho estranho.
keithjgrant

1
Esta é a origem da documentação do Git.
sschuberth

31

Eu, pessoalmente, escolho o pretérito ("corrigido"), pois no momento em que começo a cometer o bug está corrigido (ou eu não estaria cometendo).


Você pode dar um exemplo disso?
bzlm

15
um exemplo disso.
Reverendo Gonzo

É chamado de 'Histórico de confirmação'. A história é sempre escrita no pretérito. Portanto, o tempo passado faz mais sentido. Quando você está passando por algum histórico de commits de repo também, está olhando o que foi feito com ele ... no passado!
Shiva

13

Eu prefiro ver as mensagens de commit no presente. Dessa forma, a mensagem descreve o que o diff faz (porque você pode puxar aquele diff ou mesmo todo o commit em um branch diferente). Portanto, a mensagem de commit não descreve o que "fez" ... Ela descreve o que o próprio commit "faz" faz. Portanto, deve estar no tempo presente.

Imagine olhar para uma diferença isoladamente e tentar decidir se vai aplicá-la. Não faz sentido ter um título no passado.


1
"o que o diff faz" mas o diff é criado por um commit que foi submetido , já está no histórico do git, então já foi "aplicado".
Iulian Onofrei

9

IMHO, se você quiser que seja descritivo sem a necessidade de considerar o contexto, então "Fixo" é definitivamente a única variante certa.

Com relação à intuição - se eu olhar para algum changelog, definitivamente entenderei que você quer dizer o bug corrigido, pois eu sei o contexto em que a palavra é usada, mas meu cérebro vai pegá-lo muito mais rapidamente se a palavra estiver escrita desta forma- especificando forma.

"Consertar" é a pior escolha IMHO, pois pode ser interpretado não apenas como uma descrição do que o patch faz (é para), mas também como um status de bug, o que significa que ele está sendo trabalhado e ainda não foi resolvido.


7
Fix the XXX bug in YYY
Teach the XXX to be more ZZZ
Correct typos in javadoc

Em geral: {verbo imperativo} o {objeto afetado} {qualificadores opcionais}

A forma imperativa se adapta a todos os casos de uso quando estou considerando um patchset.

  • O que vais fazer aqui?
  • O que esse patchset faz?
  • Por que esse patchset foi criado? (para consertar o bug xxx ...)
  • Eu preciso corrigir o bug xxx em yyy. Existe um commit em outro branch que já faz isso?

Independentemente da sua escolha, acho que a consistência ajuda imensamente a legibilidade. Escolha um e fique com ele.


4
Razões muito boas. Eu sempre considero como se a mensagem estivesse dizendo "Eu sou um patch e eu [mensagem]". Dessa forma, você sempre começa com um verbo imperativo.
florisla

5

Eu acho que escrever sobre o commit atual no tempo presente é uma boa ideia, porque torna mais claro quando você se refere a commits anteriores no pretérito.


1
Concordo. Se o commit se refere a si mesmo, também é verdade, como em "Este commit corrige o bug F00F".
bzlm

4

Eu não acho que isso realmente importe. O objetivo é:

1) Transmita o que está ou estava sendo feito, para que os bugs possam ser encontrados mais facilmente, os problemas possam ser revertidos com mais facilidade e, geralmente, seja capaz de manter o projeto mais fácil.

2) Transmita quais tickets foram corrigidos, se houver, para que os auditores (se eles forem usados ​​em sua empresa podem ver quais mudanças correspondem a quais tickets).

Por último, se já tiver sido corrigido, "Consertar" não faz sentido e, se você ainda estiver trabalhando nisso, "Consertar" não está correto.


1
Claro, estritamente falando, é verdade que isso realmente não importa. Mas se você tiver que escolher um, quando tiver corrigido um bug em sua árvore local e quiser confirmar as alterações feitas, você diz "Fixed XXX" ou "Fixes XXX" ou "Fix XXX"?
Seu

1
Acho que importa se o texto é muito breve. Às vezes vejo mensagens de confirmação que me fazem pensar se 1. um bug foi encontrado ou realmente corrigido, ou 2. se uma correção foi concebida ou aplicada de fato, ou 3. se um comportamento incorreto complexo foi parcial ou totalmente corrigido. E às vezes vários commits estão relacionados ao mesmo bug. Em "Este commit corrige o problema de salto em DrawBall () e fecha o ticket 666" o tempo não importa, porque o texto é prolixo. Mas para "DrawBall () bounces wrong", o que o commit fez?
bzlm

2

" Corrigir bug X " tem 2 caracteres a menos que " Corrigir bug X ".
E 3 mais curtos do que " Consertando bug X ".

Do ponto de vista da escrita de mensagens curtas de confirmação, o tempo presente às vezes / geralmente salva alguns caracteres?
O que eu realmente acho que importa um pouco, por exemplo, com a recomendação do Git de menos de 50 caracteres-na-primeira-linha de mensagem de confirmação.
Além disso, menos texto -> leu mais rápido?


1

Uma mensagem de confirmação descreve por que você escreveu o código que está sendo confirmado.

"Corrigido o problema 3124" ou "Corrige o problema 3124" parece certo porque diz que este código corrigiu | corrige o problema 3124.

No entanto, a gramática também pode depender do motivo pelo qual marca o bug como corrigido. Se você pode marcar o bug como corrigido após a confirmação, então "Corrigido" está bem, mas se o bug for marcado como corrigido por outra pessoa após verificar seu código, então "Correções" pode ser mais apropriado.


0

Acho que a resposta mais importante para essa pergunta é: todos devem usar o que funciona para um projeto específico e mantê-lo pelo menos um pouquinho consistente.

Embora eu veja as vantagens de usar o tempo presente (e na verdade me deparei com este post porque vi algumas mensagens de tempo presente em projetos de código aberto), provavelmente nunca irei usar o tempo presente para meus projetos. É a forma recomendada para Linux e Git, e provavelmente outros grandes projetos de código aberto, mas eu honestamente não me importo, contanto que não faça parte desses projetos.

Sou um desenvolvedor independente e uso a primeira linha de uma mensagem de confirmação para notas de lançamento, enquanto a descrição nas linhas a seguir me dá uma ideia sobre os detalhes de implementação. É um fluxo de trabalho centrado no usuário em comparação com o tempo presente, abordagem baseada no desenvolvedor. Posso economizar algum tempo dessa forma. Seria extremamente antinatural dar instruções aos meus usuários nas notas de versão. É meu trabalho consertar bugs e adicionar recursos. Tenho que economizar tempo, porque sou um indie. Não tenho um “redator de notas de lançamento” em minha equipe.

Use as regras de um projeto se já estiverem estabelecidas, mas seja pragmático e faça o que quer que torne seu trabalho mais fácil ou rápido.


-1

Eu acho que "Fixes XXX bug"faz mais sentido do que "Fix XXX bug"se o motivo para usar o tempo presente for "torná-lo mais descritivo do que o commit faz" ao invés do que o committer fez.


-4

Se for um pequeno commit, eu uso o presente contínuo:

Reparando bug 304

ou

Adicionando comentários

Se for um grande commit, faço mais um log de alterações:

  • Correções de Bug 453, 657 e 324
  • Adicionando sintaxe de expressão
  • Refatorou a classe Operator.

9
em outras palavras, você mistura todos eles quer queira quer não B-)
Brian Postow

Bastante. Porque no final das contas, as mensagens de commit não precisam ser do inglês rainhas.
tster

2
Você não deveria estar fazendo muitas coisas diferentes em um commit de qualquer maneira.
florisla
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.