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 hooks
sã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-msg
gancho.
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 !!
Obrigado por:
João Feck
Rafael Pereira