Así que uso Git principalmente para fines de desarrollo, pero me di cuenta de que podía usarlo para almacenar versiones de los archivos de configuración que tengo en mi instalación de Ubuntu.
Mi configuración propuesta es:
git init
un repositorio en/
Agregue un
.gitignore
at/
que ignore cualquier archivo, excepto la configuración específica que deseo rastrear.Por ejemplo,
.gitignore
podría contener ( fuente ):## Ignore everything... * ## Except... !/etc/default/tlp !/etc/crontab
Cada vez que cambio estas configuraciones de bajo nivel, puedo rastrearlas.
¿Hay algo que pueda salir mal con esta configuración? ¿El núcleo siempre necesita /
tener solo ciertas carpetas? ¿Va a estropear el funcionamiento de cualquier aplicación?
~
archivos de configuración del directorio casa en lugar de/
archivos/etc/crontab
en mi laptop personal son definitivamente mías, pero entiendo lo que quieres decir.etckeeper
y hacer copias de seguridad.Respuestas:
La respuesta a ambas preguntas es no, puede crear cualquier directorio que desee en el
/
. Supongo que lo único que podría suceder son algunos problemas de permisos con algunas rutas espaciales.Sin embargo, es mejor almacenar el
.git
directorio en otro lugar, algo así parece:Lea aquí .
fuente
En realidad, es probable que desee archivos de configuración de control de versiones en
/etc/
(que no se preocupan por las entradas del directorio raíz/
, en particular directorios comoproc
ousr
, obin
en/
) así que es posible que desee instalar eletckeeper
paqueteY también puede controlar la versión de algunos subdirectorios seleccionados (como el
/usr/share/applications/
que mencionó).Sin embargo, no te metas con el sistema de administración de paquetes de Ubuntu . Quizás debería hacer una copia de seguridad de la lista actual de paquetes instalados.
fuente
/usr/share/applications
ya que ocasionalmente me meto con ellos.Tener un repositorio de git en / funciona bien, excepto que hace que sea difícil darse cuenta cuando tienes un repositorio de git de menor nivel con problemas, ya que responderá a todos ellos.
Nota: Es menos trabajo y probablemente más útil usar 'debsums'
Lo que le permitirá detectar rápidamente (la mayoría) de los cambios en los archivos binarios o en los archivos de configuración.
Como ejemplo de los paquetes instalados, aquí están los que difieren de los paquetes ascendentes.
Y puede obtener una lista de archivos de configuración modificados con:
Observe cómo el navegador de cromo está incorrectamente empaquetado y tiene un archivo en la lista de archivos del paquete que no existe.
Esto utiliza los datos dpkg y evita un gran directorio /.git y flujo de trabajo.
fuente
/home/$USER
entonces.git
in in/
responderá por cualquier comando git dado para el repositorio en/home$USER
lugar de para ese [.gir
archivo] en/home/$USER
....git
directorio más alto en el árbol, solo tienes que accedercd
a él o a un subdirectorio que no tiene una.git
carpeta (un directorio normal)Así que he estado explorando las otras respuestas y he encontrado un procedimiento que me funciona:
Haz un
.gitignore
at/
. Esto fue mucho más complicado de lo que pensé que sería, debido a la forma en que Git maneja los archivos de la lista blanca en subcarpetas. Usé este y este enlace para ayudarme.Vaya
/
y ejecutegit init .
Hasta ahora, no he podido almacenar la.git/
carpeta en otro directorio utilizando el enlace mencionado por @Ravexina .Corre
git add .
ygit status
. Debería obtener una lista de todos los archivos de configuración que Git está rastreando.Comprometerse con
git commit -m "Initial settings files"
.Puede realizar un seguimiento de los cambios con
git log -p -- path/to/file
ogitk path/to/file
. Más discusión sobre esto aquí .fuente
Si va a almacenar cosas sensibles (como
/etc/shadow
) en el repositorio de git, debe asegurarse de que no todos los usuarios puedan leerlo, ya que de forma predeterminada los objetos tendrán permiso444
y los directorios tendrán permiso0755
. Puede cambiar el permiso de.git
to700
o ponerlo en/root
Otro problema es que git no almacena permisos de archivos como el sistema de archivos, y no almacena atributos extendidos. Para los archivos, git solo almacena si son ejecutables. Entonces, si desea restaurar un archivo eliminado, su propietario y grupo serán root (si lo hace como root), y su permiso será
644
o755
. Puede ser problemático para los archivos de configuración de servicios cuyo propietario no es root.fuente