Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
92 lines (54 sloc) 1.96 KB
git-fs
======
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.
Use cases
---------
You can try these on the git.git repository.
### Compute repository statistics
How much code in the first major release?
git fs
cd .git/fs/tags/v1.0.0/worktree
ohcount # A sloccount alternative
### Display the latest html docs
git fs; cd .git/fs
firefox remotes/origin/html/worktree/index.html
### Jump to a commit using its SHA1
git fs; cd .git/fs
cd commits/902f235378cb2b2f6dd5dd664b9630c95321f0ae
### etc.
- 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.
Build instructions
------------------
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
Usage
-----
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
Debugging
---------
MALLOC_CHECK_=3 debug/git-fs debug 2>&1 |tee -a debug.log