Nach 8 Jahren der Suche fand ich das SVNFS von Marco R. Gazzetta (das sich von älteren Projekten mit dem gleichen Namen von John Madden unterscheidet [welches man verschiedene Dinge tut]). Dieses SVNFS verwendet svn transparent in R / W-Operationen:
Anstatt ein Dateisystem zu erstellen, das seine eigene Versionierung durchführt, habe ich ein vorhandenes Versionierungstool, Subversion, verwendet und dessen Verwendung transparent gemacht. Der Vorteil ist, dass Sie für dieses Dateisystem kein neues Tool benötigen, wenn Sie mit Subversion vertraut sind
Es ist in Python geschrieben und verwendet FUSE:
Jetzt starten Sie das Versionsdateisystem, indem Sie das angehängte Skript aufrufen:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Sobald alles in Ordnung ist, sollten Sie in der Lage sein, eine Liste beider Verzeichnisse zu erhalten und festzustellen, dass der Inhalt identisch ist.
Wenn Sie nun (fast) eine Datei in einem der beiden Verzeichnisse erstellen, wird diese auch auf der anderen Seite des Zauns angezeigt. Der große Unterschied besteht darin, dass beim Erstellen einer Datei im Verzeichnis myfiles diese automatisch unter die Versionskontrolle gestellt wird (das Gegenteil ist nicht der Fall).
Im Beispiel verwendet SVNFS ein separates Verzeichnis für das Repo. Obwohl ich es nicht getestet habe. Für meine Bedürfnisse hätte ich gerne ein Repository direkt in meinem Arbeitsverzeichnis.
Ich habe auch vor 4 Jahren einen Hinweis auf die Versionsfunktionen von Reiser4 gefunden:
Siehe Reiser 4. Dateien sind Verzeichnisse.
z.B: diff -u main.C main.C/r/123
Oder um auf Eigenschaften zuzugreifen
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Es scheint, dass es am besten ist, diesem Modell zu folgen, da ein großes Dateisystem diesen Weg bereits geht.
-Paul Querna
Aber ich habe es auch nicht überprüft.
Vor zwei Jahren habe ich weiter gesucht, das Projekt FiST zur Generierung stapelbarer Dateisysteme gefunden und mich an prof. Erez Zadok von der Stony Brook University war Berater / Mentor für das Projekt versionfs langer Zeit . Zitat:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
ermöglicht es Benutzern, ihre eigenen Versionen einfach und effizient zu verwalten. Versionfs bietet diese Funktionalität mit nicht mehr als 4% Overhead für typische benutzerähnliche Workloads. Mit Versionfs können Benutzer auswählen, welche Versionen beibehalten werden und wie sie über Aufbewahrungsrichtlinien bzw. Speicherrichtlinien gespeichert werden. Benutzer können den Kompromiss zwischen Speicherplatz und Leistung auswählen, der ihren individuellen Anforderungen am besten entspricht: vollständige Kopien, komprimierte Kopien oder Blockdeltas. Obwohl Benutzer ihre Versionen steuern können, kann der Administrator minimale und maximale Werte erzwingen und Benutzern sinnvolle Standardeinstellungen bereitstellen.
Durch die Verwendung von libversionfs können unveränderte Anwendungen außerdem Versionen untersuchen, bearbeiten und wiederherstellen. Benutzer können einfach vertraute Tools ausführen, um auf frühere Dateiversionen zuzugreifen, anstatt dass Benutzer separate Befehle lernen müssen, oder den Systemadministrator bitten, ein Dateisystem erneut bereitzustellen. Ohne libversionfs sind frühere Versionen für Benutzer vollständig verborgen.
Schließlich geht Versionfs über das einfache Copy-on-Write hinaus, das in früheren Systemen verwendet wurde: Wir implementieren Copy-on-Change. Obwohl wir zunächst erwartet hatten, dass der Vergleich zwischen alten und neuen Seiten zu teuer sein würde, stellten wir fest, dass die Erhöhung der Systemzeit durch die verringerte E / A- und CPU-Zeit, die mit dem Schreiben unveränderter Blöcke verbunden ist, mehr als ausgeglichen wird. Wenn teurere Speicherrichtlinien verwendet werden (z. B. Komprimierung), ist das Kopieren bei Änderung noch nützlicher.
Es schien mir sehr interessant zu sein, aber die Kontaktaufnahme mit den Leuten, die an dem Projekt gearbeitet haben, ergab, dass es keinen bekannten Ort für den Quellcode gibt. Professor selbst erklärte in der Mail:
Der Code von Versionfs ist jetzt sehr alt und funktionierte nur in Kernel 2.4. Wenn Sie weiterhin eine stapelbare Versionierung von f / s wünschen, müssen Sie diese von Grund auf neu schreiben - möglicherweise basierend auf wrapfs (siehe wrapfs.filesystems.org/).
Es gibt hier also kein funktionierendes Projekt, obwohl mir das Konzept stapelbarer Dateisysteme sehr nett erscheint. Möchte jemand ein Projekt basierend auf Wrapfs starten , benachrichtige mich bitte :)