

PhoenixFS - a versioning filesystem inspired by Git - GeneralMaximus
https://github.com/artagnon/phoenixfs

======
wladimir
Can you please give some examples where this would be useful, and how it can
be used?

Does it mean you can just 'mount' a git repository, instead of working with
commands? Or is git just used as an incremental backup system?

~~~
artagnon
Any normal directory can be mounted with the PhoenixFS filesystem driver. It
essentially traps all the normal filesystem calls like readdir, opendir, read,
and release to transparently keep revision history for every file. Since all
the calls are finally passed through to the underlying filesystem, the end-
user needs to do nothing extra to use it. The final result is that a `.git`
directory is created on the underlying filesystem with all this information.

Motivation and target audience: End users who don't want to bother with
versioning their files, but still want transparent backups of everything they
edit. Flashbake is a project that takes a stab at solving this issue, but
every solution that doesn't work at the filesystem level will have to rely on
"polling for changes", which is rather inelegant.

How PhoenixFS works: No, it doesn't use Git at all. This is because it aims to
be much faster than Git at the cost of advanced functionality. It has an in-
memory B+ tree that's updated everytime the directory tree changes. It's a
true content tracker like Git: the tree only references SHA1 hashes. There are
three pieces of information in the `.git` directory from which the entire
filesystem can be rebuilt: the B+ tree persisted in a file, a packfile
containing deltified historical content, and a packfile index for looking up a
certain SHA1 in the packfile.

