Así que me siento muy cómodo con el control de versiones, y solo pensé en comenzar a rastrear versiones de mi perfil de bash: ~/.bash_profile
con el beneficio adicional de poder compartir mis diversos alias y demás en GitHub.
Suponiendo que mi archivo .bash_profile necesita permanecer en mi directorio de inicio (no puedo envolverlo en un directorio para rastrearlo solo como un archivo normal), ¿cuál sería la mejor manera de hacerlo? No quiero inicializar un repositorio git en mi directorio de inicio, y tengo que ignorar cualquier otro archivo presente.
Entonces, ¿cuál podría ser una buena solución?
Supongo que podría hacer una copia de él en un directorio separado y actualizarlo / confirmarlo de vez en cuando, pero tengo curiosidad por saber si hay una buena manera de controlar la versión de un solo archivo en un directorio poblado.
fuente
Respuestas:
Afaik, normalmente hay dos formas de hacerlo: a) enlace simbólico b) script de sincronización. En ambos casos, debe crear otro repositorio (nómbrelo a
dotfile
continuación) parabash_profile
controlar la versión.Usa enlaces simbólicos
bash_profile
se mueve a su versión controlada dir (que contiene.git
),$HOME/.bash_profile
es un enlace suave soft$HOME/dotfile/bash_profile
.$HOME/dotfile/bash_profile
es dondebash_profile
reside su actual , vea holman dotfile como un ejemplo.Usar script de sincronización
bash_profile
permanece en suHOME
directorio, pero es solo una copia del 'último'. Lo últimobash_profile
aún vive$HOME/dotfile
.Sí, es un enfoque de copiar y pegar, es por eso que necesitas un poco
syncing script
para salvarte del trabajo SECO . vea los archivos de puntos de Mathiasbynens como un buen ejemplo. Susyncing script
https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh .además
Como sospechas:
El control de versiones de un solo archivo no tiene mucho sentido, copiar y pegar o simplemente colocarlo en algunas unidades en la nube le ahorra muchas molestias.
El punto real es que las cosas no se escalan esta manera, cuando el
dotfiles
en su$HOME
crece, cuando se desea el control de versiones su favorito de configuración del editor de texto (por ejemplovimrc
), cuando se utilizaSSH
para el trabajo con la cáscara múltiples de forma remota, es posible que tengazshrc
,bashrc
,fishrc
etc.Esto significa que a la larga es posible que desee controlar la versión de todos sus
dotfile
correos electrónicos. El archivo de puntos de Github es un buen punto de partida.fuente
Por qué no? Desea rastrear un archivo en su directorio de inicio, por lo tanto, su directorio de inicio también debe estar bajo control de versión.
Eso no significa que su directorio de inicio deba ser un repositorio git. Dejame explicar:
Los repositorios git constan de dos partes: un árbol de trabajo (a menos que sea un repositorio desnudo, por supuesto) y el
.git
directorio "base de datos". Por lo general, el último es solo un subdirectorio (oculto) del primero, pero eso no es estrictamente necesario. git admite el uso de un árbol de trabajo separado . Por lo tanto, puede mantener su directorio de inicio bajo control de versiones, pero no es necesario que contenga un.git
directorio que pueda confundir las herramientas (vim, emacs, ...) o git.Configuración:
Ahora hay un
~/.dotfiles/.git
directorio. Use eso pero especifique el directorio de inicio como árbol de trabajo. Esto requiere una línea de comando bastante larga, por lo tanto, un alias es una buena idea:Para usarlo solo use el alias anterior en lugar de
git
, por ejemplodotfiles status
.Beneficios:
Obtuve esto de esta publicación de blog (que tiene algunas informaciones adicionales) y lo estoy usando sin ningún problema. Yo no, pero con una simple línea
*
en la.gitignore
que usted puede deshacerse de la posiblemente enorme cantidad de archivos sin seguimiento y protegerse a sí mismo un poco en contra de añadir archivos al repositorio que no están destinados a ser añadido.fuente
Otra solución sería deportar su configuración específica (como establecer sus propios alias o definir sus propias funciones) a un archivo diferente que
.bash_profile
. De esta manera, solo su configuración específica será versionada y solo tendrá que obtenerla de su.bash_profile
.Hazlo manualmente
Digamos que este
.bash_profile
archivo de extensión se nombrabash_profile_ext
y se incluye en el/path/to/bash/profile/ext/
directorio:Al final de su
.bash_profile
archivo tendrá:Y solo su
/path/to/bash/profile/ext
directorio será versionado.Hazlo usando una aplicación de terceros
Aún más simple (supongo :-)), estoy desarrollando shprofile que le ayuda a administrar su perfil de shell, al centrarse solo en la configuración específica de su perfil. shprofile le permite definir toda la configuración de su perfil específico en un solo directorio, que luego puede ser versionado. Tenga en cuenta que también puede administrar varios perfiles para el mismo usuario.
Nuevamente, no es necesario versionar toda su
.bash_profile
configuración, sino solo sus valores agregados.fuente
Para la gestión de la configuración de TI a nivel empresarial, muchos usan Puppet. Recomiendo Puppet a los clientes como una medida de contención de costos y confiabilidad. Aquí en el laboratorio, lo mantenemos simple.
Nuestro repositorio principal contiene los archivos necesarios para reconstruir completamente un sistema bloqueado o crear una nueva cuenta de usuario, y el control de versiones ha sido útil en varias ocasiones. Git está bien con archivos y directorios que comienzan con un punto siempre que git no esté configurado para ignorarlos.
Estas son rutas de repositorio para la instalación y configuración de sistemas y aplicaciones.
Estos son archivos de configuración de usuario general.
Estos son para cuentas remotas en servidores.
Estos son para la cuenta raíz.
Utilizo archivos de tamaño cero llamados use.ls.al.to.see.dot.files.here para recordarme que el directorio solo PARECE vacío.
fuente