diff options
author | Mark Chao <mchao@gitlab.com> | 2018-06-30 12:31:36 +0800 |
---|---|---|
committer | Mark Chao <mchao@gitlab.com> | 2018-07-02 19:42:23 +0800 |
commit | d907b894bed848e5c60f101a3cd3172df35dd27a (patch) | |
tree | 666c0c04be2d09fe9e081686c5d07f0a3b41146b /app/models | |
parent | 3c0ff4ddb9a910a2da0472cfc6ced745a421a623 (diff) | |
download | gitlab-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.rb | 20 |
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 |