Bajo Gentoo, la herramienta para administrar cambios inducidos por paquetes a / etc (llamada dispatch-conf) admite rcs para rastrear cambios, pero eso no es realmente poderoso.
Tiendo a versionar mi / etc a través git
, especialmente porque al usar diferentes ramas puedo mantener mi / etc lo más similar posible en diferentes distribuciones como sea posible mientras mantengo la mayor cantidad de cosas en un lugar posible (para algunas áreas que obviamente fallan, configuración de apache por ejemplo, es realmente diferente en diferentes distribuciones). Funciona así:
Tengo mi master
repositorio con mis archivos de configuración predeterminados. Ahora entro en contacto con una nueva distribución, así que creo una nueva rama basada en mi master
rama basada en el nombre de la distribución (en este ejemplo, debian). Debian mantiene algún archivo de configuración en una ubicación diferente a la mía, master
así que hago un git mv file new_loc
. Y todo está bien. Vuelvo master
y cambio ese archivo porque agregué una directiva de configuración específica, cuando me fusiono master
en mi debian
rama, el archivo movido cambia, por lo que básicamente puedo cambiar la mayoría de las cosas dentro de mi master
rama y solo tengo que fusionar los cambios en mi "distribución" ramas (por lo general, tienden a ser más una mezcla de distribución y ramas de propósito, un servidor Debian tiene algunas diferencias con una estación de trabajo Debian, obviamente, pero las características aún funcionan).
Así que, básicamente, tengo una "configuración genérica" master
y (por decirlo en términos de programación orientada a objetos) las heredo en mis ramas (que también pueden heredarse entre sí).
Aparte de eso, git
los mecanismos para "confirmar" los compromisos (en este caso, los cambios a / etc /) me han sido muy útiles en momentos en los que solo necesitaba partes de una determinada configuración.
Ahora a algunas de sus ideas:
- Si necesitara más integración del administrador de paquetes, probablemente usaría scripts de envoltura para esto (en este momento no lo hago).
- tratar las versiones anteriores como una rama funcionaría bien
git
, es solo otra rama en la que a veces se fusiona (parcialmente)master
- La lista de ignorados en git es el archivo .gitignore en su repositorio para que esté cubierto.