Handle post-receive files via gitolite, not gitlab
This commit is contained in:
parent
2e7ca8c866
commit
c625293b99
7 changed files with 29 additions and 46 deletions
|
@ -30,26 +30,10 @@ module Repository
|
||||||
Commit.commits_between(repo, from, to)
|
Commit.commits_between(repo, from, to)
|
||||||
end
|
end
|
||||||
|
|
||||||
def write_hooks
|
|
||||||
%w(post-receive).each do |hook|
|
|
||||||
write_hook(hook, File.read(File.join(Rails.root, 'lib', "#{hook}-hook")))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def satellite
|
def satellite
|
||||||
@satellite ||= Gitlab::Satellite.new(self)
|
@satellite ||= Gitlab::Satellite.new(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
def write_hook(name, content)
|
|
||||||
hook_file = File.join(path_to_repo, 'hooks', name)
|
|
||||||
|
|
||||||
File.open(hook_file, 'w') do |f|
|
|
||||||
f.write(content)
|
|
||||||
end
|
|
||||||
|
|
||||||
File.chmod(0775, hook_file)
|
|
||||||
end
|
|
||||||
|
|
||||||
def has_post_receive_file?
|
def has_post_receive_file?
|
||||||
hook_file = File.join(path_to_repo, 'hooks', 'post-receive')
|
hook_file = File.join(path_to_repo, 'hooks', 'post-receive')
|
||||||
File.exists?(hook_file)
|
File.exists?(hook_file)
|
||||||
|
@ -73,8 +57,6 @@ module Repository
|
||||||
|
|
||||||
def update_repository
|
def update_repository
|
||||||
Gitlab::GitHost.system.update_project(path, self)
|
Gitlab::GitHost.system.update_project(path, self)
|
||||||
|
|
||||||
write_hooks if File.exists?(path_to_repo)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_repository
|
def destroy_repository
|
||||||
|
|
|
@ -23,5 +23,3 @@
|
||||||
= preserve do
|
= preserve do
|
||||||
sudo chmod -R 770 /home/git/repositories/
|
sudo chmod -R 770 /home/git/repositories/
|
||||||
sudo chown -R git:git /home/git/repositories/
|
sudo chown -R git:git /home/git/repositories/
|
||||||
sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
namespace :gitlab do
|
namespace :gitlab do
|
||||||
namespace :app do
|
namespace :app do
|
||||||
desc "GITLAB | Setup production application"
|
desc "GITLAB | Setup production application"
|
||||||
task :setup => ['db:setup', 'db:seed_fu', 'gitlab:app:enable_automerge']
|
task :setup => [
|
||||||
|
'db:setup',
|
||||||
|
'db:seed_fu',
|
||||||
|
'gitlab:gitolite:write_hooks',
|
||||||
|
'gitlab:app:enable_automerge'
|
||||||
|
]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -67,12 +67,6 @@ namespace :gitlab do
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
unless File.owned?(hook_file)
|
|
||||||
puts "post-receive file is not owner by gitlab".red
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "post-reveice file ok".green
|
puts "post-reveice file ok".green
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
namespace :gitlab do
|
|
||||||
namespace :gitolite do
|
|
||||||
desc "GITLAB | Rewrite hooks for repos"
|
|
||||||
task :update_hooks => :environment do
|
|
||||||
puts "Starting Projects"
|
|
||||||
Project.find_each(:batch_size => 100) do |project|
|
|
||||||
begin
|
|
||||||
if project.commit
|
|
||||||
project.write_hooks
|
|
||||||
print ".".green
|
|
||||||
end
|
|
||||||
rescue Exception => e
|
|
||||||
print e.message.red
|
|
||||||
end
|
|
||||||
end
|
|
||||||
puts "\nDone with projects"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
23
lib/tasks/gitlab/write_hook.rake
Normal file
23
lib/tasks/gitlab/write_hook.rake
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
namespace :gitlab do
|
||||||
|
namespace :gitolite do
|
||||||
|
desc "GITLAB | Write GITLAB hook for gitolite"
|
||||||
|
task :write_hooks => :environment do
|
||||||
|
gitolite_hooks_path = File.join("/home", Gitlab.config.ssh_user, "share", "gitolite", "hooks", "common")
|
||||||
|
gitlab_hooks_path = Rails.root.join("lib", "hooks")
|
||||||
|
|
||||||
|
gitlab_hook_files = ['post-receive']
|
||||||
|
|
||||||
|
gitlab_hook_files.each do |file_name|
|
||||||
|
source = File.join(gitlab_hooks_path, file_name)
|
||||||
|
dest = File.join(gitolite_hooks_path, file_name)
|
||||||
|
|
||||||
|
puts "sudo -u root cp #{source} #{dest}".yellow
|
||||||
|
`sudo -u root cp #{source} #{dest}`
|
||||||
|
|
||||||
|
puts "sudo -u root chown git:git #{dest}".yellow
|
||||||
|
`sudo -u root chown git:git #{dest}`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue