• Stars
    star
    231
  • Rank 173,434 (Top 4 %)
  • Language
    OCaml
  • License
    GNU General Publi...
  • Created almost 15 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A filesystem interface to git repositories

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

More Repositories

1

blocks

Enable bcache or LVM on existing block devices
Python
362
star
2

bedup

Btrfs deduplication
Python
321
star
3

bcache-tools

bcache-tools, part of the bcache hybrid storage project (features, debian packaging)
C
113
star
4

vido

wrap commands in throwaway virtual machines — easy kernel debugging and regression testing
Python
40
star
5

rfc6266

Content-Disposition header support for Python
Python
38
star
6

kyotocabinet

Debian packages for Kyoto Cabinet, a fast database library
C++
17
star
7

maintboot

Run maintenance tasks outside the OS
Python
15
star
8

git-deb

Git clone Debian packages
Python
9
star
9

libpgm

An implementation of the PGM reliable multicast protocol (Debian package)
C
7
star
10

tranquil

Expose Django models to SQLalchemy with introspection. Maintenance fork of the google code project. Targets Django 1.1 and SQLalchemy 0.6.
Python
6
star
11

kyototycoon

Debian packages for Kyoto Tycoon, a flexible storage and cache server
C++
5
star
12

ocaml-btreemap

Rust's BTreeMap exposed to OCaml
Rust
5
star
13

xvf

Easy archive extraction
Rust
4
star
14

e2e-mirage-solo5

OCaml
3
star
15

irc-unikernel

OCaml
3
star
16

apt-setconf

Quickly enable Debian/Ubuntu package features
Python
2
star
17

lvmify

DISCONTINUED; renamed to blocks. lvmify is available as `blocks lvmify`.
Python
2
star
18

musicserver

Rust
1
star
19

SimpleTAL

A packaging fix for SimpleTAL. Feel free to bug the maintainer for me.
Python
1
star
20

systems

A declarative language for managing system resources
Python
1
star
21

arbo

Display a list of paths as a tree. Reads from stdin and also supports pre-defined modes for common VCSes, such as git.
Python
1
star
22

python-debian

Stopgap upload; this version has been uploaded to PyPI since
Python
1
star