Após 8 anos de pesquisa , encontrei o SVNFS por Marco R. Gazzetta (que é diferente do projeto antigo com o mesmo nome de John Madden [em que se fazem coisas diferentes]). Este SVNFS usa svn transparentemente em operações de r / w:
Instead of creating a file system that does its own versioning, I used an existing versioning tool, subversion, and made its use transparent. The advantage is that this file system doesn't require you to learn a new tool, if you know subversion
Está escrito em Python e usa o FUSE:
Now you start the versioning file system by invoking the script attached:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Once everything is fine, you should be able to get a listing of both directories and see that the contents are the same.
Now, if you create (almost) any file in either directory, it will show up on the other side of the fence, as well. The big difference is that if you create a file in the myfiles directory, it will automatically be placed under version control (the opposite is not true).
No exemplo SVNFS usa o diretório separado para o repositório. Embora eu não tenha testado isso. Para as minhas necessidades, gostaria de ter o repositório no meu diretório de trabalho.
Eu também encontrei referência aos recursos de versionamento do Reiser4 4 anos atrás:
See Reiser 4. Files are directories.
eg: diff -u main.C main.C/r/123
Or to access properties
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
It seems that it would be best to follow that model, since a major
filesystem is already going that route.
-Paul Querna
Mas eu não verifiquei também.
Dois anos atrás, fui pesquisar mais, encontrei projeto FiST para gerar sistemas de arquivos empilháveis e contatou prof. Erez Zadok da Stony Brook University que foi conselheiro / mentor do projeto chamado versionfs há muito tempo. Citando:
link
link
allows users to manage their own versions easily and efficiently. Versionfs provides this functionality with no more than 4% overhead for typical user-like workloads. Versionfs allows users to select both what versions are kept and how they are stored through retention policies and storage policies, respectively. Users can select the trade-off between space and performance that best meets their individual needs: full copies, compressed copies, or block deltas. Although users can control their versions, the administrator can enforce minimum and maximum values, and provide users sensible defaults.
Additionally, through the use of libversionfs, unmodified applications can examine, manipulate, and recover versions. Users can simply run familiar tools to access previous file versions, rather than requiring users to learn separate commands, or ask the system administrator to remount a file system. Without libversionfs, previous versions are completely hidden from users.
Finally, Versionfs goes beyond the simple copy-on-write employed by past systems: we implement copy-on-change. Though at first we expected that the comparison between old and new pages would be too expensive, we found that the increase in system time is more than offset by the reduced I/O and CPU time associated with writing unchanged blocks. When more expensive storage policies are used (e.g., compression), copy-on-change is even more useful.
Pareceu-me muito interessante, mas entrar em contato com os caras que trabalharam no projeto revelou que não há lugar conhecido de seu código-fonte. O próprio professor declarou no correio:
Versionfs's code is very old now, and it only worked in kernel 2.4. If you still want a stackable versioning f/s, then one would have to write it from scratch — possibly based on wrapfs (see wrapfs.filesystems.org/).
Portanto, não há projeto de trabalho aqui, embora o conceito de sistemas de arquivos empilháveis pareça muito bom para mim. Alguém gostaria de iniciar o projeto baseado em wrapfs , notifique-me por favor:)