compartir configuraciones entre múltiples máquinas por sistema de control de fuente

Tengo varias máquinas linux. Quiero compartir mi .vimrc , .hgrc . Pero, hay una pequeña diferencia entre diferentes máquinas. ¿Hay un método inteligente?

Estoy usando mercurial.

 mkdir settings ln ~/.vimrc settings/vimrc ln ~/.hgrc settings/hgrc 

luego usa mercurial para mantener la configuration. Hay una pequeña diferencia de file hgrc en una máquina diferente. Necesito fusionar mi twig siempre. Me pregunto ¿hay un mejor método?

Lo que normalmente hago es tener un file .bashrc, etc. que es común en todos los sistemas, y luego .bashrc.local una versión local llamada .bashrc.local o algo así, que no se guarda en el control de fuente con la máquina específica configuraciones.

En .bashrc:

 . ~/.bashrc.local 

En .vimrc

 :source ~/.vimrc.local 

etc.


Si quiere ser elegante, puede almacenar sus files de configuration local en control de fuente utilizando su nombre de host como discriminador en el nombre de file local. Entonces en lugar de .vimrc.local puedes hacer .vimrc.machine1.local , etc.

Existe otra técnica (¿excesiva?) Que puede complementar otras respuestas.

Utilizo el títere que es una herramienta para configurar máquinas automáticamente. Escribo mi configuration de marioneta (almacenada en el control de versión) y luego la despliego en las máquinas de destino. Ofrece una function de "plantilla" que funciona para cualquier file.

Por ejemplo, escribe un file .vimrc.erb así:

 ENV_VAR=<%= varvalue %> 

con "varvalue" dependiendo de la máquina de destino. Con las declaraciones de marionetas correctas ( "para la máquina xyz, coloque un file .vimrc en el hogar generado a partir de la plantilla .vimrc.erb con varvalue = xyz" ), implemente la configuration en la máquina de destino.

Utiliza el poderoso mecanismo de templates "ruby embedded", por lo que incluso puedes escribir algún código ruby ​​para generar los valores. Es posible que desee usarlo directamente sin títere: erb