summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-06-24 18:13:56 +0200
committerRémy Coutable <remy@rymai.me>2016-06-24 18:33:02 +0200
commite3d464d82a15cb524d066c2ba5d0973efbbfeeef (patch)
tree8f07747fa3f6d6e6e2148378443f5f32557f960e /app/models/merge_request.rb
parentdbbc359497e7c3af1e48b8a86d1a64f80ea752d7 (diff)
downloadgitlab-ce-19035-fix-merge-issue.tar.gz
Fix a wrong MR status when merge_when_build_succeeds & project.only_allow_merge_if_build_succeeds are true19035-fix-merge-issue
The issue was that `MergeRequest#mergeable?` returns false when the CI state is not success and project.only_allow_merge_if_build_succeeds is true. In this case `Projects::MergeRequestsController#merge` would return the `:failed` status when enabling `merge_when_build_succeeds`, thus leading to a weird state and the MR never automatically merged. The fix is to disable the CI state check in the controller safeguard that early return the `:failed` status. Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 36bc98bdb1e..f5c5b7c1306 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -264,19 +264,19 @@ class MergeRequest < ActiveRecord::Base
self.title.sub(WIP_REGEX, "")
end
- def mergeable?
- return false unless mergeable_state?
+ def mergeable?(skip_ci_check: false)
+ return false unless mergeable_state?(skip_ci_check: skip_ci_check)
check_if_can_be_merged
can_be_merged?
end
- def mergeable_state?
+ def mergeable_state?(skip_ci_check: false)
return false unless open?
return false if work_in_progress?
return false if broken?
- return false unless mergeable_ci_state?
+ return false unless skip_ci_check || mergeable_ci_state?
true
end