38 votes

Gestion des fichiers de configuration utilisateur sur plusieurs ordinateurs

J'ai souvent travailler sur plusieurs ordinateurs. J'ai plusieurs fichiers de configuration, par exemple, .bashrc, .gitconfig, .irbrc, .vimrc et dossiers de configuration, par exemple, .vim/ qui contiennent de précieux personnalisations. Parfois, j'ai envie de petites variations dans la configuration entre les différents ordinateurs.

Je veux utiliser le contrôle de version pour gérer ces différents fichiers.

  • d'autres personnes utiliser le contrôle de version pour gérer leurs fichiers de configuration?
  • ce sont quelques conseils qui pourraient faire de ce plus facile?
  • quelle est la façon la plus élégante de traiter avec des variations entre les ordinateurs?
  • Je suis à l'aise avec git; toutes les autres suggestions?

18voto

Christian Oudard Points 13461

Je garde un dossier à l' ~/config/ qui est un dépôt bzr. Je push/pull le référentiel entre mes différents ordinateurs à synchroniser vers le haut. J'ai un script d'installation que j'utilise pour faire des liens symboliques à mon répertoire home:

#! /bin/sh
# link all files to the home directory, asking about overwrites
cd `dirname $0`
SCRIPT_DIR=`pwd`
SCRIPT_NAME=`basename $0`
FILES=`bzr ls --versioned --non-recursive`

cd $HOME
for FILE in $FILES; do
    ln --symbolic --interactive $SCRIPT_DIR/$FILE
done
rm $TARGET_DIR/$SCRIPT_NAME

Si vous souhaitez utiliser git au lieu de bzr, vous pouvez à la place utiliser:

FILES=`git ls-tree --name-only HEAD`

(J'ai dû demander de manière à le savoir)

EDIT: je n'ai pas vraiment faire ça, maintenant, j'ai un dotfiles repo github, avec un joli râteau script d'installation que quelqu'un d'autre a écrit.

14voto

Peter Points 38320

Pour le moment, j'utilise un clone git repo. Pour garder les choses simples, le seul fichier qui doit varier entre les différentes machines, .bashrc. C'est bien si il ne peut être qu'une version de ce fichier qui répond différemment sur différentes machines. Donc, en .bashrc:

if [ $(hostname) == 'host1' ]; then
     # things to do differently on host1.
elif [ $(hostname) == 'host2' ]; then
     # things to do differently on host2.
fi

Cela a évidemment certaines limites (par exemple, une autre technique serait nécessaire pour d' .vimrc ou d'autres fichiers de config besoin de personnalisation), mais il fonctionne assez bien.

3voto

jdehaan Points 14019

Avec CfEngine, vous pouvez gérer des fichiers de configuration sur plusieurs machines et faire beaucoup plus de choses! La courbe d’apprentissage est peut-être un peu élevée, mais elle en vaut la peine si vous devez gérer / mettre à jour / maintenir à jour un groupe d’ordinateurs exécutant Linux.

2voto

FractalizeR Points 12887

2voto

phsiao Points 629

J'utilise slack pour une situation similaire. slack permet de définir les rôles / sous-rôles afin que vous puissiez gérer les fichiers avec de petites variations, que ce soit par le biais d'un fichier cloné ou d'un correctif. Le répertoire slack est ensuite géré par git dans mon déploiement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X