Gitpuller.sh – Rafraîchisseur de dépôts git

Gitpuller.sh – Rafraîchisseur de dépôts git

Pour le taf, j’ai une chiée centaine de dépôts git clonés sur mon ordi et j’ai besoin de les conserver à jour parce que lorsque je pousse mes modifications, je déteste recevoir ce message :

Je me voyais mal faire un git pull à chaque fois que je dois bosser sur un dépôt alors j’ai cherché une solution un minimum élégante. Les dépôts sont tous stockés dans le sous-dossier GIT-LAB de ma home. J’ai commencé à écrire un bout de script.

Comme d’habitude, j’ai œuvré par itérations avant d’arriver au résultat actuel. J’avais pas prévu à l’époque d’en faire un article du coup je n’ai pas gardé l’historique pour te dire je ne l’avait même pas poussé sur git du coup je vais te raconter ma démarche.

Dans un premier temps, je remplissais simplement un tableau avec les résultats d’un find des sous-dossiers .git de mon dossier GIT-LAB. Puis pour chaque résultat, je lançais un git pull. Ça faisait le taf mais c’était moche.

Rapidement j’ai torturé le chemin de chaque dépôt pour afficher ce qui me semblait opportun (est-ce le dépôt d’un client ? d’un rôle Ansible ? Puppet ?), utilisé printf pour écraser la ligne sur laquelle j’écrivais le git pull en cours et, ajouté un espace avec un fond coloré en vert ou rouge pour notifier si tout se passe bien.

J’ai ensuite voulu ajouter une barre de progression et j’ai trouvé le génialissime article d’Ephase Bash avancé: barre de progression que j’ai dévoré. J’ai pris le temps de comprendre et digérer ces nouvelles informations et j’ai réussi à adapter mon script pour intégrer cette fonctionnalité.

On peut torturer à loisir la sortie des commandes. C’est peut-être évident pour toi qui est un barbu mais pour moi, ok j’avais capté le fait de pipe un résultat pour l’envoyer vers une autre commande mais l’idée de totalement annihiler la sortie d’une commande et d’en forger une toute autre ça ne m’avait même pas effleuré.

J’ai même pris le temps de créer un script modifié pour masquer les noms des sous-dossiers pour pouvoir te faire un gif.

Si ça t’intéresses, tu trouveras le dépôt ici.

Pour ne pas avoir à lancer le script à la main, je le lance juste après le chargement de ma clé privée depuis mon .bashrc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *