• # Ma solution

    Posté par . En réponse au journal Gérer ses fichiers de config avec git. Évalué à 5.

    J’ai jamais prit le temps de la publier, mais ma solution est un poil plus complexe, elle évite le fait de versionner tout le home (donc les sous dossiers ne se croient pas dans un répertoire git). En fait le dépôt git est dans ~/.sync/ ; et on utilise un alias pour gérer ce dépôt :

    alias gitsync="GIT_DIR=~/.sync/.git git"

    L'installation se passe comme suit :

    git clone maison:~/git/sync ~/.sync; cd ~/.sync; ./.init-sync

    Pour initialiser le tout, le fichier .init-sync va paramétrer l’environnement:

    #!/bin/bash
    if [ -d .git -a "$PWD" != "$HOME" ]; then # This is a first run
     # At first run, we're run from the git dir, unconfigured
     export GIT_DIR=$PWD/.git
     git ls-files HEAD . |xargs rm -r
     git config --add core.worktree $HOME
     git checkout -f
     # configure bash
     echo "if [ -f ~/.bash-commons ]; then
     . ~/.bash-commons
    fi" >> ~/.bashrc
    else
     export GIT_DIR=$HOME/.sync/.git
    fi
    cd $HOME
    git submodule init
    git submodule update
    #configure vim
    vim +BundleInstall +qall

    Pour ajouter des fichiers dans le dépot:

    gitsync add -f .gitconfig

    Et ça permet de tracker et synchroniser à peu près tout ce qui compte (config bash, git, vim, less). Certains paquets supplémentaires sont installés comme submodules (z/autojump, icdiff, vimpager,...).

    Le fichier ~/.init-sync peut être relancé sur quand des nouveaux paquets vundle ou submodules sont ajoutés.