A GitHub clone written in Elixir with almost no-dependencies.
- Git HTTP and SSH support.
- User authentication and permissions.
- Fully integrated GraphQL API.
- Customizable Webhooks.
- Native (NIF) implementation of Git commands.
- Customizable Git storage backend.
- Issue tracker, code review, continuous integration, ...
First, ensure you have Git and libgit2 installed on your system:
brew install libgit2
sudo apt-get install libgit2-dev
The former is necessary in temporarily because git-upload-pack
and git-receive-pack
server side commands use Erlang ports to execute the correspondent binaries. In future versions, those functions will be implemented natively and the dependency to Git will not be required anymore.
In order to provide SSH as a Git transport protocol, you must generate a valid SSH public key for the server:
ssh-keygen -t rsa -f /tmp/ssh-keys/ssh_host_rsa_key
In your config/config.exs
file, add following entry:
config :gitgud, :ssh_key_dir: "/tmp/ssh-keys"