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