Être alerté par Git quand un fichier a été modifié durant le dernier merge


Il y a certains fichiers comme les migrations ou les fichiers de settings dont vous avez besoin de connaître l’état. Si un collègue les modifie et les push, vous voulez le savoir au moment du pull. Bien sûr vous pouvez scruter la liste des modifs à ce moment là, mais n’est-ce pas tellement mieux si votre ordinateur fait ça pour vous et affiche une grosse alerte rouge ?

Mettez le code suivant du le fichier .git/hooks/post-merge de votre repo en local :

#!/bin/bash
 
# On met ici tous les fichiers (ou pattern de nom) qu'on veut surveiller
# changez les pour les adapter à votre projet
files=('settings.py' 'migrations');
 
# on récupère tous les noms de fichiers modifiés depuis le dernier merge
modified_files=`git diff "HEAD@{1}" --name-only`
 
# on boucle sur chaque nom de fichier surveillé
for watched_file in "${files[@]}"; do
 
    # on liste tous les fichiers modifiés qui correspondent à ce nom de
    # fichier surveillé
    modified_watched_files=(`echo "$modified_files" | grep $watched_file`)
 
    # si le nombre de fichiers correspondant est plus grand que 0
    if [ ${#modified_watched_files[@]} ]; then
 
        # pour chaque fichier qui correspond, on affiche un avertissement
        # en rouge
        for modified_watched_file in "${modified_watched_files[@]}"; do
 
            echo -e "\e[41m "$modified_watched_file" has changed \033[0m"
 
        done
 
 
    fi
 
done

Le hook post-merge est exécute après git pull (et seulement si il n’y a pas eu de conflit). Il va afficher une bonne grosse alerte en rouge pour chaque fichier surveillé qui a été modifié entre avant et après le pull.

Notez au passage la syntaxe intuitive de bash pour utiliser des tableaux. On dirait presque que le mec qui a codé bash était un pote du gars qui a codé git.

One thought on “Être alerté par Git quand un fichier a été modifié durant le dernier merge

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.