Index of /~mitch/linux/gitfs
Name Last modified Size Description
Parent Directory 25-Jun-2005 20:34 -
gitfs-0.01.tar.bz2 25-Jun-2005 21:20 22k
gitfs-0.02.tar.bz2 04-Oct-2005 03:34 23k
gitfs-0.03.tar.bz2 18-Nov-2005 04:41 54k
gitfs-0.04.tar.bz2 04-Dec-2006 11:08 59k
GITFS pre-release version 0.04
gitfs is a FUSE-based filesystem for working with source trees stored in
git repositories. The eventual goal is to provide a convenient way to work
with lots of branches and patches. Currently only very basic functionality
is implemented -- read-only access to the existing tags and objects.
Still, it's already a somewhat handy tool which is why I'm releasing early
snapshots.
BUILDING GITFS
======== =====
Gitfs tarballs can be downloaded at:
http://www.sfgoth.com/~mitch/linux/gitfs/
Please refer to the included INSTALL file for directions on compiling
the gitfs binary.
RUNNING GITFS
======= =====
Like git itself the gitfs command line looks like:
gitfs [ global_options ] subcommand [ command_arguments ]
Currently the only global option is "-d" which enables verbose debugging
output.
The following 5 subcommands are available:
* help [<sub-command>]
Prints a short usage message
* mount [-r] [-F] [-O <ocache_dir>] <gitdir> <mntpoint>
Makes the git repository found at <gitdir> available for browsing at
<mntpoint>.
Options:
-r Read only mode (currently no effect)
-F Do not daemonize (implied by the global -d option) In this
mode the filesystem is automatically unmounted on SIGTERM
-O To permit efficient random access to open files we keep
uncompressed copies of git objects in something called the
"ocache". For the moment this defaults to "/tmp/gitfs/ocache"
Note - we currently never remove entries from the ocache.
However it's safe to prune files from it
(or even blow away the entire tree) while gitfs is running.
DO NOT make this the same as your ".git/objects" directory
or things will probably become horribly broken!
* unmount <mntpoint>
Unmounts a gitfs filesystem. If everything works correctly the
daemonized gitfs process should exit.
* pwd
If run from inside a gitfs filesystem, prints the current path from
its root. Not particularly useful but a good example of how the
client/server IPC channel works.
* gls
If run from inside a gitfs filesystem lists the information in the
current directory's git tree object.
There's also two debugging-only subcommands. By convention debugging
subcommands start with an underscore.
* _dump_gobj [sha1]
Print brief information about each git object which we are have
information about in memory. Output can be limited by providing
a partial or full SHA1 hash.
* _dump_ino [inum]
Print information about currently active gitfs inodes. Information
about a particular inode # can also be specified
EXAMPLE SESSION
======= =======
$ gitfs mount ~/git/linux-2.6 /tmp/fuse
$ cd /tmp/fuse/TAGS
$ ls
v2.6.11 v2.6.12-rc3 v2.6.13 v2.6.13-rc4 v2.6.14 v2.6.14-rc4
v2.6.11-tree v2.6.12-rc4 v2.6.13-rc1 v2.6.13-rc5 v2.6.14-rc1 v2.6.14-rc5
v2.6.12 v2.6.12-rc5 v2.6.13-rc2 v2.6.13-rc6 v2.6.14-rc2
v2.6.12-rc2 v2.6.12-rc6 v2.6.13-rc3 v2.6.13-rc7 v2.6.14-rc3
$ cd v2.6.14/fs/fuse/
$ ls -l
total 0
-r--r--r-- 1 mitch mitch 21999 Nov 11 18:19 dev.c
-r--r--r-- 1 mitch mitch 25757 Nov 11 18:19 dir.c
-r--r--r-- 1 mitch mitch 14131 Nov 11 18:19 file.c
-r--r--r-- 1 mitch mitch 10150 Nov 11 18:19 fuse_i.h
-r--r--r-- 1 mitch mitch 13520 Nov 11 18:19 inode.c
-r--r--r-- 1 mitch mitch 114 Nov 11 18:19 Makefile
$ gitfs gls
c3e1f760cac9b4d456269dedb934adbc56036e46 -rw-r--r-- Makefile
d4c869c6d01b2f8d1cc9a5e88d54b641678e9e81 -rw-r--r-- dev.c
29f1e9f6e85c3648c8a3deeb7847d078625e9844 -rw-r--r-- dir.c
657ab11c173b38a05678f49c05accc7313b02ede -rw-r--r-- file.c
24d761518d864643d0ff1564d4e516b8db4bbeda -rw-r--r-- fuse_i.h
e69a546844d0f23770f3dd5e690f20284a27cd01 -rw-r--r-- inode.c
$ gitfs pwd
TAGS:v2.6.14:2b10839e32c4c476e9d94492756bb1a3e1ec4aa8/fs/fuse
$ cd /
$ gitfs umount /tmp/fuse