An easy way for a non-github repository to notify 3rd party services (like Campfire, Jira, Jabber, etc) that there's been a push.
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
Gemfile
Guardfile
LICENSE.txt
README.md
Rakefile
VERSION
push_handler.gemspec

README.md

PushHandler

PushHandler takes push information and converts it into a format that Github Services can read and distribute.

Config

  1. Download and install Github Services
  2. Start the Sinatra server by running ruby github-services.rb
  3. Install the gem gem install push-handler
  4. In .git/hooks/ directory of your repository, create a file called post-receive.
  5. Add the following text to post-receive, filling in your information:
#!/usr/bin/ruby
require 'rubygems'
require 'push_handler'

# Through STDIN git passes us: <oldrev> <newrev> <refname>
args = STDIN.readlines.first.split(/\s+/)

PushHandler.configure do |config|
  config.repo = {
    # Where to see the repository on the web
    'url' => 'http://git.example.com',

    # Repository name
    'name' => 'Suppa Time',

    # Directory on the machine where the contents of your .git folder lives
    'working_dir' => '/mnt/suppa_time.git/',

    # True if 'working_dir' is pointing to a bare repository
    'is_bare' => true,

    # Repository owner contact info
    'owner' => {
      'name' => 'Big Boss Man',
      'email' => 'bbm@example.com'
    }
  }

  # Links to objects in your repository. Put the wildcard '%s' where the reference should go.
  config.urls['commit'] = 'http://git.example.com/commits?id=%s'    # '%s' will be replaced with the commit sha
  config.urls['branch'] = 'http://git.example.com/branches?id=%s'   # '%s' will be the branch name

  # The url that the github-services server is running.
  config.services['url'] = 'http://localhost:8080'

  # This is your configuration for 3rd parties.
  config.services['data'] = {
    'hipchat' => {
      'auth_token' => '9082afake90210',
      'room' => 12345,
      'notify' => true
    }
  }
end

PushHandler.send_to_services(*args)

Note

To see the parameters that each service requires you'll have to:

  1. Go to the github-services/ directory
  2. Execute rake services:config
  3. Open config/services.json and look up the requirements