diff options
author | Clement Ho <clemmakesapps@gmail.com> | 2018-01-17 21:01:06 +0000 |
---|---|---|
committer | Clement Ho <clemmakesapps@gmail.com> | 2018-01-17 21:01:06 +0000 |
commit | 195448c28c3a3238126e9e21f7b1abb8f186980e (patch) | |
tree | 0d2d760317e17aeb3a7dc0d74ffc5d1978a00cb0 /app/models/merge_request.rb | |
parent | 525b178e5d5cfe127fe2cfc6f211725e6c3089ae (diff) | |
parent | f351cc28c2c878bf491bb0886be65bf35b58b261 (diff) | |
download | gitlab-ce-dispatcher-project-mr-edit.tar.gz |
Merge branch 'master' into 'dispatcher-project-mr-edit'dispatcher-project-mr-edit
# Conflicts:
# app/assets/javascripts/dispatcher.js
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 2669d2a6ff3..8028ff3875b 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -140,7 +140,9 @@ class MergeRequest < ActiveRecord::Base scope :merged, -> { with_state(:merged) } scope :closed_and_merged, -> { with_states(:closed, :merged) } scope :from_source_branches, ->(branches) { where(source_branch: branches) } - + scope :by_commit_sha, ->(sha) do + where('EXISTS (?)', MergeRequestDiff.select(1).where('merge_requests.latest_merge_request_diff_id = merge_request_diffs.id').by_commit_sha(sha)).reorder(nil) + end scope :join_project, -> { joins(:target_project) } scope :references_project, -> { references(:target_project) } scope :assigned, -> { where("assignee_id IS NOT NULL") } @@ -982,7 +984,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? |