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_profilecon 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
dotfilecontinuación) parabash_profilecontrolar la versión.Usa enlaces simbólicos
bash_profilese mueve a su versión controlada dir (que contiene.git),$HOME/.bash_profilees un enlace suave soft$HOME/dotfile/bash_profile.$HOME/dotfile/bash_profilees dondebash_profilereside su actual , vea holman dotfile como un ejemplo.Usar script de sincronización
bash_profilepermanece en suHOMEdirectorio, pero es solo una copia del 'último'. Lo últimobash_profileaún vive$HOME/dotfile.Sí, es un enfoque de copiar y pegar, es por eso que necesitas un poco
syncing scriptpara salvarte del trabajo SECO . vea los archivos de puntos de Mathiasbynens como un buen ejemplo. Susyncing scripthttps://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
dotfilesen su$HOMEcrece, cuando se desea el control de versiones su favorito de configuración del editor de texto (por ejemplovimrc), cuando se utilizaSSHpara el trabajo con la cáscara múltiples de forma remota, es posible que tengazshrc,bashrc,fishrcetc.Esto significa que a la larga es posible que desee controlar la versión de todos sus
dotfilecorreos 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
.gitdirectorio "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.gitdirectorio que pueda confundir las herramientas (vim, emacs, ...) o git.Configuración:
Ahora hay un
~/.dotfiles/.gitdirectorio. 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.gitignoreque 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_profilearchivo de extensión se nombrabash_profile_exty se incluye en el/path/to/bash/profile/ext/directorio:Al final de su
.bash_profilearchivo tendrá:Y solo su
/path/to/bash/profile/extdirectorio 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_profileconfiguració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