From 2258572b80bf9b07ffb4795639b489e7f7f346e7 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 11 Aug 2015 10:50:39 +0200
Subject: [PATCH] Revert "Merge branches inside one repository using rugged
 instead of satellites"

This reverts commit d24c40ec219d76e01e2fab5f6ebf431adae91bdd.
---
 app/models/merge_request.rb                   | 15 +-----
 app/models/repository.rb                      |  2 +
 .../merge_requests/auto_merge_service.rb      | 51 ++-----------------
 3 files changed, 6 insertions(+), 62 deletions(-)

diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 5a48fe66281..324d1795ab4 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -205,20 +205,7 @@ class MergeRequest < ActiveRecord::Base
   end
 
   def check_if_can_be_merged
-    can_be_merged =
-      if for_fork?
-        Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged?
-      else
-        rugged = project.repository.rugged
-        our_commit = rugged.branches[target_branch].target
-        their_commit = rugged.branches[source_branch].target
-
-        if our_commit && their_commit
-          !rugged.merge_commits(our_commit, their_commit).conflicts?
-        end
-      end
-
-    if can_be_merged
+    if Gitlab::Satellite::MergeAction.new(self.author, self).can_be_merged?
       mark_as_mergeable
     else
       mark_as_unmergeable
diff --git a/app/models/repository.rb b/app/models/repository.rb
index dae19b9ddca..29bccbbaf58 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -403,6 +403,8 @@ class Repository
     Gitlab::Git::Blob.remove(raw_repository, options)
   end
 
+  private
+
   def user_to_comitter(user)
     {
       email: user.email,
diff --git a/app/services/merge_requests/auto_merge_service.rb b/app/services/merge_requests/auto_merge_service.rb
index db824d452d0..cdedf48b0c0 100644
--- a/app/services/merge_requests/auto_merge_service.rb
+++ b/app/services/merge_requests/auto_merge_service.rb
@@ -5,20 +5,17 @@ module MergeRequests
   # mark merge request as merged and execute all hooks and notifications
   # Called when you do merge via GitLab UI
   class AutoMergeService < BaseMergeService
-    attr_reader :merge_request, :commit_message
-
     def execute(merge_request, commit_message)
-      @commit_message = commit_message
-      @merge_request = merge_request
-
       merge_request.lock_mr
 
-      if merge!
+      if Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
         merge_request.merge
+
         create_merge_event(merge_request, current_user)
         create_note(merge_request)
         notification_service.merge_mr(merge_request, current_user)
         execute_hooks(merge_request, 'merge')
+
         true
       else
         merge_request.unlock_mr
@@ -29,47 +26,5 @@ module MergeRequests
       merge_request.mark_as_unmergeable
       false
     end
-
-    def merge!
-      if merge_request.for_fork?
-        Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
-      else
-        # Merge local branches using rugged instead of satellites
-        if sha = commit
-          after_commit(sha, merge_request.target_branch)
-
-          if merge_request.remove_source_branch?
-            DeleteBranchService.new(merge_request.source_project, current_user).execute(merge_request.source_branch)
-          end
-
-          true
-        else
-          false
-        end
-      end
-    end
-
-    def commit
-      committer = repository.user_to_comitter(current_user)
-
-      options = {
-        message: commit_message,
-        author: committer,
-        committer: committer
-      }
-
-      repository.merge(merge_request.source_branch, merge_request.target_branch, options)
-    end
-
-    def after_commit(sha, branch)
-      commit = repository.commit(sha)
-      full_ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch}"
-      old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA
-      GitPushService.new.execute(project, current_user, old_sha, sha, full_ref)
-    end
-
-    def repository
-      project.repository
-    end
   end
 end
-- 
GitLab