2009-05-30 8 views
4

J'ai donc une configuration assez personnalisée de fichiers de point à ce stade, et j'ai cherché une solution pour garder les choses synchronisées d'une machine à l'autre. J'aime l'idée d'avoir un répertoire ~/dotfiles (ou similaire) qui contient un makefile qui gère la création de liens symboliques. Déplacez le dossier dotfiles de la machine à la machine via rsync/unison/dvcs/whatever, et je suis prêt à partir.Gérer le répertoire de base sur plusieurs machines avec quelques différences?

Le problème avec ceci se produit parce que les fichiers diffèrent légèrement sur certaines machines, et je voudrais un moyen de suivre cela. Par exemple, mon .xmobarrc (une application de panneau pour ceux qui ne sont pas familiers), a un paramètre de configuration pour afficher la vie de la batterie sur mon ordinateur portable, mais pas sur mon bureau. Quelle est la meilleure façon de gérer les fichiers avec des différences par machine de cette manière, de telle sorte que si je change sur une machine quelque chose qui devrait affecter toutes les machines, je peux revenir en arrière, et si je change sur une machine ne devrait pas fusionner, ce ne sera pas le cas. De toute évidence, un DVCS comme git est nécessaire pour cela, par opposition à rsync/unison/etc, mais je ne suis pas sûr de savoir comment configurer cela.

Branche maîtresse avec une branche par machine que je fusionne/rebase/cherry ramasser d'avant en arrière? Cela semble un peu fastidieux. Y a-t-il un meilleur moyen?

Répondre

2

Une façon serait d'avoir:

  • une configuration globale avec tous les paramètres globaux (si vous changez et fusionner la, il aurait une incidence sur toutes les machines)
  • un fichier de configuration par machine (nommé par exemple après la machine uname)
  • un script construisant votre fichier de configuration final comme la composition du global et celui de la machine.

Compte tenu des fusions:

  • Lors de la fusion des fichiers de configuration d'une branche à l'autre, vous pouvez fusionner tout (pas picorage impliqué)
  • ou vous ne disposez pas toujours d'avoir une branche par machine, puisque les fichiers de configuration basés sur la machine assurent déjà la séparation et l'isolation de ces paramètres (dans différents fichiers au lieu de branches différentes)