diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2017-05-03 04:36:13 +0200 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2017-05-12 23:26:48 +0100 |
commit | f661980904f718440cc700b7d1f38ea8bf0e5480 (patch) | |
tree | 7933eee3b85e6af5da9db8223b6d870d8395926f /app/workers | |
parent | 8b17fb61b61b1f9707428c2333db2de29c4d3bcf (diff) | |
download | gitlab-ce-f661980904f718440cc700b7d1f38ea8bf0e5480.tar.gz |
Added repository_update hook
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/post_receive.rb | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb index 127d8dfbb61..c29571d3c62 100644 --- a/app/workers/post_receive.rb +++ b/app/workers/post_receive.rb @@ -20,13 +20,32 @@ class PostReceive # Nothing defined here yet. else process_project_changes(post_received) + process_repository_update(post_received) end end - def process_project_changes(post_received) - post_received.changes.each do |change| - oldrev, newrev, ref = change.strip.split(' ') + def process_repository_update(post_received) + changes = [] + refs = Set.new + + post_received.changes_refs do |oldrev, newrev, ref| + @user ||= post_received.identify(newrev) + unless @user + log("Triggered hook for non-existing user \"#{post_received.identifier}\"") + return false + end + + changes << Gitlab::DataBuilder::Repository.single_change(oldrev, newrev, ref) + refs << ref + end + + hook_data = Gitlab::DataBuilder::Repository.update(post_received.project, @user, changes, refs.to_a) + SystemHooksService.new.execute_hooks(hook_data, :repository_update_hooks) + end + + def process_project_changes(post_received) + post_received.changes_refs do |oldrev, newrev, ref| @user ||= post_received.identify(newrev) unless @user |