diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/commit.rb | 5 | ||||
-rw-r--r-- | app/models/merge_request.rb | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index 39d7f5b159d..ede8ad301e4 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -342,10 +342,11 @@ class Commit @merged_merge_request_hash[current_user] end - def has_been_reverted?(current_user, noteable = self) + def has_been_reverted?(current_user, notes_association = nil) ext = all_references(current_user) + notes_association ||= notes_with_associations - noteable.notes_with_associations.system.each do |note| + notes_association.system.each do |note| note.all_references(current_user, extractor: ext) end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 2669d2a6ff3..b7762a5f281 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -982,7 +982,16 @@ class MergeRequest < ActiveRecord::Base end def can_be_reverted?(current_user) - merge_commit && !merge_commit.has_been_reverted?(current_user, self) + return false unless merge_commit + + merged_at = metrics&.merged_at + notes_association = notes_with_associations + + if merged_at + notes_association = notes_association.where('created_at > ?', merged_at) + end + + !merge_commit.has_been_reverted?(current_user, notes_association) end def can_be_cherry_picked? |