summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorMark Chao <mchao@gitlab.com>2018-06-30 12:31:36 +0800
committerMark Chao <mchao@gitlab.com>2018-07-02 19:42:23 +0800
commitd907b894bed848e5c60f101a3cd3172df35dd27a (patch)
tree666c0c04be2d09fe9e081686c5d07f0a3b41146b /app/models
parent3c0ff4ddb9a910a2da0472cfc6ced745a421a623 (diff)
downloadgitlab-ce-d907b894bed848e5c60f101a3cd3172df35dd27a.tar.gz
Fix notify_conflict? raising exception when branches do not exist
repository.can_be_merged? can raise error if diff_head_sha or target_branch are absent, therefore check those explicitly.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/merge_request.rb20
1 files changed, 11 insertions, 9 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 6c96c8ca391..b4090fd8baf 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -128,14 +128,9 @@ class MergeRequest < ActiveRecord::Base
end
after_transition unchecked: :cannot_be_merged do |merge_request, transition|
- begin
- if merge_request.notify_conflict?
- NotificationService.new.merge_request_unmergeable(merge_request)
- TodoService.new.merge_request_became_unmergeable(merge_request)
- end
- rescue Gitlab::Git::CommandError
- # Checking mergeability can trigger exception, e.g. non-utf8
- # We ignore this type of errors.
+ if merge_request.notify_conflict?
+ NotificationService.new.merge_request_unmergeable(merge_request)
+ TodoService.new.merge_request_became_unmergeable(merge_request)
end
end
@@ -707,7 +702,14 @@ class MergeRequest < ActiveRecord::Base
end
def notify_conflict?
- (opened? || locked?) && !project.repository.can_be_merged?(diff_head_sha, target_branch)
+ (opened? || locked?) &&
+ has_commits? &&
+ !branch_missing? &&
+ !project.repository.can_be_merged?(diff_head_sha, target_branch)
+ rescue Gitlab::Git::CommandError
+ # Checking mergeability can trigger exception, e.g. non-utf8
+ # We ignore this type of errors.
+ false
end
def related_notes