Uma mensagem de confirmação do git deve mencionar o arquivo que foi modificado?

50

Na primeira linha de uma mensagem de confirmação do git, tenho o hábito de mencionar o arquivo que foi modificado se uma alteração não abranger vários arquivos, por exemplo:

Add [somefunc] to [somefile] 

Isso é bom ou desnecessário?

Matty
fonte

Respostas:

84

As ferramentas de controle de versão são poderosas o suficiente para permitir que a pessoa veja quais arquivos foram modificados e quais métodos foram adicionados. Isso significa que, em geral, as mensagens de log que duplicam claramente o que já existe estão poluindo o log.

Você adicionou um somefuncmétodo para atender a um requisito, ou seja:

  • para adicionar um recurso,
  • para remover um bug ou
  • para refatorar o código fonte.

Isso significa que suas mensagens de log devem explicar quais recursos / bugs foram afetados ou qual foi o objetivo da refatoração.

Arseni Mourzenko
fonte
5
Também deve falar sobre o porquê . Que outras opções você considerou e por que você escolheu essa?
Jay Bazuzi
2
Eu comento em confirmações da mesma maneira que gostaria de comentar código, apenas de uma perspectiva de nível superior (ou seja, menos informações, mais resumo). Pessoalmente, divido-o em um nível de arquivo / módulo (em git), mas apenas porque os commits são baratos antecipadamente e eu gosto de poder ler a história como um livro. YMMV.
Evan Solha
11
Se, por algum motivo, a pessoa confirmar um monte de arquivos de uma vez que não estão relacionados ao mesmo bug, prefiro que liste os nomes dos arquivos e a identificação do bug antes do verão. Eu não preciso saber file.cpp: adicionou getMethod (), mas eu gostaria da identificação do bug # 10 file.cpp: decente aqui no verão. Se eles confirmarem vários arquivos espalhados por vários relatórios de erros, teremos uma conversa, porque eu realmente não gosto disso. Eu prefiro que eles façam vários commits. Um para cada problema que eles estão resolvendo.
William
@ William: Além disso, caso haja um problema com uma correção de bug, é possível revertê-la com o mínimo de confusão. Combine dez correções de bugs em uma confirmação e isso pode ser um problema sério.
precisa
59

Não. Existem várias maneiras de examinar o conteúdo de uma confirmação. O comentário deve descrever o objetivo do commit.

Dan Ray
fonte
30

Não se esqueça de adicionar o número do bilhete / problema .

Se você tiver algum recurso ou sistema de rastreamento de problemas com um número de ticket ou número de problema , certifique-se de colocar esse número de ID no commit. Isso ajudará quem quiser saber mais sobre o recurso ou problema em que você estava trabalhando.

No meu último projeto, houve uma macro que foi desenvolvida para garantir que os 7 primeiros dígitos do comentário fossem um número de problema válido de uma busca clara (nosso sistema de rastreamento de problemas / recursos).

java_mouse
fonte
Como você compromete uma mudança de refatoração, então?
Jules
@Jules refatoração tem um ticket # que nunca está acabado
Caleth
Uma metodologia do @Jules é que a refatoração é rastreada como um tipo de problema "trabalhoso" e, portanto, também tem um número de problema.
21416 Scott McIntyre
@ScottMcIntyre Embora isso possa ser verdade, não estou convencido de que seja uma boa ideia. A refatoração é frequentemente realizada de maneira mais oportunista ou como parte do processo de desenvolvimento de código que depende do código a ser refatorado. Como Fowler coloca , "a refatoração planejada é [...] um sinal de que a equipe não fez refatoração suficiente usando os outros fluxos de trabalho". Ou mais abruptamente por Ron Jeffries: Refatoração - Não está na lista de pendências! .
Jules
3

Eu faço esse tipo de coisa ao confirmar, por exemplo, a correção de um defeito que exigia alterações em vários arquivos. Isso torna um pouco mais fácil dizer o que realmente mudou sem examinar os arquivos individuais no conjunto de alterações.

Para conjuntos de alterações de arquivo único, isso é desnecessário.

A primeira linha é sempre uma descrição de alto nível do changeset, como um link para o defeito ou a história do usuário.

Mike Partridge
fonte
3

Se houver informações relevantes na narrativa da mensagem de confirmação, inclua-as. Se a única informação é o nome do arquivo, então não.

Por exemplo, isso faz sentido: "Movemos a função build_foo () de fooutil.c para foobase.c, pois a maioria dos programas que deseja usar o build_foo () já inclui o foobase.c"

Este não: "Atualizado o build_foo () no fooutil.c para obter um parâmetro de barra."

Andy Lester
fonte
1

Eu quero adicionar uma perspectiva diferente aqui.

Minha resposta é sim ou não. Mas geralmente eu diria que sim.

O controle de versão é realmente poderoso o suficiente para saber qual arquivo está sendo atualizado. Mas quando fazemos

$ git log

Nós vemos apenas a mensagem de confirmação. É o que a maioria das pessoas faz.

Examinando o próprio log. Ele adiciona contexto adicional a ele. Por exemplo:

readme.md: Fix typo detected by language tool

É melhor que

Fix typo detected by language tool

No entanto, se as alterações gerarem vários arquivos, mencione pelo menos o componente que está sendo editado.

API: Fix reset password not sent email to user

Ao ler, sabemos que o erro que está sendo corrigido está no componente API e provavelmente no diretório API na base de código.

No entanto, poderíamos fazer

$ git show COMMIT_ID --name-only 

mas adiciona mais etapas apenas para obter os arquivos.

Yana Agun Siswanto
fonte
0

A única vez em que pude ver isso útil para um único check-in de arquivo é se você fez alterações em uma função usada em muitos locais do arquivo, com o resultado de que o diff está desordenado. Mesmo assim, eu colocaria o número do rastreador de alterações e uma descrição em texto simples da alteração.

Dan Neely
fonte
-1

Eu acho que a verdadeira questão aqui é quão limitado no escopo são seus commits? Se você esperar para confirmar uma variedade de alterações não relacionadas juntas em uma confirmação, poderá sentir a necessidade de especificar quais arquivos foram alterados para qual finalidade.

No entanto, se você simplesmente fez confirmações mais restritas com mais frequência, uma única confirmação explicaria quais arquivos foram modificados e você poderia simplesmente descrever qual era o objetivo da mensagem.

Mais confirmações, com mais frequência. É assim que você pode evitar ser tão detalhado em suas mensagens.

Raffi
fonte
-2

Não deveria

Todos os interessados ​​podem ver mudanças em uma história

Também não é viável em sistemas maiores, pois muitos arquivos podem ser gerados automaticamente

CodeART
fonte