Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
76 lines (49 sloc) 2.88 KB

Git Go

Git Go (Ruby) has been:

  • Ported to Go(lang).
    • Compiles to machine code.
    • Doesn't require a VM (like the Ruby VM).
    • Has no runtime dependencies.
  • Renamed to PGit.
  • Moved to a different repository.

This project is no longer supported. Consider using PGit instead.

Original README:

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.

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

  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)


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


Michael van Rooijen | @mrrooijen |