Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

The Erlang git-daemon

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 docs
Octocat-spinner-32 src
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Makefile
Octocat-spinner-32 README
Octocat-spinner-32 egitd.conf
Octocat-spinner-32 rebar
README
egitd
  by Tom Preston-Werner <tom@github.com>

egitd is an Erlang git-daemon implementation that provides a more flexible,
scalable, and loggable way to serve public git repositories.

Development Status: Experimental

This software was in production use at github.com for a short time until it
became obvious that the communications model was flawed. To be specific,
if the upload-pack takes a long time to respond (for big repos), either the
timeouts have to be increased to unreasonable values (slowing the entire
transfer down), or some connections will timeout and fail.

The above problem has actually been solved by a rewrite I (Vagabond) have
been doing as an exercise in how to improve the performance of erlang
applications. egitd is now only marginally slower than git-daemon on the
same repo, and does not suffer the timeout issues mentioned above even on
the large repos like gentoo's portage where github was having problems. I
still don't advocate its use in production, but it might be usable now.

You can see my rewrite notes here: http://andrew.hijacked.us/by_keyword/328/egit


INSTALL
-------

$ git clone git@github.com:mojombo/egitd.git
$ cd egitd
$ make

You can also build by using ./rebar compile, which the Makefile invokes.


RUN
---

$ bin/egitd -c <path to conf file> -l <path to log file>


CONF FILE
---------

The config file specifies the mapping between specified repo name and file location.

github.com        (.+)/(.+)       "/data/git/repositories/" ++ Match1 ++ "/" ++ Match2.
Something went wrong with that request. Please try again.