Git Gud
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, ...
Install dependencies
First, ensure you have Git and libgit2 installed on your system:
OSX
brew install libgit2Ubuntu
sudo apt-get install libgit2-devThe 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.
Generate SSH public keys
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_keyIn your config/config.exs file, add following entry:
config :gitgud, :ssh_key_dir: "/tmp/ssh-keys"