diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-07-01 16:23:58 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-07-01 16:23:58 +0200 |
commit | d24c40ec219d76e01e2fab5f6ebf431adae91bdd (patch) | |
tree | cb2960f806149209e64bdb2c3d3421ec03bb75c4 /app/models/merge_request.rb | |
parent | f31d2aa44d37683a0ff88c71f558f5faf87ebda2 (diff) | |
download | gitlab-ce-d24c40ec219d76e01e2fab5f6ebf431adae91bdd.tar.gz |
Merge branches inside one repository using rugged instead of satellites
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 7ecdaf6b2e0..040ab0f4b0f 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -205,7 +205,20 @@ class MergeRequest < ActiveRecord::Base end def check_if_can_be_merged - if Gitlab::Satellite::MergeAction.new(self.author, self).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 mark_as_mergeable else mark_as_unmergeable |