view hooks/post-commit @ 678:ffb64e82277c

Added a post-commit hook for Assembla. Using the Ruby variant. git-svn-id: svn://svn.code.sf.net/p/universalindent/code/trunk@946 59b1889a-e5ac-428c-b0c7-476e01d41282
author thomas_-_s <thomas_-_s@59b1889a-e5ac-428c-b0c7-476e01d41282>
date Tue, 21 Apr 2009 22:25:09 +0000
parents
children
line wrap: on
line source

#!/usr/bin/env ruby

# Run this script with:
# post-commit.rb /path/to/svn/repo revision_number

###################################################
# Find these below values on external svn tool tab
TOOL_ID = "a5xjA-lSar3QaKeJe5afGb" # 22 chars uuid
SECRET_KEY = "eebc706060695395339a2ec351e6c08673dba53e"

# On *BSD systems, svnlook command can be in /usr/local/bin/svnlook
SVN_LOOK_CMD = "/usr/bin/svnlook"

###################################################
# map svn usernames with assembla accounts, if usernames differ from Assembla usernames
# Our API will search users by login, then by email
# if user will not be found, Anonymous user will be used in alerts for svn commit
USER_MAP = {
        'local_user_1' => 'assembla_login_1',
        'local_user_2' => 'assembla_login_2'
        }

###################################################
# DO NOT CHANGE ANYTHING BELOW !!!
###################################################

require 'net/http'
require 'uri'

API_URL = "http://www.assembla.com/changesets/"

repo = ARGV[0]
rev = ARGV[1]

author=`#{SVN_LOOK_CMD} author -r "#{rev}" "#{repo}"`.strip
log=`#{SVN_LOOK_CMD} log -r "#{rev}" "#{repo}"`.strip

params = {
        "tool_id" => 0, "spaces_tool_id" => TOOL_ID, "secret_key" => SECRET_KEY,
        "username" => (USER_MAP[author] || author), "comment" => log, "external_id" => rev
}

uri = URI.parse(API_URL)

req = Net::HTTP::Post.new(uri.path)
req.set_form_data(params)

r, rd = Net::HTTP.new(uri.host, uri.port).request(req)