Commit c625293b995cf21a1b551cecaac3cb742fcb2e66
1 parent
2e7ca8c8
Exists in
master
and in
4 other branches
Handle post-receive files via gitolite, not gitlab
Showing
8 changed files
with
41 additions
and
58 deletions
Show diff stats
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 | - |
@@ -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 |
@@ -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 | + |