From 3d416f1682c5e6a6ac1ea7013f66bbd0d23b452c Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 2 Jun 2015 10:45:13 +0200
Subject: [PATCH] Create activity event and execute hooks on web editor commit

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/services/files/base_service.rb   | 6 ++++++
 app/services/files/create_service.rb | 5 +++--
 app/services/files/update_service.rb | 3 ++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb
index bd245100955..29013be0f97 100644
--- a/app/services/files/base_service.rb
+++ b/app/services/files/base_service.rb
@@ -13,5 +13,11 @@ module Files
     def repository
       project.repository
     end
+
+    def after_commit(sha)
+      commit = repository.commit(sha)
+      full_ref = 'refs/heads/' + (params[:new_branch] || ref)
+      GitPushService.new.execute(project, current_user, commit.parent_id, sha, full_ref)
+    end
   end
 end
diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb
index 3516cf30dbc..bafc3565da1 100644
--- a/app/services/files/create_service.rb
+++ b/app/services/files/create_service.rb
@@ -40,7 +40,7 @@ module Files
           params[:content]
         end
 
-      created_successfully = repository.commit_file(
+      sha = repository.commit_file(
         current_user,
         file_path,
         content,
@@ -49,7 +49,8 @@ module Files
       )
 
 
-      if created_successfully
+      if sha
+        after_commit(sha)
         success
       else
         error("Your changes could not be committed, because the file has been changed")
diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb
index 4d7ac3b7504..c972f8322bb 100644
--- a/app/services/files/update_service.rb
+++ b/app/services/files/update_service.rb
@@ -26,7 +26,7 @@ module Files
           params[:content]
         end
 
-      repository.commit_file(
+      sha = repository.commit_file(
         current_user,
         path,
         content,
@@ -34,6 +34,7 @@ module Files
         params[:new_branch] || ref
       )
 
+      after_commit(sha)
       success
     rescue Gitlab::Satellite::CheckoutFailed => ex
       error("Your changes could not be committed because ref '#{ref}' could not be checked out", 400)
-- 
GitLab