¿Es una buena idea usar git para controlar la versión del archivo de configuración?

18

Yo uso Gentoo Linux y tiene una configuración bastante compleja. Mi pregunta, ¿es aconsejable usar git para la versión que controla mis archivos de configuración?

Tengo algunos repositorios de git en mi casa, supongo que si pongo / home / ** en mi .gitignore no causarán problemas.

Actualización de aclaraciones:

¿Es un método inteligente usar git para controlar la versión de mis archivos de configuración de nivel de sistema en el directorio raíz "/"?

atevm
fuente
@AnthonyGeoghegan Quiero rastrear mi directorio raíz "/", lo que puede tener consecuencias interesantes en el futuro, por lo que el hilo vinculado solo responde parcialmente a mi pregunta. La otra parte: es aconsejable usar git para la versión que controla mis archivos de configuración aún sin respuesta
atevm
1
@AnthonyGeoghegan gracias. Actualicé la pregunta.
atevm

Respuestas:

19

La respuesta corta a su pregunta es .


No dudaría en recomendar Git (o cualquier otro software de control de versiones) para realizar un seguimiento de los archivos de configuración. Desde entonces, he sido más productivo (particularmente para configurar nuevas instalaciones) y tengo mayor confianza en mis archivos de configuración. Con el control de versiones, tengo un registro de lo que se hicieron cambios y el mensaje de confirmación proporciona la razón por qué se hizo el cambio. Si un cambio tiene efectos secundarios no deseados, puedo revisar fácilmente el registro / historial para ver qué cambio causó los efectos.

Personalmente, desconfiaría de rastrear todos los archivos en el /directorio raíz. La lista de caminos a ignorar podría volverse grande y difícil de manejar. Prefiero mantener cada conjunto lógico de archivos en su propio repositorio.

Yo uso manual Git para realizar un seguimiento de mis personales de configuración / archivos de arranque, por ejemplo, la configuración de Vim, funciones Bash, alias, etc. - similar al enfoque que figuran en Cómo realizar el seguimiento $ HOME con git . Mantengo cada conjunto de archivos en su propio repositorio y uso enlaces simbólicos al directorio de inicio.

Para los archivos de configuración del sistema , uso Git con Etckeeper para realizar un seguimiento de los archivos en mi /etcdirectorio.

Inconvenientes

Una cuestión a tener en cuenta es si los archivos que se rastrean incluyen enlaces duros . Cuando Git se usa para extraer archivos o modificar el árbol de trabajo, desvincula los archivos y luego los recrea . Ver Git, Dotfiles y Hardlinks para una explicación más completa.

Etckeeper

Etckeeper se puede usar para mantener un historial completo de los cambios realizados en / etc. Realiza un seguimiento de los metadatos de los archivos que los sistemas de control de revisiones normalmente no son compatibles, pero para eso es importante /etc, como los permisos de /etc/shadow.

Se conecta a los administradores de paquetes como apt y yum y (en su configuración predeterminada), se ejecuta antes y después de la instalación para que /etcse rastreen todos los cambios .

Si se instala o elimina un paquete, todos los cambios no confirmados en / etc se confirmarán antes de la operación del paquete para que haya dos confirmaciones:

  1. "Guardar cambios no confirmados en / etc antes de ejecutar yum"
  2. "Confirmar cambios en / etc después de ejecutar yum"

Lo he usado con distribuciones basadas en Debian y Red Hat y sé que es compatible con la gestión de paquetes Arch. No puedo decir cuánta automatización agregaría a un sistema Gentoo, pero hay un paquete disponible para ello .

También admite la inserción de los archivos de configuración en un repositorio remoto (que, por supuesto, debería ser privado).

Configuración

Después de instalar el paquete, es posible que deba configurarlo ( /etc/etckeeper/etckeeper.conf), por ejemplo, en los sistemas Ubuntu, el sistema de control de versiones predeterminado cambia de Git a Bazaar. También puede deshabilitar las confirmaciones automáticas diarias .

Autocompromisos diarios

Los cambios pueden ser confirmados automáticamente por un trabajo cron diario . Esto puede ser molesto ya que el repositorio puede estar lleno de múltiples mensajes de confirmación automatizados.

Descomento la línea apropiada en /etc/etckeeper/etckeeper.conf:

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Ignorar ciertos archivos

Edite /etc/.gitignorepara especificar cualquier archivo que no deba rastrearse.

Primer intento

Después de configurar, ejecute los siguientes comandos:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Si su directorio actual es etc, puede ejecutar gitcomandos regulares , por ejemplo,

sudo git status
sudo git log
Anthony G - justicia para Monica
fuente
1
Wow, fue muy útil y detallado ... gracias :)
atevm
Solo para actualizar una respuesta muy bien escrita: etckeeperdurante la confirmación diaria, en realidad se comprobará primero si /etcestá "impuro", es decir, si tiene archivos no confirmados. Si no, no se comprometerá. Entonces, si su registro de confirmación está lleno de confirmaciones diarias, es probable que haya archivos que cambian diariamente que no ha agregado al .*ignorearchivo :-)
pepoluan
Además, en Ubuntu tiene esta tendencia molesta de realizar inmediatamente un bzr init--__-- ... Recomiendo siempre ejecutarlo etckeeper uninit -fdespués de la instalación.
pepoluan
Tenga en cuenta que, obviamente, etckeeper ya no está alojado en github. Ahora usan su propio sistema en su página de inicio. Probablemente alguna aversión a M $ por parte del autor. Personalmente, considero que es una decisión desafortunada, ya que ahora no puede informar problemas fácilmente y no puede ver cuán popular es el proyecto.
Michael Härtl
Gracias @ MichaelHärtl He eliminado el enlace obsoleto al repositorio de GitHub.
Anthony G - justicia para Monica
3

Uso git para rastrear áreas específicas de mi directorio de inicio. Personalmente, no viajaría por el camino del seguimiento del directorio raíz, pero debo decir que admiro su ambición. :)

Quizás esta colección de experiencias podría proporcionarle una mejor idea de lo que podría estar metiendo:

efectos de inicializar el repositorio git en el directorio raíz de Linux 3 :)

Disculpas por una "respuesta", en lugar de simplemente lanzar el enlace en un comentario; sin embargo, no hay suficiente representante, pero deseaba intervenir.

Editar

¡Guauu! Muy buena respuesta de @AnthonyGeoghegan. Creo que esta no es una lucha tan grande como la imaginé originalmente.

Michael Stilson
fuente
0

También uso gitpara almacenar y mantener mi dotfiles, pero en a git bare repository. Una guía detallada se puede encontrar aquí . Estoy usando dos repositorios, uno para mis usuarios dotfiles con nombre myconfy otro para los rootfiles con nombre rootconf.

Además, puede usar ambas configuraciones en muchas máquinas, diferentes distribuciones de Linux o máquinas virtuales: simplemente cree una nueva rama para una configuración distinta. Luego, evita mezclar el código en el mismo archivo (por ejemplo .bash_alias): ya no es molesto comprobar si la máquina actual; nore no se necesitan enlaces!

Chris
fuente