1. William Roberts
  2. gitfs

Overview

  ________.__________________________________
 /  _____/|   \__    ___/\_   _____/   _____/
/   \  ___|   | |    |    |    __) \_____  \ 
\    \_\  \   | |    |    |     \  /        \
 \______  /___| |____|    \___  / /_______  /
        \/                    \/          \/ 

What gitfs is:
All gitfs mounts are backed by a standard git repo. In fact this tool just wraps the porcelain git commands.
All destructive file operations are committed to the repo. Destrucitve operations that work on an fd are commited when the fd is closed.

You can go to the repo dir, and use standard git commands to revert the history of the filesystem, push to remotes,
or do anything that git let's you do, its just a normal repo under the hood.

Dependencies:

libfuse
libfuse-python
git
python 2.6 or greater.

If your on Ubuntu:
sudo apt-get install python-fuse
sudo apt-get install git
sudo apt-get install python


Running:
./gitfs.py -o repo=<path_to_repo> <mnt point>

Where path to repo MUST be a path to a directory

If a git repository exists in that directory, then that repo is utilized, else a git repo is initialized.

if you don't specify option repo, then the current working directory is used.


Example:
	Suppose you want to use a repo at ~/repo and mount it to ~/mnt. Then do this:
	./gitfs.py -o repo=~/repo ~/mnt

	Viola.


Caveats:
	Symlink/Hardlink is not implemented
	If you want other users to be able to access your mnt point, don't forget -oallow_other.


Author:
	William Roberts <bill.c.roberts@gmail.com>


Miscellaneous:
This code has only been loosely tested and no, I mean no guarantees are made about its fitness. Oh yeah, the code is
GPL, please abide by the license.

ASCII Art generated with:
http://www.network-science.de/ascii/