Render commit reference using short sha, but include full sha in comment.
This commit is contained in:
parent
bd4ab21c07
commit
62c14ba2ed
8 changed files with 58 additions and 11 deletions
|
@ -86,6 +86,14 @@ class Commit
|
|||
end
|
||||
|
||||
def to_reference(from_project = nil)
|
||||
if cross_project_reference?(from_project)
|
||||
project.to_reference + self.class.reference_prefix + self.id
|
||||
else
|
||||
self.id
|
||||
end
|
||||
end
|
||||
|
||||
def reference_link_text(from_project = nil)
|
||||
if cross_project_reference?(from_project)
|
||||
project.to_reference + self.class.reference_prefix + self.short_id
|
||||
else
|
||||
|
|
|
@ -95,6 +95,14 @@ class CommitRange
|
|||
alias_method :id, :to_s
|
||||
|
||||
def to_reference(from_project = nil)
|
||||
if cross_project_reference?(from_project)
|
||||
reference = project.to_reference + self.class.reference_prefix + self.id
|
||||
else
|
||||
self.id
|
||||
end
|
||||
end
|
||||
|
||||
def reference_link_text(from_project = nil)
|
||||
reference = ref_from + notation + ref_to
|
||||
|
||||
if cross_project_reference?(from_project)
|
||||
|
|
|
@ -21,6 +21,10 @@ module Referable
|
|||
''
|
||||
end
|
||||
|
||||
def reference_link_text(from_project = nil)
|
||||
to_reference(from_project)
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
# The character that prefixes the actual reference identifier
|
||||
#
|
||||
|
|
|
@ -82,7 +82,7 @@ module Gitlab
|
|||
data = data_attribute(project: project.id, object_sym => object.id, original: match)
|
||||
url = matches[:url] || url_for_object(object, project)
|
||||
|
||||
text = object.to_reference(context[:project])
|
||||
text = object.reference_link_text(context[:project])
|
||||
|
||||
extras = object_link_text_extras(object, matches)
|
||||
text += " (#{extras.join(", ")})" if extras.any?
|
||||
|
|
|
@ -53,7 +53,7 @@ module Gitlab::Markdown
|
|||
it 'links with adjacent text' do
|
||||
doc = filter("See (#{reference}.)")
|
||||
|
||||
exp = Regexp.escape(range.to_reference)
|
||||
exp = Regexp.escape(range.reference_link_text)
|
||||
expect(doc.to_html).to match(/\(<a.+>#{exp}<\/a>\.\)/)
|
||||
end
|
||||
|
||||
|
@ -125,7 +125,7 @@ module Gitlab::Markdown
|
|||
it 'links with adjacent text' do
|
||||
doc = filter("Fixed (#{reference}.)")
|
||||
|
||||
exp = Regexp.escape("#{project2.to_reference}@#{range.to_reference}")
|
||||
exp = Regexp.escape("#{project2.to_reference}@#{range.reference_link_text}")
|
||||
expect(doc.to_html).to match(/\(<a.+>#{exp}<\/a>\.\)/)
|
||||
end
|
||||
|
||||
|
@ -163,7 +163,7 @@ module Gitlab::Markdown
|
|||
it 'links with adjacent text' do
|
||||
doc = filter("Fixed (#{reference}.)")
|
||||
|
||||
exp = Regexp.escape(range.to_reference(project))
|
||||
exp = Regexp.escape(range.reference_link_text(project))
|
||||
expect(doc.to_html).to match(/\(<a.+>#{exp}<\/a>\.\)/)
|
||||
end
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ module Gitlab::Markdown
|
|||
it 'links with adjacent text' do
|
||||
doc = filter("Fixed (#{reference}.)")
|
||||
|
||||
expect(doc.to_html).to match(/\(<a.+>#{commit.to_reference(project)}<\/a>\.\)/)
|
||||
expect(doc.to_html).to match(/\(<a.+>#{commit.reference_link_text(project)}<\/a>\.\)/)
|
||||
end
|
||||
|
||||
it 'ignores invalid commit IDs on the referenced project' do
|
||||
|
|
|
@ -38,15 +38,31 @@ describe CommitRange do
|
|||
let(:cross) { create(:project) }
|
||||
|
||||
it 'returns a String reference to the object' do
|
||||
expect(range.to_reference).to eq "#{sha_from}...#{sha_to}"
|
||||
expect(range.to_reference).to eq "#{full_sha_from}...#{full_sha_to}"
|
||||
end
|
||||
|
||||
it 'returns a String reference to the object' do
|
||||
expect(range2.to_reference).to eq "#{sha_from}..#{sha_to}"
|
||||
expect(range2.to_reference).to eq "#{full_sha_from}..#{full_sha_to}"
|
||||
end
|
||||
|
||||
it 'supports a cross-project reference' do
|
||||
expect(range.to_reference(cross)).to eq "#{project.to_reference}@#{sha_from}...#{sha_to}"
|
||||
expect(range.to_reference(cross)).to eq "#{project.to_reference}@#{full_sha_from}...#{full_sha_to}"
|
||||
end
|
||||
end
|
||||
|
||||
describe '#reference_link_text' do
|
||||
let(:cross) { create(:project) }
|
||||
|
||||
it 'returns a String reference to the object' do
|
||||
expect(range.reference_link_text).to eq "#{sha_from}...#{sha_to}"
|
||||
end
|
||||
|
||||
it 'returns a String reference to the object' do
|
||||
expect(range2.reference_link_text).to eq "#{sha_from}..#{sha_to}"
|
||||
end
|
||||
|
||||
it 'supports a cross-project reference' do
|
||||
expect(range.reference_link_text(cross)).to eq "#{project.to_reference}@#{sha_from}...#{sha_to}"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -15,12 +15,23 @@ describe Commit do
|
|||
|
||||
describe '#to_reference' do
|
||||
it 'returns a String reference to the object' do
|
||||
expect(commit.to_reference).to eq commit.short_id
|
||||
expect(commit.to_reference).to eq commit.id
|
||||
end
|
||||
|
||||
it 'supports a cross-project reference' do
|
||||
cross = double('project')
|
||||
expect(commit.to_reference(cross)).to eq "#{project.to_reference}@#{commit.short_id}"
|
||||
expect(commit.to_reference(cross)).to eq "#{project.to_reference}@#{commit.id}"
|
||||
end
|
||||
end
|
||||
|
||||
describe '#reference_link_text' do
|
||||
it 'returns a String reference to the object' do
|
||||
expect(commit.reference_link_text).to eq commit.short_id
|
||||
end
|
||||
|
||||
it 'supports a cross-project reference' do
|
||||
cross = double('project')
|
||||
expect(commit.reference_link_text(cross)).to eq "#{project.to_reference}@#{commit.short_id}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -88,7 +99,7 @@ eos
|
|||
subject { create(:project).commit }
|
||||
|
||||
let(:author) { create(:user, email: subject.author_email) }
|
||||
let(:backref_text) { "commit #{subject.short_id}" }
|
||||
let(:backref_text) { "commit #{subject.id}" }
|
||||
let(:set_mentionable_text) do
|
||||
->(txt) { allow(subject).to receive(:safe_message).and_return(txt) }
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue