¿Cómo reutilizar / extender el motor de metadatos de etckeeper para el control git de sistemas de archivos que no son / etc, o extender git de forma nativa con dicha capacidad?

16

Resumen + pregunta

Quiero un control de metadatos del sistema de archivos similar a etckeeper para directorios no controlados por git, etc. Los directorios de inicio y de aplicaciones web, entre otros, son clásicamente sensibles a los metadatos (propiedad de archivos, ACL, permisos). Esto puede ser extremadamente útil / importante para emplear git para la implementación automatizada de servidores (junto con herramientas como Fabric ), entre otras cosas. Me gustaría reutilizar la capacidad de etckeeper en dichos directorios, ya sea con etckeeper o con otra cosa.

¿Alguien puede sugerir algún consejo / truco / solución de trabajo para proporcionar uno o ambos de los siguientes:

  1. aplique el motor etckeeper (solo se preocupan por la capacidad específica de git de etckeeper) a directorios no controlados por git, etc. (Puede suponer al menos Debian / Ubuntu Linux; quisiera MacOSX / homebrew si es posible).
  2. ¿Extiende git con soporte de metadatos (más allá de cosas demasiado simplificadas como git-cache-meta ) para soportar una capacidad similar a etckeeper o mejor?

Más detalles, antecedentes

Hay un creciente interés en extender git con capacidades de control de metadatos del sistema de archivos . El "motor" de metadatos de etckeeper parece bastante potente y confiable en mi experiencia, y etckeeper también parece popular entre los demás . metastore no tanto, al menos en parte debido a los desafíos no metas / merge-amigable de metastore . Además, etckeeper parece haber comenzado con un núcleo basado en metastore, pero luego cambió a su propio (¿especulativo?).

Obviamente, esto tiene dependencias específicas del sistema operativo / sistema de archivos. (p. ej., no intentar la implementación automática en Windows). Sugerir una opciónextensión (si es una "extensión nativa") de git, habilitada bajo demanda por el usuario con las consecuencias entendidas de la ruptura multiplataforma, de modo que el comportamiento nativo no rompa la amistad multiplataforma "por defecto" de git. Además, no es necesario guardar metadatos extravagantes de unix / darwin / etc (como ACL); usuario básico / grupo / otros permisos y propiedad de usuario / grupo estaría bien. (Estas son las únicas cosas que actualmente están rompiendo cosas en mis "políticas / control de seguridad / vulnerabilidad".) Sistemas operativos específicos a los que me dirijo desde el principio: Debian, Ubuntu, MacOS 10.6+. Más tarde: Redhat's (CentOS, Fedora, RHEL), SUSE, tal vez otros Linux y * BSD (FreeBSD, NetBSD, OpenBSD). No veo una necesidad / aplicación para Windows / VMS (aunque VMS puede ser compatible con posix) u otros sistemas operativos no similares a Unix en cualquier momento previsible.

Ver también: antecedentes sobre git preexistente, capacidades de seguimiento de metadatos de archivo / tipo de archivo en esta pregunta de stackoverflow que publiqué .

¿Desarrollar requisitos para un nuevo proyecto?

Además: si a alguien le interesa desarrollar requisitos para dicha capacidad, estoy seguro de que podría resultar útil, particularmente para un proyecto nuevo / incompleto que se abordará anteriormente.

Johnny Utahh
fuente
FYI. Encontré estas preguntas y respuestas en ServerFault: ¿Se puede usar etckeeper para rastrear archivos de configuración fuera de / etc? .
Johnny Utahh
Probablemente podría lograr esto usando algunos (potencialmente sofisticados) git hooks .
Justin ᚅᚔᚈᚄᚒᚔ
Ganchos personalizados: correcto, como con git-cache-meta como se mencionó anteriormente; útil, pero una solución demasiado simplificada. Por desgracia, busca "impulsar" esta funcionalidad más allá de los enganches personalizados por el usuario en algo "propiedad de la comunidad" para una mejor funcionalidad / confiabilidad / características / revisión de código / etc. Además, no quiero escribirlo desde cero, al menos no solo.
Johnny Utahh
FYI. Mi pregunta de stackoverflow: ¿Qué significa 'git commit' cuando dice 'crear modo ...' en stdout?
Johnny Utahh
¿Alguna actualización aquí?
cregox

Respuestas:

4

De acuerdo con esta respuesta predeterminada del servidor , simplemente haga esto:

Está justo allí en la página del manual .

  • Crea un directorio /foo
  • Inicializar con etckeeper: etckeeper -d /foo init
  • Confirmar aplicar confirma al directorio: etckeeper -d /foo commit 'message'
SamB
fuente
Bastante interesante. No puedo encontrar ningún puerto / prueba de etckeeper que se ejecute en Mac OS X. Nada en homebrew ni en ningún otro lugar es sustancial. Alguien sabe de algo?
Johnny Utahh
Le pido sugerencias a etckeeper para portar Mac OS X aquí: joeyh.name/code/etckeeper/discussion
Johnny Utahh
@JohnnyUtahh: no parece haber habido ninguna respuesta de Joey o de nadie más ... ¿ha progresado en un puerto OS X?
iconoclasta
@JohnnyUtahh: por cierto, encontré esto: github.com/myint/etckeeper
iconoclasta
@iconoclast No he hecho ningún trabajo hacia un puerto OS X, o cualquier trabajo en este proyecto, para el caso. github.com/myint/etckeeper parece útil, ¡gracias!
Johnny Utahh
4

Investigué este problema y decidí crear un proyecto git-store-meta para él.

git-store-meta es un script perl que integra las características agradables de git-cache-meta, metastore, setgitperms y mtimestore. Debe servir un buen compromiso de flexibilidad, funcionalidad, rendimiento y portabilidad y consistencia multiplataforma.

Danny Lin
fuente
Todavía no he encontrado tiempo para probar y revisar git-store-meta, pero a primera vista parece exhaustivo y bastante prometedor. Muy apreciado Tengo muchas ganas de probar esto. Gracias de nuevo, @Danny Lin.
Johnny Utahh
@ 'Danny Lin', he hecho referencia a git-store-meta en mi pregunta relacionada con stackoverflow .
Johnny Utahh
Mi punto de vista: esta solución (git-store-meta) es mejor que abusar de etckeeper.
guettli
Actualización: Acabo de mirar README.md en git-store-meta , y se ve muy bien . Espero que yo o uno de mi equipo pruebe esto la próxima vez que tengamos.
Johnny Utahh