Index of /~mitch/linux/gitfs

      Name                    Last modified       Size  Description

[DIR] 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