Gitty is an open-source reduced-functionality Github clone.
On the bright side, you have full access to the source code, so you can add that feature that you always wished GitHub would have! (Please send a pull request if you do!) You can also install it behind your firewall for free.
Gitty relies on git, openssh, and MySQL.
sudo yum install -y git openssh-server mysql-devel mysql-server sudo systemctl enable mysqld.service sshd.service sudo systemctl start mysqld.service sshd.service
sudo apt-get install -y git libmysqlclient-dev libssl-dev \ mysql-client mysql-server openssh-server
If you're using Homebrew, use the following to install MySQL.
brew install mysql
Gitty uses markdpwn for source code
highlighting, which has its own dependencies. If you can't get markdpwn's
dependencies installed, set the
markdpwn config var to
section below describes config vars.)
Gitty uses the typical Rails 3.x setup sequence.
bundle install bundle exec rake db:create db:migrate db:seed
Gitty needs a dedicated user for git+ssh. To create the user, run the following command, replacing web_user with the name of the user that the Rails server runs under.
script/git_user/setup git web_user
Conventionally, the dedicated user's name is "git". It can be changed by replacing the first argument in the command above, then changing the configuration variable git_user by going to
The admin username and password are config and vars, respectively. You should probably visit the configuration variables page anyway, to change the admin login and the address used to send e-mails.
On OSX, openssh requires extra configuration. Go to System Preferences
and check theRemote Login
option for openssh. Look near
Allow access for:
and see if theOnly these users
options is checked
(recommended). If it is, add thegit` user to the list of allowed users.
Sadly, if using
Only these users option, you'll have to temporarily
All users when running integration tests.
Model and controller diagrams might help you wrap your head around the source code.
bundle exec rake diagram:all
The documentation for the ActiveRecord models assumes knowledge of the git object model
An easy way to seed your development server with git data is to push the gitty
repository into it. Create a user, upload your public SSH key, then create a
gitty repository. Run the following commands in the gitty source tree to set
dev remote pointing to your local server, and push the repo to it.
git remote add dev git@localhost:your_user_name/gitty.git git push dev master
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.
- Send me a pull request. Bonus points for topic branches.
Gitty was developed by Victor Costan and a team of contributors.
The favicon is based on the Matrix Code icon from The Matrix icon pack by Dave Brasgalla.
Copyright (c) 2010-2012 Victor Costan, released under the MIT license.