diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-07-02 15:50:26 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-07-02 15:50:26 +0300 |
commit | e7a5a3151492c0bc6b1a262e5caffd66bd25674c (patch) | |
tree | b33a271d7a8b4ffe0120da68e01feffa6f461d31 /app | |
parent | 601eb8df30c5d84236fee190caa6fd72b1c37cb3 (diff) | |
parent | d907b894bed848e5c60f101a3cd3172df35dd27a (diff) |
Merge branch '48653-mr-target-branch-missing' into 'master'
Fix notify_conflict? raising exception due to absent branches
Closes #48653
See merge request gitlab-org/gitlab-ce!20280
Diffstat (limited to 'app')
-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 |