changeset 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 b2e7bd0b3996
children 15d6826330bb
files hooks/post-commit hooks/post-commit.pl hooks/post-commit.rb
diffstat 3 files changed, 156 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hooks/post-commit	Tue Apr 21 22:25:09 2009 +0000
@@ -0,0 +1,48 @@
+#!/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)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hooks/post-commit.pl	Tue Apr 21 22:25:09 2009 +0000
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+
+# Run this script with:
+# post-commit.rb /path/to/svn/repo revision_number
+
+###################################################
+# Find these below values on external svn tool tab
+$TOOL_ID = ""; # 22 chars uuid
+$SECRET_KEY = "xxxxxxxx";
+
+# 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 !!!
+###################################################
+
+$API_URL = "http://www.assembla.com/changesets/";
+
+# Install below package on debian/ubuntu
+# apt-get install libwww-perl
+
+use HTTP::Request::Common;
+use LWP::UserAgent;
+
+$repo = $ARGV[1];
+$rev = $ARGV[2];
+
+$author = `$SVN_LOOK_CMD author -r "$rev" "$repo"`;
+$log = `$SVN_LOOK_CMD log -r "$rev" "$repo"`;
+
+chomp $author;
+chomp $log;
+
+$ua = LWP::UserAgent->new;
+$ua->agent("AssemblaApiPerlClient/0.1");
+
+# Create a request
+$req = POST $API_URL, 
+	["tool_id" => 0, "spaces_tool_id" => $TOOL_ID, "secret_key" => $SECRET_KEY,
+        	"username" => ($USER_MAP[$author] || $author), "comment" => $log, "external_id" => $rev]
+);
+$req->content_type('application/x-www-form-urlencoded');
+
+# Pass request to the user agent and get a response back
+$res = $ua->request($req);
+
+# Check the outcome of the response
+if (!$res->is_success) {
+    print $res->status_line, "\n";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hooks/post-commit.rb	Tue Apr 21 22:25:09 2009 +0000
@@ -0,0 +1,48 @@
+#!/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)