Commit e76ad1dc authored by Jacob Vosmaer's avatar Jacob Vosmaer

Refactor hook creation in GitlabProjects

parent 634482d1
...@@ -74,12 +74,14 @@ class GitlabProjects ...@@ -74,12 +74,14 @@ class GitlabProjects
def add_project def add_project
$logger.info "Adding project #{@project_name} at <#{full_path}>." $logger.info "Adding project #{@project_name} at <#{full_path}>."
FileUtils.mkdir_p(full_path, mode: 0770) FileUtils.mkdir_p(full_path, mode: 0770)
cmd = "cd #{full_path} && git init --bare && #{create_hooks_cmd}" cmd = "cd #{full_path} && git init --bare"
system(cmd) system(cmd) && create_hooks(full_path)
end end
def create_hooks_cmd def create_hooks(path)
create_hooks_to(full_path) hook = File.join(path, 'hooks', 'update')
File.delete(hook) if File.exists?(hook)
File.symlink(File.join(ROOT_PATH, 'hooks', 'update'), hook)
end end
def rm_project def rm_project
...@@ -92,8 +94,8 @@ class GitlabProjects ...@@ -92,8 +94,8 @@ class GitlabProjects
def import_project def import_project
@source = ARGV.shift @source = ARGV.shift
$logger.info "Importing project #{@project_name} from <#{@source}> to <#{full_path}>." $logger.info "Importing project #{@project_name} from <#{@source}> to <#{full_path}>."
cmd = "cd #{repos_path} && git clone --bare #{@source} #{project_name} && #{create_hooks_cmd}" cmd = "cd #{repos_path} && git clone --bare #{@source} #{project_name}"
system(cmd) system(cmd) && create_hooks(full_path)
end end
# Move repository from one directory to another # Move repository from one directory to another
...@@ -154,8 +156,8 @@ class GitlabProjects ...@@ -154,8 +156,8 @@ class GitlabProjects
end end
$logger.info "Forking project from <#{full_path}> to <#{full_destination_path}>." $logger.info "Forking project from <#{full_path}> to <#{full_destination_path}>."
cmd = "cd #{namespaced_path} && git clone --bare #{full_path} && #{create_hooks_to(full_destination_path)}" cmd = "cd #{namespaced_path} && git clone --bare #{full_path}"
system(cmd) system(cmd) && create_hooks(full_destination_path)
end end
def update_head def update_head
...@@ -178,10 +180,4 @@ class GitlabProjects ...@@ -178,10 +180,4 @@ class GitlabProjects
$logger.info "Update head in project #{project_name} to <#{new_head}>." $logger.info "Update head in project #{project_name} to <#{new_head}>."
true true
end end
private
def create_hooks_to(dest_path)
"ln -s #{File.join(ROOT_PATH, 'hooks', 'update')} #{dest_path}/hooks/update"
end
end end
...@@ -95,14 +95,15 @@ describe GitlabProjects do ...@@ -95,14 +95,15 @@ describe GitlabProjects do
it "should create a directory" do it "should create a directory" do
gl_projects.stub(system: true) gl_projects.stub(system: true)
gl_projects.stub(create_hooks: true)
gl_projects.exec gl_projects.exec
File.exists?(tmp_repo_path).should be_true File.exists?(tmp_repo_path).should be_true
end end
it "should receive valid cmd" do it "should receive valid cmd" do
valid_cmd = "cd #{tmp_repo_path} && git init --bare" valid_cmd = "cd #{tmp_repo_path} && git init --bare"
valid_cmd << " && ln -s #{ROOT_PATH}/hooks/update #{tmp_repo_path}/hooks/update" gl_projects.should_receive(:system).with(valid_cmd).and_return(true)
gl_projects.should_receive(:system).with(valid_cmd) gl_projects.should_receive(:create_hooks).with(tmp_repo_path)
gl_projects.exec gl_projects.exec
end end
......
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