Wie kann man die Metadaten-Engine von etckeeper für die Git-Kontrolle von Nicht- / etc-Dateisystemen wiederverwenden / erweitern oder Git nativ mit dieser Funktion erweitern?

16

Übersicht + Frage

Ich möchte die Metadaten-Kontrolle eines eTckeeper- ähnlichen Dateisystems für nicht- / etc, git-gesteuerte Verzeichnisse. Unter anderem Privat- und Web-App-Verzeichnisse reagieren klassisch auf Metadaten (Dateieigentum, Zugriffssteuerungsliste, Berechtigungen). Dies kann äußerst nützlich / wichtig sein, um git unter anderem für die automatisierte Serverbereitstellung (zusammen mit Tools wie Fabric ) einzusetzen . Ich möchte die etckeeper-ähnliche Funktion in diesen Verzeichnissen wiederverwenden, entweder mit etckeeper selbst oder mit etwas anderem.

Kann jemand Tipps / Tricks / Arbeitslösungen vorschlagen, um eine oder beide der folgenden Möglichkeiten bereitzustellen:

  1. Wenden Sie die etckeeper-Engine (achten Sie nur auf die git-spezifischen Funktionen von etckeeper) auf nicht-git-gesteuerte Verzeichnisse an. (Kann zumindest von Debian / Ubuntu Linux ausgehen; möchte nach Möglichkeit MacOSX / Homebrew- Unterstützung.)
  2. Erweitern Sie Git mit Metadatenunterstützung (über stark vereinfachte Dinge wie Git-Cache-Meta hinaus ), um eine Etckeeper-ähnliche Funktion zu unterstützen, oder besser?

Weitere Details, Hintergrund

Es besteht ein wachsendes Interesse daran , Git um Funktionen zur Steuerung von Metadaten im Dateisystem zu erweitern . Die Metadaten "Engine" von etckeeper scheint nach meiner Erfahrung ziemlich leistungsfähig und zuverlässig zu sein, und etckeeper scheint auch bei anderen beliebt zu sein . Dies ist zumindest teilweise auf die nicht textbasierten / zusammenführungsunfreundlichen Herausforderungen von metastore zurückzuführen . Weiterhin scheint etckeeper mit einem metastore-basierten Kern begonnen zu haben, aber dann auf einen eigenen umgestiegen zu sein (spekulativ?).

Dies hat offensichtlich betriebssystem- / dateisystemspezifische Abhängigkeiten. (Versuchen Sie beispielsweise nicht, die automatische Bereitstellung unter Windows durchzuführen.) Schlagen Sie eine optionale Option vorErweiterung (wenn es sich um eine "native Erweiterung" handelt) von git, die vom Benutzer bei Bedarf aktiviert wird und die bekannten Folgen eines plattformübergreifenden Bruchs hat, sodass das native Verhalten die plattformübergreifende Freundlichkeit von git "standardmäßig" nicht beeinträchtigt. Außerdem müssen Sie keine extravaganten Unix / Darwin / etc-Metadaten (wie ACLs) speichern. Grundlegende Benutzer- / Gruppen- / andere Berechtigungen und Benutzer- / Gruppenbesitz wären in Ordnung. (Dies sind die einzigen Dinge, die derzeit Probleme in meinen "Sicherheits- / Schwachstellen-Kontroll- / Richtlinien" verursachen.) Spezifische Betriebssysteme, auf die ich mich im Vorfeld konzentriere: Debian, Ubuntu, MacOS 10.6+. Später: RedHat's (CentOS, Fedora, RHEL), SUSE, möglicherweise andere Linuxe und * BSD (FreeBSD, NetBSD, OpenBSD). Sie sehen keine Notwendigkeit / Anwendung für Windows / VMS (obwohl VMS posix-freundlich sein kann) oder andere nicht-unix-ähnliche Betriebssysteme an einem vorhersehbaren Punkt.

