Commit bc0155fb authored by Ariejan de Vroom's avatar Ariejan de Vroom

First attempt at a post-receive hook that posts directly to Resque

parent 1c9b9b7a
...@@ -31,6 +31,17 @@ class Repository ...@@ -31,6 +31,17 @@ class Repository
project.id project.id
end end
# repo.update_hook('post-receive', File.read('some-hook'))
def update_hook(name, content)
hook_file = File.join(project.path_to_repo, 'hooks', name)
File.open(hook_file, 'w') do |f|
f.write(content)
end
File.chmod(0775, hook_file)
end
def repo def repo
@repo ||= Grit::Repo.new(project.path_to_repo) @repo ||= Grit::Repo.new(project.path_to_repo)
end end
......
class PostReceive
def self.perform(reponame, oldrev, newrev, ref)
puts "[#{reponame}] #{oldrev} => #{newrev} (#{ref})"
end
end
...@@ -13,18 +13,6 @@ ...@@ -13,18 +13,6 @@
ActiveRecord::Schema.define(:version => 20111207211728) do ActiveRecord::Schema.define(:version => 20111207211728) do
create_table "features", :force => true do |t|
t.string "name"
t.string "branch_name"
t.integer "assignee_id"
t.integer "author_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "version"
t.integer "status", :default => 0, :null => false
end
create_table "issues", :force => true do |t| create_table "issues", :force => true do |t|
t.string "title" t.string "title"
t.integer "assignee_id" t.integer "assignee_id"
......
...@@ -43,14 +43,14 @@ module Gitlabhq ...@@ -43,14 +43,14 @@ module Gitlabhq
def destroy_project(project) def destroy_project(project)
FileUtils.rm_rf(project.path_to_repo) FileUtils.rm_rf(project.path_to_repo)
ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite')) ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite'))
conf = ga_repo.config conf = ga_repo.config
conf.rm_repo(project.path) conf.rm_repo(project.path)
ga_repo.save ga_repo.save
end end
#update or create #update or create
def update_keys(user, key) def update_keys(user, key)
File.open(File.join(@local_dir, 'gitolite/keydir',"#{user}.pub"), 'w') {|f| f.write(key.gsub(/\n/,'')) } File.open(File.join(@local_dir, 'gitolite/keydir',"#{user}.pub"), 'w') {|f| f.write(key.gsub(/\n/,'')) }
end end
......
#!/bin/bash
# This file was placed here by Gitlab. It makes sure that your pushed commits
# will be processed properly.
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
pwd=`pwd`
reponame=`basename "$pwd" | cut -d. -f1`
env -i redis-cli rpush "resque:queue:post-receive" "{\"class\":\"PostReceive\",\"args\":[\"$reponame\",\"$oldrev\",\"$newrev\",\"$ref\"]}" > /dev/null 2>&1
done
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment