From d34733efc4ac24979587a7ce6ac69db41a2003c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D=C3=A1vila?= Date: Sun, 14 Feb 2016 22:36:30 -0500 Subject: Don't show revert button if commit/MR has already been reverted. --- app/models/commit.rb | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 38bbc24fbfc..628926e4886 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -219,14 +219,20 @@ class Commit "revert-#{short_id}" end + def revert_description + if merged_merge_request + "This reverts merge request #{merged_merge_request.to_reference}" + else + "This reverts commit #{sha}" + end + end + def revert_message - description = if merged_merge_request - "This reverts merge request #{merged_merge_request.to_reference}" - else - "This reverts commit #{sha}" - end + "Revert \"#{title}\"" + "\n\n#{revert_description}" + end - "Revert \"#{title}\"" + "\n\n#{description}" + def reverts_commit?(commit) + description.include?(commit.revert_description) end def merge_commit? @@ -239,6 +245,14 @@ class Commit @merged_merge_request = merge_commit? && MergeRequest.find_by(merge_commit_sha: id) end + def has_been_reverted?(current_user = nil, noteable = self) + Gitlab::ReferenceExtractor.lazily do + [self, *noteable.notes].flat_map do |note| + note.all_references(current_user).commits + end + end.any? { |commit_ref| commit_ref.reverts_commit?(self) } + end + private def repo_changes -- cgit v1.2.1