Po 8 latach poszukiwania znalazłem SVNFS przez Marco R. Gazzetta (który różni się od starszego projektu o tej samej nazwie przez Johna Maddena [których jeden robi różne rzeczy]). Ten SVNFS używa svn transparentnie w operacjach r / w:
Zamiast tworzyć system plików, który tworzy własną wersję, użyłem istniejącego narzędzia do kontroli wersji, subversion i uczyniłem jego użycie przezroczystym. Zaletą jest to, że ten system plików nie wymaga nauki nowego narzędzia, jeśli znasz subversion
Jest napisany w Pythonie i używa FUSE:
Teraz uruchom system plików kontroli wersji, wywołując załączony skrypt:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Gdy wszystko będzie w porządku, powinieneś być w stanie uzyskać listę obu katalogów i sprawdzić, czy zawartość jest taka sama.
Teraz, jeśli utworzysz (prawie) dowolny plik w jednym z katalogów, pojawi się on również po drugiej stronie ogrodzenia. Duża różnica polega na tym, że jeśli utworzysz plik w katalogu myfiles, zostanie on automatycznie objęty kontrolą wersji (odwrotnie nie jest prawdą).
W przykładzie SVNFS używa osobnego katalogu do repozytorium. Chociaż tego nie przetestowałem. Na moje potrzeby chciałbym mieć repozytorium w moim reż.
Znalazłem również odniesienie do możliwości wersjonowania Reiser4 4 lata temu:
Zobacz Reiser 4. Pliki są katalogami.
na przykład: diff -u main.C main.C/r/123
Lub uzyskać dostęp do właściwości
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Wydaje się, że najlepiej byłoby zastosować ten model, ponieważ główny system plików już podąża tą drogą.
-Paul Querna
Ale też tego nie sprawdziłem.
Dwa lata temu poszedłem szukać dalej, znalazłem projekt FiST do generowania systemów plików , które można ustawiać jeden na drugim, i skontaktowałem się z prof. Erez Zadok z Stony Brook University, który dawno temu był doradcą / mentorem projektu o nazwie versionfs . Cytowanie:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
pozwala użytkownikom łatwo i wydajnie zarządzać własnymi wersjami. Versionfs zapewnia tę funkcjonalność przy nie więcej niż 4% narzutu w przypadku typowych obciążeń użytkownika. Versionfs pozwala użytkownikom wybrać zarówno wersje, które mają być przechowywane, jak i sposób ich przechowywania, odpowiednio poprzez zasady przechowywania i zasady przechowywania. Użytkownicy mogą wybrać kompromis między przestrzenią a wydajnością, który najlepiej odpowiada ich indywidualnym potrzebom: pełne kopie, skompresowane kopie lub delty blokowe. Chociaż użytkownicy mogą kontrolować swoje wersje, administrator może egzekwować wartości minimalne i maksymalne oraz zapewniać użytkownikom rozsądne wartości domyślne.
Dodatkowo, dzięki wykorzystaniu libversionfs, niezmodyfikowane aplikacje mogą badać, manipulować i odzyskiwać wersje. Użytkownicy mogą po prostu uruchomić znane narzędzia, aby uzyskać dostęp do poprzednich wersji plików, zamiast wymagać od użytkowników nauki oddzielnych poleceń lub poprosić administratora systemu o ponowne zamontowanie systemu plików. Bez libversionfs poprzednie wersje są całkowicie ukryte przed użytkownikami.
Wreszcie Versionfs wykracza poza proste kopiowanie przy zapisie stosowane przez poprzednie systemy: wdrażamy kopiowanie przy zmianie. Chociaż początkowo spodziewaliśmy się, że porównanie starych i nowych stron będzie zbyt kosztowne, stwierdziliśmy, że wzrost czasu systemowego jest więcej niż rekompensowany zmniejszonym czasem operacji we / wy i procesora związanym z pisaniem niezmienionych bloków. Gdy stosowane są droższe zasady przechowywania (np. Kompresja), kopiowanie przy zmianie jest jeszcze bardziej przydatne.
Wydawało mi się to bardzo interesujące, ale skontaktowanie się z facetami, którzy pracowali nad projektem, ujawniło, że nie jest znanym miejscem jego kodu źródłowego. Sam profesor stwierdził w poczcie:
Kod Versionfs jest teraz bardzo stary i działał tylko w jądrze 2.4. Jeśli nadal potrzebujesz wersji f / s, którą można ustawiać jeden na drugim, trzeba by ją napisać od zera - prawdopodobnie na podstawie wrapfs (patrz wrapfs.filesystems.org/).
Więc nie ma tutaj działającego projektu, chociaż koncepcja systemów plików, które można układać jeden na drugim, wydaje mi się bardzo miła. Czy ktoś chciałby rozpocząć projekt oparty na wrapfs , powiadom mnie proszę :)