creo que lo que quiere podría ser similar a lo que he estado haciendo ...
hacer un directorio en el hogar llamado .host_configs/
. Esta es una versión controlada. O en mi caso, que vive en una carpeta especial en una computadora central, lo guardo en cualquier máquina nueva. Dentro, haga una carpeta para cada host para el que desee configuraciones diferentes. La carpeta para cada host debe nombrarse después del nombre de host corto para esa máquina. Así que en su repositorio git tiene:
.host_configs/
homecomp1/
girlfriendcomp1/
workcomp1/
workcomp2/
En cada carpeta específica anfitrión, poner el .vimrc, .irbrc, etc., los archivos de configuración para ese cuadro específico. Y también, en cada carpeta de host hacer un archivo llamado .[SHORT_HOST]_rc
. Por ejemplo, si su máquina tiene un nombre "sano", tenga un archivo llamado .sane_rc ... Este archivo contendrá las líneas que normalmente estarían en .bashrc que son exclusivas de ese host. Por ejemplo, si es un mac y necesita alias ls='ls -GF'
en lugar de alias ls='ls --color=auto'
que funciona para la mayoría de las máquinas nix para ls
con colores, ponga esa línea en el .[SHORT_HOST]_rc
para esa máquina, junto con las funciones especiales, declaraciones, etc. que normalmente entrarían en el .bashrc o .profile, etc. (o .zshrc, .tschrc, según sea el caso). Por lo que la versión controlada ~/.host_configs/
carpeta se parece a:
.host_configs/
homecomp1/
.homecomp1_rc #special shell configs for this hostname
.vimrc #you know the rest
.irbrc
.Xresources
girlfriendcomp1/
.girlfriendcomp1_rc
.vimrc
.bubblebathrc
workcomp1/
.workcomp1_rc
.bashrc
.vimrc
workcomp2/
.workcomp2_rc
.bashrc
.vimrc
utilizo de todos modos $ barebones HOME/.bashrc (o ~/.tshrc etc) en todas mis máquinas. Simplemente tomo el básico que viene con la distribución en cuestión y muevo toda la configuración específica del host al archivo .host-configs/[SHORT_HOST]/.[SHORT_HOST]_rc
.
poner esto en la parte inferior (de $HOME/.bashrc
):
export SHORT_HOST="sane"
for file in `find ~/.host_configs/$SHORT_HOST -name ".*"`
do
ln -s $file `basename $file`
done
source ~/`.$SHORT_HOST`_rc
(Encuentra todas las empresas punto-archivos para el anfitrión y hace un enlace simbólico en el hogar de la carpeta ~/.host_configs/foo_host
). Sus archivos dot están en su ubicación normal pero están enlazados simbólicamente al control de versión. Lo anterior también genera todas las líneas en su archivo [$SHORT_HOST]_rc
en .bashrc
Puede volver a comprometerse con git desde la carpeta ~/.host_configs/
cada vez que tenga cambios.
Eso es lo que parece en shell, que es probablemente todo lo que necesita, pero si necesita otras características, escribiría algo que use los mismos principios (obteniendo un archivo .rc externo en .bashrc y enlazando todas las configuraciones archivos a la carpeta de control de versión estructurada) en algo más versátil/menos feo que el shell. Así que en lugar de la anterior en su .bashrc, podría ser:
export SHORT_HOST="sane"
ruby ~/import_conf.rb $SHORT_HOST
... y escribir su import_conf.rb hacer gestión conf más complejas, como la colocación de un archivo de configuración específico en algún directorio fuera de la casa, o manejando una carpeta config como .ssh /, .subversion/etc. Eso es lo que hago, es bastante elegante para mí, pero puede haber mejores soluciones. Dropbox con algunos enlaces simbólicos creativos también es una excelente idea, aunque confíe en un tercero y necesita estar en un entorno gráfico. También tenga en cuenta que hay inconsistencias entre lo que puede hacer con enlaces simbólicos + Dropbox en Linux y atajos + Dropbox en Windows si se implementa algo que quiere jugar con Windows.
mira por dónde Sí, la gente usa el control de revisión para archivos de configuración. Lo veo especialmente para los archivos de configuración del administrador de ventanas, pero solo haz una búsqueda en "config" para ver lo que obtienes. –