parent
338eb2c41e
commit
5e6a5270d5
|
@ -8,23 +8,21 @@ class GitHooksService
|
||||||
@newrev = newrev
|
@newrev = newrev
|
||||||
@ref = ref
|
@ref = ref
|
||||||
|
|
||||||
if run_hook('pre-receive') && run_hook('update')
|
%w(pre-receive update).each do |hook_name|
|
||||||
yield
|
unless run_hook(hook_name)
|
||||||
|
raise PreReceiveError.new("Git operation was rejected by #{hook_name} hook")
|
||||||
run_hook('post-receive')
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
yield
|
||||||
|
|
||||||
|
run_hook('post-receive')
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def run_hook(name)
|
def run_hook(name)
|
||||||
hook = Gitlab::Git::Hook.new(name, @repo_path)
|
hook = Gitlab::Git::Hook.new(name, @repo_path)
|
||||||
status = hook.trigger(@user, @oldrev, @newrev, @ref)
|
hook.trigger(@user, @oldrev, @newrev, @ref)
|
||||||
|
|
||||||
if !status && (name != 'post-receive')
|
|
||||||
raise PreReceiveError.new("Git operation was rejected by #{name} hook")
|
|
||||||
end
|
|
||||||
|
|
||||||
status
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,7 +31,9 @@ describe GitHooksService do
|
||||||
expect(service).to receive(:run_hook).with('pre-receive').and_return(false)
|
expect(service).to receive(:run_hook).with('pre-receive').and_return(false)
|
||||||
expect(service).not_to receive(:run_hook).with('post-receive')
|
expect(service).not_to receive(:run_hook).with('post-receive')
|
||||||
|
|
||||||
service.execute(user, @repo_path, @blankrev, @newrev, @ref)
|
expect do
|
||||||
|
service.execute(user, @repo_path, @blankrev, @newrev, @ref)
|
||||||
|
end.to raise_error(GitHooksService::PreReceiveError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,7 +43,9 @@ describe GitHooksService do
|
||||||
expect(service).to receive(:run_hook).with('update').and_return(false)
|
expect(service).to receive(:run_hook).with('update').and_return(false)
|
||||||
expect(service).not_to receive(:run_hook).with('post-receive')
|
expect(service).not_to receive(:run_hook).with('post-receive')
|
||||||
|
|
||||||
service.execute(user, @repo_path, @blankrev, @newrev, @ref)
|
expect do
|
||||||
|
service.execute(user, @repo_path, @blankrev, @newrev, @ref)
|
||||||
|
end.to raise_error(GitHooksService::PreReceiveError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue