GNU/Linux >> Tutoriales Linux >  >> Linux

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

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 que lo hice, he sido más productivo (particularmente para configurar nuevas instalaciones) y tengo más confianza en mis archivos de configuración. Con el control de versiones, tengo un registro de qué se realizaron cambios y el mensaje de confirmación proporciona el motivo 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 bajo 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.

Manualmente uso Git para realizar un seguimiento de mi personal archivos de configuración/inicio, por ejemplo, configuración de Vim, funciones de Bash, alias, etc., similar al enfoque que se describe en Cómo rastrear $HOME con git. Mantengo cada conjunto de archivos en su propio repositorio y uso enlaces simbólicos al directorio de inicio.

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

Inconvenientes

Un problema a tener en cuenta es si los archivos que se rastrean incluyen vínculos físicos. . Cuando se usa Git para extraer archivos o modificar el árbol de trabajo, desvincula los archivos y luego los vuelve a crear. Consulte Git, Dotfiles y Hardlinks para obtener 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 del archivo que los sistemas de control de revisión normalmente no admiten, pero que es importante para /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 todos los cambios en /etc son rastreados.

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. “commiting changes in /etc after yum run”

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

También admite enviar los archivos de configuración a 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 se cambia de Git a Bazaar. También puede desactivar las compromisos automáticos diarios .

Confirmaciones automáticas diarias

Los cambios pueden confirmarse automáticamente mediante un trabajo cron diario . Esto puede resultar molesto, ya que el repositorio puede abarrotarse con varios 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

Editar /etc/.gitignore para especificar cualquier archivo que no deba ser rastreado.

Primera ejecución

Después de configurar, ejecute los siguientes comandos:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Si su directorio actual es etc , puede ejecutar git normal comandos, por ejemplo,

sudo git status
sudo git log

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

Tal vez esta colección de experiencias pueda brindarle una mejor idea de en qué se puede estar metiendo:

efectos de inicializar el repositorio de 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 suficientes representantes, pero deseaba intervenir.

Editar

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


Linux
  1. ¿Esperar a que terminen de descargarse varios archivos?

  2. KRename:un potente renombrador de archivos por lotes para Linux

  3. Cómo usar Netcat para transferir archivos en Linux

  4. Cómo usar Logrotate para administrar archivos de registro

  5. Necesita un buen editor hexadecimal para Linux

Cómo usar CherryTree para tomar notas

Use Git para realizar una copia de seguridad de los archivos de configuración en Linux

Cómo usar el comando SCP para la transferencia de archivos

Cómo usar el comando SCP para transferir archivos de forma segura

Comando ls en Linux para listar archivos

Archivos de inventario y configuración de Ansible