Git Go

Git Go is a small command-line utility distributed as a RubyGem that allows you to easily create/destroy/rename/list/clip all your private-hosted git repositories on your own server. All you need is a small VPS (256MB RAM / 10GB HDD / 1vCPUCore should be sufficient).

Git Go also provides you with detailed instructions on how to set up your server in order to be able to create remote repositories from your local machine using the provided command-line utility. The instructions also show you how to set up automatic/daily compressed/archived backups of all your git repositories, store them on Amazon S3, cycle them and send you success/error notifications by email, all using the Backup RubyGem. It's easy, and only takes a few minutes to set up.

Git Go is tested against:

  • Ruby 1.9.3, 1.9.2, 1.8.7
  • Rubinius 1.8 mode, 1.9 mode

It should work with JRuby, but it's currently untestable due to issues with Process.waitpid. But, Process.waitpid is only used in the test environment, not in the distributed gem you'll be using.

Build Status

Get Git Go

Install Git Go with the following command:

gem install git_go

This will provide you with the gg executable. Simply run it without any arguments to see the list of tasks it can perform.

$ gg

Tasks:
  gg clip NAME             # Add the Git URL for NAME to your clipboard (Mac OSX only)
  gg create NAME           # Create a new remote repository named NAME
  gg destroy NAME          # Destroy the remote repository named NAME
  gg help [TASK]           # Describe available tasks or one specific task
  gg instructions          # Display a detailed guide to setup Git Go locally and remotely
  gg list                  # Display a list of all the remote repositories and their URL
  gg rename NAME NEW_NAME  # Rename the remote repository named NAME to NEW_NAME

I recommend you run gg instructions to get up and running. The instructions cover:

  • Setting up an environment variable in your ~/.bashrc or ~/.zshrc.
  • Adding a git user to your remote machine.
  • Setting up your SSH key.
  • Setting up the Backup RubyGem to perform daily backups with:
    • GZip Compression
    • Email Notification on success/warning/error
    • Amazon S3 storage
    • Cycling (e.g. 30 day backup retention, then pop old backups for new backups)

License

"Git Go" is released under the MIT License. See LICENSE.

Author

Michael van Rooijen | @meskyanichi | http://github.com/meskyanichi