Niveau :
Résumé :
Aujourd'hui nous allons mettre en valeur deux articles précédents. J'espère que vous avez déjà mis votre home sous un système de suivi de version pour suivre ses évolutions. J'ai déjà décrit à dans un article précédent. En résumé :
$ cd $ git init $ git add .bashrc # et tout ce que vous voulez $ git commit
Le but étant de propager tout cela automatiquement sur différentes machines. Il est difficile de toujours penser à mettre a jour lorsqu'on fait une modification. C'est pourquoi nous allons mettre à profit l'article précédent et intercepter ssh. Grâce à cela le home de toutes nos machines seront à jour sans qu'on ait à s'en préoccuper.
Mise en place
Cette fois nous allons modifier le script en question pour lancer automatiquement une mise à jour de git de façon furtive à chaque connexion ssh. La méthode run était prévue pour :
# test permettant de savoir qu'on est bien sur le bon dépôt git pour les mises à jour (id du premier commit)
MASTER=11edf02e95ceac1fa58d4444f82f8cd4ae9c1cf5
# command tu run via the ssh socket
run()
{
# no test if running init
if [ "$MASTER" != "" ]
then
# test if distant has OUR git
ssh -S "$1" XXX '[ -e /usr/bin/git ] && [ -d .git ] && git rev-list --reverse master 2>/dev/null | head -1' | grep "$MASTER" > /dev/null
else
ssh -S "$1" XXX '[ -e /usr/bin/git ]'
fi
if [ $? -eq 0 ]
then
# if yes push updates
tmp=$(mktemp ~/.sshgit.XXXXXX)
echo "#!/bin/sh" > $tmp
echo "exec ssh -S $1 \"\$@\"" >> $tmp
chmod +x $tmp
GIT_SSH=$tmp git push --all ssh://XXX/~ > /dev/null 2> /dev/null
rm -f $tmp
ssh -S "$1" XXX 'git checkout -f > /dev/null'
fi
}
continue reading...