Você pode recomendar um bom modelo / diretrizes de mensagem de confirmação para aplicar na empresa? [fechadas]


38

No Git, é possível definir e aplicar um bom modelo de confirmação.

Você pode recomendar (de preferência com argumentação) um bom modelo / diretrizes de consolidação a serem aplicados na empresa?

Respostas:


42

eu uso

[Abc]: Message.

Com Add, Mod (ify), Ref (atuação), Fix, Rem (ove) e Rea (dability), fica fácil extrair o arquivo de log.

Exemplo:

Add: New function to rule the world.  
Mod: Add women factor in Domination.ruleTheWorld().  
Ref: Extract empathy stuff to an abstract class.  
Fix: RUL-42 or #42 Starvation need to be initialised before Energy to avoid the nullpointer in People.  
Rem: freeSpeech is not used anymore.  
Rea: Removed old TODO and extra space in header.  

Se eu tiver mais de uma linha, eu as classificarei com as mais importantes primeiro.


1
+1 Essa é uma ótima maneira de lidar com isso e você pode facilmente esperar por mudanças.
Sardathrion - Restabelece Monica

12
EEk! Você tirou a liberdade de expressão!
CaffGeek

1
Você poderia explicar alguma diferença entre Mode Ref? Às vezes, estou apenas fazendo pequenas correções, o que é algum tipo de refatoração.
yegle

2
@yegle Modé sobre adicionar algo ou mudar um comportamento, Refé sobre mudar coisas internas que não adicionam funcionalidade, adicionam API, etc. Exemplo: se eu tiver uma add(Object)função e eu implementar uma add(List<Object>)função, comento Mod. Mais tarde eu removo a duplicação e uso diretamente add(Object), add(List<Object>)então usarei Ref.
rangzen 28/02

14

Usamos o seguinte:

[Identificação do ticket no JIRA]: [Mensagem: O que foi feito] Por exemplo - ABC-123: Adicionado capacidade de configurar a apresentação por região.

Nesse caso, com a integração adequada, você poderá obter arquivos alterados / excluídos / adicionados no seu rastreador de problemas. No entanto, esteja ciente de que você deve evitar algo como ABC-123: Concluído ou ABC-123: Corrigido com filtros, se possível.


+1 para correção de bugs, mas e os novos recursos? A menos que novos recursos também sejam criados no JIRA ...
Sardathrion - Restabelece Monica

3
@ Sardathrion - Pessoalmente, eu criaria rastreadores para a nova funcionalidade no JIRA. Fazemos isso com o Bugzilla e isso dá à equipe de teste (e a todos os outros) uma boa visibilidade de tudo o que está sendo lançado em uma versão e minimiza as coisas que acontecem quando elas não foram testadas / revisadas por código / o que seja.
91111 Jon Hopkins

@ JonHopkins: Embora um rastreador de erros possa ser usado para novos recursos, ele pode não ser a ferramenta ideal. Claro, sua milhagem deve variar ^ _ ~
Sardathrion - Reintegrar Monica

3
Eu adorei ter um ticket atribuído a cada confirmação (alguns tickets podem facilmente ter vários commits, é claro): é uma maneira muito simples de obter mais informações de fundo ao inspecionar o código posteriormente. "Por que eles fizeram isso?" é muito mais fácil responder quando você tem o comentário de confirmação e uma entrada de rastreamento de problemas.
Joachim Sauer

Não é melhor fazer um ticket em uma filial separada?
Tamás Szelei 6/10/11

11

Há uma regra simples, que é uma convenção seguida por muitos (se não todos) SCMs e pela maioria das ferramentas que funcionam com SCMs:

A primeira linha de uma mensagem de confirmação é um breve resumo, enquanto o restante da mensagem contém os detalhes.

Portanto, a maioria das ferramentas exibe apenas a primeira linha e exibe toda a mensagem sob demanda.

Um mau uso típico de uma mensagem de confirmação é uma lista de marcações de alterações (somente o primeiro marcador será mostrado). Outro uso indevido é escrever uma mensagem detalhada em uma única linha.

Portanto, se há uma coisa a ser aplicada, eu diria que é o comprimento máximo da primeira linha.


Eu nunca vi um motivo para escrever uma mensagem de confirmação longa e detalhada no Git. Informações detalhadas estão no rastreador de problemas e, portanto, minhas mensagens de confirmação são apenas descrições de uma frase da (pequena) alteração que fiz nessa confirmação.
Marnen Laibow-Koser

9

Pessoalmente, nunca vi um modelo de confirmação geral que valha a pena usar. O comentário deve dizer de forma concisa o que os commits estão relacionados, por exemplo, qual recurso / correção de bug ou uma breve declaração de por que as alterações foram feitas.