Siehe auch: Hintergrundinformationen zu bereits vorhandenem Git, Dateimetadaten- / Dateityp-Tracking-Funktionen bei dieser von mir geposteten Stapelüberlauf-Frage .

Anforderungen für ein neues Projekt entwickeln?

Außerdem: Wenn jemand Anforderungen für solche Fähigkeiten entwickeln möchte, kann sich dies als nützlich erweisen, insbesondere wenn ein neues / noch nicht abgeschlossenes Projekt oben angesprochen wird.

Johnny Utahh
quelle
Sie könnten dies wahrscheinlich mit einigen (möglicherweise hoch entwickelten) Git-Hooks erreichen .
Justin ᚅᚔᚈᚄᚒᚔ
Benutzerdefinierte Hooks: Richtig, wie bei Git-Cache-Meta, wie oben erwähnt. nützlich, aber eine vereinfachte Lösung. Leider versuchen wir, diese Funktionalität über benutzerdefinierte Hooks hinaus in etwas "Community-Eigenes" zu "pushen", um bessere Funktionalität / Zuverlässigkeit / Features / Codereview / etc. Außerdem möchte ich es nicht von Grund auf neu schreiben, zumindest nicht von mir.
Johnny Utahh
fyi. Meine Frage von stackoverflow: Was bedeutet "git commit", wenn auf stdout "create mode ..." steht?
Johnny Utahh
Irgendwelche Updates hier?
Cregox

Antworten:

4

Laut dieser Serverfehler-Antwort machen Sie einfach Folgendes :

Es ist genau dort in der Manpage .

  • Erstellen Sie ein Verzeichnis /foo
  • Mit etckeeper initialisieren: etckeeper -d /foo init
  • Commit Commits auf das Verzeichnis anwenden: etckeeper -d /foo commit 'message'
SamB
quelle
Ziemlich interessant. Ich kann keine Etckeeper-Ports / -Tests finden, die unter Mac OS X ausgeführt werden. Weder in Homebrew noch anderswo sind sie wesentlich. Weiß jemand von irgendetwas?
Johnny Utahh
Ich bitte etckeeper um Vorschläge für die Mac OS X-Portierung hier: joeyh.name/code/etckeeper/discussion
Johnny Utahh
@JohnnyUtahh: Scheint keine Antwort von Joey oder jemand anderem gewesen zu sein ... Hast du irgendwelche Fortschritte bei einem OS X-Port gemacht?
Iconoclast
@JohnnyUtahh: Übrigens, ich habe folgendes gefunden: github.com/myint/etckeeper
iconoclast
@iconoclast Ich habe keine Arbeit für einen OS X-Port oder für dieses Projekt geleistet. github.com/myint/etckeeper sieht nützlich aus - danke!
Johnny Utahh
4

Ich beschäftigte mich mit diesem Problem und beschloss, ein Projekt namens git-store-meta dafür zu erstellen .

git-store-meta ist ein Perl-Skript, das die netten Funktionen von git-cache-meta, metastore, setgitperms und mtimestore integriert. Es sollte einen guten Kompromiss zwischen Flexibilität, Funktionalität, Leistung und plattformübergreifender Portabilität und Konsistenz bieten.

Danny Lin
quelle
Ich habe noch keine Zeit gefunden, git-store-meta zu testen und zu überprüfen, aber auf den ersten Blick sieht es gründlich und vielversprechend aus. Sehr geschätzt. Ich freue mich sehr darauf, dies zu testen. Nochmals vielen Dank, @Danny Lin.
Johnny Utahh
@ 'Danny Lin', bei meiner verwandten Frage zum Stackoverflow habe ich auf git-store-meta verwiesen .
Johnny Utahh,
Mein Standpunkt: Diese Lösung (Git-Store-Meta) ist besser als der Missbrauch von Etckeeper.
guettli
Update: Ich habe mir gerade README.md bei git-store-meta angesehen und es sieht großartig aus . Ich freue mich darauf, dass ich oder ein Mitglied meines Teams diese Chance bei der nächsten Gelegenheit ausprobieren.
Johnny Utahh