summaryrefslogtreecommitdiff
path: root/app/models/commit.rb
diff options
context:
space:
mode:
authorAlfredo Sumaran <alfredo@gitlab.com>2016-02-22 21:15:40 -0500
committerAlfredo Sumaran <alfredo@gitlab.com>2016-02-22 21:15:40 -0500
commit67948368aec144ff7e9997ce184cb4d111622f08 (patch)
treec94e382fb1aca074b6ce503255564828cb387e36 /app/models/commit.rb
parent608012629cc90337aba6c5bd4b2b73b530091fb0 (diff)
parent7c8099853621cc2a244bf6e0fd37a8b503d1ec5e (diff)
downloadgitlab-ce-sidebar-sizing-higher-viewport.tar.gz
Merge branch 'master' into sidebar-sizing-higher-viewportsidebar-sizing-higher-viewport
Diffstat (limited to 'app/models/commit.rb')
-rw-r--r--app/models/commit.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 23b771aebb7..3224f5457f0 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -215,6 +215,44 @@ class Commit
ci_commit.try(:status) || :not_found
end
+ def revert_branch_name
+ "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
+ %Q{Revert "#{title}"\n\n#{revert_description}}
+ end
+
+ def reverts_commit?(commit)
+ description? && description.include?(commit.revert_description)
+ end
+
+ def merge_commit?
+ parents.size > 1
+ end
+
+ def merged_merge_request
+ return @merged_merge_request if defined?(@merged_merge_request)
+
+ @merged_merge_request = project.merge_requests.find_by(merge_commit_sha: id) if merge_commit?
+ end
+
+ def has_been_reverted?(current_user = nil, noteable = self)
+ Gitlab::ReferenceExtractor.lazily do
+ noteable.notes.system.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