Commit c625293b995cf21a1b551cecaac3cb742fcb2e66

Authored by randx
1 parent 2e7ca8c8

Handle post-receive files via gitolite, not gitlab

app/roles/repository.rb
@@ -30,26 +30,10 @@ module Repository @@ -30,26 +30,10 @@ module Repository
30 Commit.commits_between(repo, from, to) 30 Commit.commits_between(repo, from, to)
31 end 31 end
32 32
33 - def write_hooks  
34 - %w(post-receive).each do |hook|  
35 - write_hook(hook, File.read(File.join(Rails.root, 'lib', "#{hook}-hook")))  
36 - end  
37 - end  
38 -  
39 def satellite 33 def satellite
40 @satellite ||= Gitlab::Satellite.new(self) 34 @satellite ||= Gitlab::Satellite.new(self)
41 end 35 end
42 36
43 - def write_hook(name, content)  
44 - hook_file = File.join(path_to_repo, 'hooks', name)  
45 -  
46 - File.open(hook_file, 'w') do |f|  
47 - f.write(content)  
48 - end  
49 -  
50 - File.chmod(0775, hook_file)  
51 - end  
52 -  
53 def has_post_receive_file? 37 def has_post_receive_file?
54 hook_file = File.join(path_to_repo, 'hooks', 'post-receive') 38 hook_file = File.join(path_to_repo, 'hooks', 'post-receive')
55 File.exists?(hook_file) 39 File.exists?(hook_file)
@@ -73,8 +57,6 @@ module Repository @@ -73,8 +57,6 @@ module Repository
73 57
74 def update_repository 58 def update_repository
75 Gitlab::GitHost.system.update_project(path, self) 59 Gitlab::GitHost.system.update_project(path, self)
76 -  
77 - write_hooks if File.exists?(path_to_repo)  
78 end 60 end
79 61
80 def destroy_repository 62 def destroy_repository
app/views/errors/gitolite.html.haml
@@ -23,5 +23,3 @@ @@ -23,5 +23,3 @@
23 = preserve do 23 = preserve do
24 sudo chmod -R 770 /home/git/repositories/ 24 sudo chmod -R 770 /home/git/repositories/
25 sudo chown -R git:git /home/git/repositories/ 25 sudo chown -R git:git /home/git/repositories/
26 - sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive  
27 -  
lib/hooks/post-receive 0 → 100755
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +#!/usr/bin/env bash
  2 +
  3 +# This file was placed here by Gitlab. It makes sure that your pushed commits
  4 +# will be processed properly.
  5 +
  6 +while read oldrev newrev ref
  7 +do
  8 + # For every branch or tag that was pushed, create a Resque job in redis.
  9 + pwd=`pwd`
  10 + reponame=`basename "$pwd" | cut -d. -f1`
  11 + env -i redis-cli rpush "resque:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$reponame\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1
  12 +done
lib/post-receive-hook
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -#!/usr/bin/env bash  
2 -  
3 -# This file was placed here by Gitlab. It makes sure that your pushed commits  
4 -# will be processed properly.  
5 -  
6 -while read oldrev newrev ref  
7 -do  
8 - # For every branch or tag that was pushed, create a Resque job in redis.  
9 - pwd=`pwd`  
10 - reponame=`basename "$pwd" | cut -d. -f1`  
11 - env -i redis-cli rpush "resque:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$reponame\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1  
12 -done  
lib/tasks/gitlab/setup.rake
1 namespace :gitlab do 1 namespace :gitlab do
2 namespace :app do 2 namespace :app do
3 desc "GITLAB | Setup production application" 3 desc "GITLAB | Setup production application"
4 - task :setup => ['db:setup', 'db:seed_fu', 'gitlab:app:enable_automerge'] 4 + task :setup => [
  5 + 'db:setup',
  6 + 'db:seed_fu',
  7 + 'gitlab:gitolite:write_hooks',
  8 + 'gitlab:app:enable_automerge'
  9 + ]
5 end 10 end
6 end 11 end
7 12
lib/tasks/gitlab/status.rake
@@ -67,12 +67,6 @@ namespace :gitlab do @@ -67,12 +67,6 @@ namespace :gitlab do
67 next 67 next
68 end 68 end
69 69
70 -  
71 - unless File.owned?(hook_file)  
72 - puts "post-receive file is not owner by gitlab".red  
73 - next  
74 - end  
75 -  
76 puts "post-reveice file ok".green 70 puts "post-reveice file ok".green
77 end 71 end
78 end 72 end
lib/tasks/gitlab/update_hooks.rake
@@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
1 -namespace :gitlab do  
2 - namespace :gitolite do  
3 - desc "GITLAB | Rewrite hooks for repos"  
4 - task :update_hooks => :environment do  
5 - puts "Starting Projects"  
6 - Project.find_each(:batch_size => 100) do |project|  
7 - begin  
8 - if project.commit  
9 - project.write_hooks  
10 - print ".".green  
11 - end  
12 - rescue Exception => e  
13 - print e.message.red  
14 - end  
15 - end  
16 - puts "\nDone with projects"  
17 - end  
18 - end  
19 -end  
lib/tasks/gitlab/write_hook.rake 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +namespace :gitlab do
  2 + namespace :gitolite do
  3 + desc "GITLAB | Write GITLAB hook for gitolite"
  4 + task :write_hooks => :environment do
  5 + gitolite_hooks_path = File.join("/home", Gitlab.config.ssh_user, "share", "gitolite", "hooks", "common")
  6 + gitlab_hooks_path = Rails.root.join("lib", "hooks")
  7 +
  8 + gitlab_hook_files = ['post-receive']
  9 +
  10 + gitlab_hook_files.each do |file_name|
  11 + source = File.join(gitlab_hooks_path, file_name)
  12 + dest = File.join(gitolite_hooks_path, file_name)
  13 +
  14 + puts "sudo -u root cp #{source} #{dest}".yellow
  15 + `sudo -u root cp #{source} #{dest}`
  16 +
  17 + puts "sudo -u root chown git:git #{dest}".yellow
  18 + `sudo -u root chown git:git #{dest}`
  19 + end
  20 + end
  21 + end
  22 +end
  23 +