Git – Como notificar se um arquivo foi modificado após o ‘git pull’ – (Notify of file changed after git pull)

O gitpermite realizar diversos procedimentos em diversos momentos, ele permite a execução de scripts ao relizar um pull, push, commit, etc. O git chama essas execuções atravéz de arquivos padronizados dentro da pasta .git/hooks, são programas que você pode colocar para acionar ações em determinados pontos na execução do git. Hooks que não tem permisão de execução são ignorados.

Para mais detalhes e para ver a documentação mais detalhada das ações que são interpretadas por ele veja em sua documentação: https://github.com/git/git/blob/master/Documentation/githooks.txt

Para interpretarmos a ação do git pull devemos criar um arquivo em ${PATH_PROJECT}/.git/hooks com o nome de post-merge na documentação o arquivo post-merge diz que:

This hook is invoked by linkgit:git-merge[1], which happens when a git pull
is done on a local repository. The hook takes a single parameter, a status
flag specifying whether or not the merge being done was a squash merge.
This hook cannot affect the outcome of
git merge and is not executed,
if the merge failed due to conflicts. This hook can be used in conjunction with a corresponding pre-commit hook to
save and restore any form of metadata associated with the working tree
(e.g.: permissions/ownership, ACLS, etc). See contrib/hooks/setgitperms.perl
for an example of how to do this.

Agora basta escrevermos um script no arquivo post-merge que verifica se um arquivo foi alterado e notifica o usuário, como a idéia desse post não é gerar algo complexo vou apenas executar um echo com uma mensagem quando o arquivo docker-compose.yml for alterado pelo git pull.

#!/bin/sh -eu
# This file goes in .git/hooks/post-merge
if git diff-tree --name-status -t -r --root HEAD | grep -q 'docker-compose.yml'
then
    echo "Your docker-compose.yml file changed. You may want to run $ docker-compose up --build -d"
fi

Para quem usa Linux uma boa alternativa ao echo é usar o zenity, ele vai mostrar uma caixa de dialogo customizada.

[...]
    zenity --error --text="Your docker-compose.yml file changed. You may want to run $ docker-compose up --build -d" --title="docker-compose was changed"
[...]

Nota: lembre-se de executar o comando para dar permissão de execução no arquivo:

$ chmod +x .git/hooks/post-merge

Referências:

https://github.com/git/git/blob/master/Documentation/githooks.txt

https://gist.github.com/sindresorhus/7996717

https://gist.github.com/jaydorsey/5e28df857a4dfd5b581237a9f588e89a

Help DEV – Analista desenvolvedor Java / Android https://helpdev.com.br/zarelli

Git – Como notificar se um arquivo foi modificado após o ‘git pull’ – (Notify of file changed after git pull)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para o topo