diff options
author | Alfredo Sumaran <alfredo@gitlab.com> | 2016-02-22 21:15:40 -0500 |
---|---|---|
committer | Alfredo Sumaran <alfredo@gitlab.com> | 2016-02-22 21:15:40 -0500 |
commit | 67948368aec144ff7e9997ce184cb4d111622f08 (patch) | |
tree | c94e382fb1aca074b6ce503255564828cb387e36 /app/models/commit.rb | |
parent | 608012629cc90337aba6c5bd4b2b73b530091fb0 (diff) | |
parent | 7c8099853621cc2a244bf6e0fd37a8b503d1ec5e (diff) | |
download | gitlab-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.rb | 38 |
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 |