CouchDB-based git server, avoids the filesystem. (VERY ALPHA)


  • Install CouchDB on localhost, and start it up.

  • Install the gem

$ gem install ddollar-git-db
  • Create a git user. (Name can be whatever you like)

  • Set a home directory for the user.

  • Set up the git user's authorized_keys2 file: (modify the command to match your gem particulars)

# $HOME/git/.ssh/authorized_keys2
command="/usr/bin/git-db",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <your ssh public key>
  • Add your localhost as a remote to an existing project and push

$ git remote add test-git-db [email protected]:my-repo.git
$ git push test-git-db master
  • Go look at the data in CouchDB
  • Clone your repository somewhere else and examine it

$ git clone [email protected]:my-repo.git /tmp/my-repo
  • Please report any problems on the issue tracker.


  • Tests

  • Refactor and clean up (experimenting with binary protocols can make things a bit messy)

  • Authentication tie-in

  • Never look at a raw git pack file again

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history.

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2009 David Dollar. See LICENSE for details.