summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2019-01-31 16:32:44 -0200
committerOswaldo Ferreira <oswaldo@gitlab.com>2019-02-25 10:40:58 -0300
commit1ad699677fa4b24a9bc002c6dc20164b8832bca5 (patch)
tree8018d8af35b14d78b20144788a0b271226347a9b /app/models/merge_request.rb
parent992183534dd1af54bf891789aca5777ea91c0942 (diff)
downloadgitlab-ce-1ad699677fa4b24a9bc002c6dc20164b8832bca5.tar.gz
Support merge to ref for merge-commit and squash
Adds the ground work for writing into the merge ref refs/merge-requests/:iid/merge the merge result between source and target branches of a MR, without further side-effects such as mailing, MR updates and target branch changes.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 75fca96ce0a..1468ae1c34a 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -764,6 +764,16 @@ class MergeRequest < ActiveRecord::Base
true
end
+ def mergeable_to_ref?
+ return false if merged?
+ return false if broken?
+
+ # Given the `merge_ref_path` will have the same
+ # state the `target_branch` would have. Ideally
+ # we need to check if it can be merged to it.
+ project.repository.can_be_merged?(diff_head_sha, target_branch)
+ end
+
def ff_merge_possible?
project.repository.ancestor?(target_branch_sha, diff_head_sha)
end
@@ -1077,6 +1087,10 @@ class MergeRequest < ActiveRecord::Base
"refs/#{Repository::REF_MERGE_REQUEST}/#{iid}/head"
end
+ def merge_ref_path
+ "refs/#{Repository::REF_MERGE_REQUEST}/#{iid}/merge"
+ end
+
def in_locked_state
begin
lock_mr