git-fs is a filesystem interface to git repositories.
Past and current versions can be accessed without a checkout. Heads, tags, branches, reflogs, commits and worktrees provide various means of naming and accessing files.
You can try these on the git.git repository.
How much code in the first major release?
git fs
cd .git/fs/tags/v1.0.0/worktree
ohcount # A sloccount alternative
git fs; cd .git/fs
firefox remotes/origin/html/worktree/index.html
git fs; cd .git/fs
cd commits/902f235378cb2b2f6dd5dd664b9630c95321f0ae
- Restore from backup (bup, gibak)
- Look at previous conffiles stored in etckeeper
- Look at wiki pages stored by ikiwiki or gh-pages
- Serve repository snapshots using a standard webserver.
git-fs depends on FUSE and some OCaml libraries. It has been tested on Debian, Ubuntu, and ArchLinux.
Get the dependencies:
sudo apt-get install omake libfuse-dev camlidl libpcre-ocaml-dev libbatteries-ocaml-dev # Ubuntu
sudo aptitude install omake libfuse-dev camlidl libpcre-ocaml-dev libbatteries-ocaml-dev # Debian
sudo pacman -S omake ocamlfuse-cvs pcre-ocaml ocaml-batteries # Arch
sudo yum install fuse-devel ocaml-pcre-devel ocaml-findlib-devel ocaml-camomile ocaml-camlidl ocaml-bisect ocaml-ounit ocaml-ocamldoc # Fedora
Build:
git submodule update --init
make -C deps/ocamlfuse/lib || make -C deps/ocamlfuse/lib byte-code-library
omake
Install (~/bin must be in your path):
ln -s ~+/git-fs -t ~/bin
The first step is to mount the filesystem.
git fs
Then, either browse it
cd .git/fs/HEAD/worktree
cat README
Or use a few special commands
git fs mtab
git fs umount
git fs help
MALLOC_CHECK_=3 debug/git-fs debug 2>&1 |tee -a debug.log