As informações sobre o que foi confirmado não devem ser incluídas, isso pode ser determinado pelo sistema scm. Mais informações sobre bugs / recursos pertencem a onde sempre os bugs e recursos são rastreados.

Ao atualizar um relatório de bug após uma confirmação, acho bom também declarar a revisão da confirmação junto com os comentários no relatório. Dessa maneira, você pode encontrar o caminho entre o comentário de confirmação e o relatório de erros, e para cada comentário no relatório de erros, você pode encontrar o que foi confirmado, mas você não duplica as informações no relatório de erros e na mensagem de confirmação.

Então, ao visualizar o histórico de revisões de um arquivo, você tem boas mensagens breves descrevendo o histórico, mas também sabe onde procurar mais detalhes sobre relatórios de erros ou descrições de tarefas para obter mais detalhes.


4
Muitas ferramentas de bug permitem vincular diretamente à revisão em sua ferramenta SCM se você inserir os detalhes no formato correto. Da mesma forma, muitas ferramentas do SCM serão vinculadas diretamente ao banco de dados de erros se você inserir os detalhes do erro no formato correto. IMO, desde que você faça isso, então você é ouro.
22630 Dean Dean Harding

4

No Git, é possível aplicar quase tudo com os ganchos do Git . Verifique os exemplos em .git / hooks para obter idéias.

Quanto à mensagem, em um caso muito geral, você deseja incluir informações suficientes sobre o problema que estava resolvendo E a própria solução para poder encontrar e identificar esse commit posteriormente. Na maioria dos casos, o problema será referenciado como um número de bug (com integração adequada ao seu sistema de rastreamento de erros). Se você tiver outros sistemas com os quais seu processo se integra (como o sistema de rastreamento de revisão de código), inclua também os bits apropriados:

Extracted checking foobar range from bar() into foo(min, max) to re-use
in yadda() and blah(). foo() returns true if foobar is in the
specified range and false otherwise.

BugID: 123456
ReviewedBy: mabuddy
AutomergeTo: none

Mas você quer manter as coisas simples. Caso contrário, as pessoas encontrarão uma maneira de enganar o sistema e produzir mensagens de confirmação inúteis.


0

Usamos um modelo que contém

  • O número de identificação do bug / recurso / correção
  • Um sim / não descrevendo se o código foi testado ou não
  • E uma seção de detalhes para uma breve descrição da intenção do commit

Os dois primeiros são omitidos na maioria das vezes (no entanto, ocasionalmente todos os três), então não é realmente um grande problema.


0

Geralmente, tenho o identificador que está no sistema de rastreamento de tickets que uso ou uma visão geral de alto nível como a primeira linha. Depois, tenho pontos de marcador da alteração específica no commit. Então eu poderia de algo como:

MyVideoGameProject-123 OR Inventory System Improvements
Made inventory GUI drap and drap
Added ability to have multiple bag slots to expand inventory capacity

Este é o formato de confirmação mais limpo que eu gosto. É direto e direto ao ponto. Outra razão pela qual faço dessa maneira é que, se eu quiser criar um log de alterações, eu poderia pegar todas as mensagens de confirmação e analisá-las em um log de alterações com muita facilidade.


0

Mensagem [ticketId] [ABC] [topicId] [WIP], em que:

  • ticketId - identificação de um item no repositório de tarefas
  • ABC - adicionar (recurso), corrigir (correção de bug), str (estrutura), dep (dependência) rem (incompatibilidade com versões anteriores / remover), rea (legibilidade), ref (refatoração)
  • topicId - pode ser um seletor de tarefas para jenkins e / ou nome da filial e / ou nome do tópico para gerrit
  • WIP - trabalho em andamento / ou não (ou seja, a integração contínua pode exigir isso)
  • mensagem - detalhe da modificação

Exemplos:
[# 452567] [add] [menu_item] novo item - livro de visitas
[# 452363] [correção] [banner_top] [WIP] 1024x300 pode ser usado agora
[# 452363] [fix] [banner_top] 500x200 pode ser usado agora
[ # 452713] [rem] [página] anúncio do meio esquerdo


Sua resposta seria mais forte se você explicasse por que acha que esse é um formato tão bom. Embora o valor desse formato possa ser evidente para você, ele não é tão óbvio para os outros.

Obrigado pelo comentário - sim eu vou explicar com mais detalhes em breve - eu só queria começar com fatos - seria uma característica boa pilha que você poderia assinar a resposta com WIP :)
laplasz

Para 'Work In Progress' - é uma nota para vocês mesmos que vocês voltarão e emendarão, ou se comprometem a dominar isso? Se sim, por quê?
JBRWilkinson

CI fluxo de trabalho pode exigir que - assim você empurrar para dominar a mudança inacabado apenas para integrá-lo o mais rápido possível
laplasz
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.