Rastreabilidade ágil em cada git commit com Hooks

Como muitos outros sistemas de controle de versão , [Git] ( http://en.wikipedia.org/wiki/Git_ (software \) ) tem uma maneira de disparar scripts personalizados quando certas ações importantes ocorrem, chamadas de ganchos , eles podem ser usado em operações como confirmação e fusão.

Existem alguns ganchos que sempre adoro ter em execução, independentemente do repositório git que estou enviando, como:

  • Verifique a ortografia da mensagem de confirmação;
  • Verifique se o projeto ainda é construído;
  • Verifique se as regras de negócios estão sendo mantidas com meu conjunto de testes;
  • Padronizar minhas mensagens de commit de acordo com regras / padrões;
  • Verifique se qualquer novo código segue o estilo de codificação ‘padrão’.

Dito isso, é importante descobrir como aplicar alguns ganchos, para que possamos extrair o melhor de nosso fluxo de Controle de Versão.

Todos hookssão armazenados no subdiretório hooks do diretório Git. Na maioria dos projetos, isso é .git/hooks. Você pode escrevê-los em Shell Script , [Ruby] ( http://en.wikipedia.org/wiki/Ruby_ (programming_language \) ), [Python] ( http://en.wikipedia.org/wiki/Python_(programming_language \) ) ou o que você tem.

Padronizar minhas mensagens de commit de acordo com regras / padrões;

Para definir o prefixo ou sufixo ‘padrão’ das mensagens em seus commits, tornando possível um padrão de “rastreabilidade ágil”, precisaremos trabalhar com o prepare-commit-msggancho.

O gancho é executado antes do editor de mensagem de confirmação ser iniciado, mas depois que a mensagem padrão é criada. Ele permite que você edite a mensagem padrão antes que o autor do commit a veja. Este gancho leva algumas opções: o caminho para o arquivo que contém a mensagem de confirmação até agora, o tipo de confirmação e o SHA-1 de confirmação se for uma confirmação corrigida.prepare-commit-msg

Crie valores padrão:

Para simplificar a necessidade de atualização recorrente da progressão de seus sprints e lançamentos, vamos manter três configurações git no escopo global.

$git config --global team.name "Paynews"
$git config
--global team.release "R12"
$git config
--global team.sprint "S5"

Adicione um novo gancho:

Para habilitar um script de gancho, colocaremos um arquivo no subdiretório de ganchos com o nome de gancho apropriado ( ).prepare-commit-msg

$ mv .git/hooks/prepare-commit-msg.sample .git/hooks/prepare-commit-msg
$ vi
~/.git/hooks/prepare-commit-msg
#!/bin/sh
#
# hook for Traceability

TEAM
=$(git config --global team.name)
SPRINT
=$(git config --global team.sprint)
RELEASE
=$(git config --global team.release)

if [ -n "$TEAM" ] && [ -n "$SPRINT" ] && [ -n "$RELEASE" ]; then
sed
-i.bak -e "1s/^/[$RELEASE-$SPRINT][$TEAM] /" $1
fi

Salve isso! E não se esqueça de torná-lo executável

$ chmod +x .git/hooks/prepare-commit-msg

FEITO!! APÓS O COMPROMISSO !!

Cenário

Obrigado por:
João Feck
Rafael Pereira