diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-05-27 10:03:14 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-05-27 10:03:14 +0000 |
commit | 701c2e9a3b4b60642eba0ee00c3e11e1e43fb131 (patch) | |
tree | c5bca23181bc9320cab36619b2287f1cc405623d /app/models/commit.rb | |
parent | 3ed05b2191a7ede4734e2b7952f3810e5a1ee728 (diff) | |
parent | 3cb6a338466ca9b8e2a831cce306fc6d650231ed (diff) | |
download | gitlab-ce-701c2e9a3b4b60642eba0ee00c3e11e1e43fb131.tar.gz |
Merge branch 'rs-to_reference' into 'master'
Add to_reference method to referable models
Now there is a single source of information for which attribute a model uses to be referenced, and its special character.
See merge request !641
Diffstat (limited to 'app/models/commit.rb')
-rw-r--r-- | app/models/commit.rb | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index be5a118bfec..f02fe240540 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -1,9 +1,11 @@ class Commit - include ActiveModel::Conversion - include StaticModel extend ActiveModel::Naming + + include ActiveModel::Conversion include Mentionable include Participable + include Referable + include StaticModel attr_mentionable :safe_message participant :author, :committer, :notes, :mentioned_users @@ -56,6 +58,34 @@ class Commit @raw.id end + def ==(other) + (self.class === other) && (raw == other.raw) + end + + def self.reference_prefix + '@' + end + + # Pattern used to extract commit references from text + # + # The SHA can be between 6 and 40 hex characters. + # + # This pattern supports cross-project references. + def self.reference_pattern + %r{ + (?:#{Project.reference_pattern}#{reference_prefix})? + (?<commit>\h{6,40}) + }x + end + + def to_reference(from_project = nil) + if cross_project_reference?(from_project) + "#{project.to_reference}@#{id}" + else + id + end + end + def diff_line_count @diff_line_count ||= Commit::diff_line_count(self.diffs) @diff_line_count @@ -126,11 +156,6 @@ class Commit Gitlab::ClosingIssueExtractor.new(project, current_user).closed_by_message(safe_message) end - # Mentionable override. - def gfm_reference - "commit #{id}" - end - def author User.find_for_commit(author_email, author_name) end |