Після 8 років пошуку я знайшов SVNFS по Марко Р. Gazzetta (який відрізняється від старшого проекту з тим же ім'ям Джон Медден [який один робить різні речі]). Цей SVNFS прозоро використовує svn в операціях з виводу на робочий стіл:
Замість створення файлової системи, яка робить власну версію, я використав існуючий інструмент версії, підрив і зробив його використання прозорим. Перевага полягає в тому, що ця файлова система не вимагає, щоб ви засвоїли новий інструмент, якщо ви знаєте підрив
Він написаний на Python і використовує FUSE:
Тепер ви запускаєте файлову систему версій, використовуючи доданий сценарій:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Як тільки все буде добре, ви зможете отримати список обох каталогів і побачити, що вміст однаковий.
Тепер, якщо ви створите (майже) будь-який файл у будь-якому каталозі, він з’явиться і з іншого боку забору. Велика різниця полягає в тому, що якщо ви створите файл у каталозі myfiles, він автоматично розміститься під контролем версій (навпаки не вірно).
У прикладі SVNFS використовує окремий каталог для репо. Хоча я його не перевіряв. Для моїх потреб я хотів би мати сховище прямо в своєму робочому режимі.
Я також знайшов посилання на можливості версії Reiser4 4 роки тому:
Див. Різер 4. Файли - це каталоги.
наприклад: diff -u main.C main.C/r/123
Або для доступу до властивостей
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Здається, що найкраще було б слідувати цій моделі, оскільки велика файлова система вже йде цим шляхом.
-Пауль Кверна
Але я теж не перевірив цього.
Два роки тому я пішов на пошуки далі, знайшов проект FiST для генерації файлових систем, що зберігаються, і зв’язався з проф. Ерез Садок з Університету Стоні Брука, який давно був радником / наставником проекту під назвою versionfs . Цитування:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
дозволяє користувачам легко та ефективно керувати власними версіями. Versionfs надає цій функціональності не більше 4% накладних витрат для типових робочих навантажень, схожих на користувача. Versionfs дозволяє користувачам обирати як версії, що зберігаються, так і як вони зберігаються відповідно до політики зберігання та політики зберігання. Користувачі можуть вибрати компроміс між простором і продуктивністю, який найкраще відповідає їхнім індивідуальним потребам: повні копії, стислі копії або блокові дельти. Хоча користувачі можуть керувати своїми версіями, адміністратор може застосовувати мінімальні та максимальні значення та надавати користувачам обґрунтовані параметри за замовчуванням.
Крім того, за допомогою libversionfs немодифіковані програми можуть вивчати, маніпулювати та відновити версії. Користувачі можуть просто запустити звичні інструменти для доступу до попередніх версій файлів, а не вимагати від користувачів навчання окремих команд, або попросити системного адміністратора здійснити повторну перезавантаження файлової системи. Без libversionfs попередні версії повністю приховані від користувачів.
Нарешті, Versionfs виходить за рамки простого копіювання на запис, використовуваного минулими системами: ми впроваджуємо копію на зміну. Хоча спочатку ми очікували, що порівняння між старими та новими сторінками буде занадто дорогим, ми виявили, що збільшення системного часу більше ніж компенсується скороченим часом введення / виводу та процесором, пов'язаним із написанням незмінних блоків. Якщо використовуються більш дорогі політики зберігання (наприклад, стиснення), копіювання при зміні ще корисніше.
Мені це здалося дуже цікавим, але, зв’язавшись із хлопцями, які працювали над проектом, було виявлено, що "тріл" - це невідоме місце його вихідного коду. Сам професор заявив у пошті:
Код Versionfs зараз дуже старий, і він працював лише в ядрі 2.4. Якщо ви все ще хочете складатись f / s версії, що склалася, тоді доведеться писати це з нуля - можливо, на основі wrapfs (див. Wrapfs.filesystems.org/).
Отже, тут немає жодного робочого проекту, хоча мені здається, що концепція файлів, що складаються з файлів, яка може скластися. Хтось хотів би розпочати проект на основі обгортки , повідомте мене, будь ласка :)