经过8年的搜索,我发现SVNFS由马可河米兰(这是由同一个名字从旧的项目不同的约翰·麦登 [哪一个做不同的事情])。该SVNFS在r / w操作中透明地使用svn:
我没有创建执行自己的版本控制的文件系统,而是使用了现有的版本控制工具subversion,并将其使用透明化。好处是,如果您知道Subversion,则此文件系统不需要您学习新工具
它是用Python编写的,并使用FUSE:
现在,通过调用附带的脚本来启动版本控制文件系统:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
一切正常之后,您应该能够得到两个目录的清单,并看到内容相同。
现在,如果您在任一目录中创建(几乎)任何文件,该文件也将显示在围栏的另一侧。最大的区别是,如果在myfiles目录中创建文件,则该文件将自动置于版本控制下(反之则不成立)。
在示例中,SVNFS将单独的目录用于存储库。虽然我还没有测试过。为了我的需要,我想在我的工作目录中拥有存储库。
我还发现了4年前对Reiser4的版本控制功能的参考:
请参阅Reiser4。文件是目录。
例如: diff -u main.C main.C/r/123
或访问属性
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
似乎最好采用这种模型,因为主要的文件系统已经在采用这种方式。
-保罗·奎纳(Paul Querna)
但是我也没有检查过。
两年前,我去进一步搜索,找到了FiST项目,用于生成可堆叠的文件系统,并联系了教授。石溪大学的埃雷兹·扎多克(Erez Zadok)很久以前是该项目的顾问/导师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超越了过去系统所采用的简单的写时复制:我们实现了更改时复制。尽管起初我们希望新旧页面之间的比较过于昂贵,但我们发现系统时间的增加远远被与写入未更改块相关的I / O和CPU时间减少所抵消。当使用更昂贵的存储策略(例如压缩)时,按更改复制将更加有用。
这对我来说似乎很有趣,但与该项目的工作人员联系后发现,threre是其源代码的未知来源。教授本人在邮件中说:
Versionfs的代码现在很旧,并且仅在内核2.4中有效。如果仍然需要可堆叠的版本控制f / s,则必须从头开始编写它-可能基于wrapfs(请参阅wrapfs.filesystems.org/)。
因此,尽管可堆叠文件系统的概念对我来说非常好,但是这里没有任何可行的项目。任何人都想基于f 包装启动项目,请通知我:)