lp177

gitSync

Synchroniser ses fichiers de configuration et ses projets via un dépôt Git

Script systèmenovembre 2014BashZshGitrsync

Code source Documentation

Script shell de 2014 qui envoie ses fichiers de configuration (.zshrc, .vimrc, .vim, .atom…) et un dossier de travail vers un dépôt Git, puis les réinstalle sur un autre poste en mettant de côté la configuration d’origine de la machine.

But du projet

Retrouver son environnement de travail (shell, éditeurs, projets en cours) sur n’importe quel poste, en utilisant un simple dépôt Git distant comme espace de stockage. L’outil prévoit aussi le cas d’une machine empruntée : la configuration de la personne qui l’utilise habituellement est sauvegardée avant d’être remplacée, puis peut être restaurée.

Fonctionnalités

Une fois gitSync.sh chargé par le shell, il fournit des alias :

  • gitSync : copie les fichiers listés dans favorites vers ~/Sync/Cfg, puis envoie tout ~/Sync sur le dépôt configuré avec un commit horodaté.
  • gitSyncAuto : relance la synchronisation toutes les 60 secondes, sans cron.
  • gitSyncTake : clone le dépôt dans ~/Sync puis installe sa configuration sur la machine (infect), après avoir mis de côté celle de l’hôte dans ~/Sync/.preserveGuest.
  • gitSyncClean et gitSyncUninstall : restaurent la configuration de l’hôte et suppriment toute trace de l’outil.

Fonctionnement

Tout est défini dans gitSync.sh : dossiers de travail, liste des fichiers suivis, intervalle de synchronisation, fonctions et alias. Au chargement, le script crée les dossiers manquants. À chaque envoi, le contenu de ~/Sync est recopié avec rsync dans un dossier temporaire, les sous-dépôts .git sont retirés, un dépôt neuf est initialisé puis poussé en force sur master : seul le dernier état est conservé à distance. Une option garde localement une copie préfixée par _ de la version précédente de chaque fichier.

Installation

git clone https://github.com/lp177/gitSync.git ~/.gitSync
bash ~/.gitSync/install.sh

install.sh demande l’adresse du serveur Git, le pseudo et le nom du dépôt, puis écrit l’URL obtenue dans gitSync.sh. Les alias ne sont disponibles qu’une fois le script chargé par le shell, par exemple depuis ~/.zshrc :

source ~/.gitSync/gitSync.sh

Limites connues

  • Projet de 2014, non maintenu.
  • Le push forcé écrase l’historique du dépôt distant à chaque synchronisation.
  • Le code contient des erreurs qui empêchent certaines commandes de fonctionner telles quelles : par exemple, cronErsatz appelle gitAutoSync alors que l’alias s’appelle gitSyncAuto.