Commit ec82cecf authored by Matthew Dodds's avatar Matthew Dodds

Add link to comparison from system note, update changelog

parent ce0591df
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 8.13.0 (unreleased) v 8.13.0 (unreleased)
- Add link from system note to compare with previous version
- Use gitlab-shell v3.6.2 (GIT TRACE logging) - Use gitlab-shell v3.6.2 (GIT TRACE logging)
- AbstractReferenceFilter caches project_refs on RequestStore when active - AbstractReferenceFilter caches project_refs on RequestStore when active
- Speed-up group milestones show page - Speed-up group milestones show page
......
...@@ -21,7 +21,8 @@ module SystemNoteService ...@@ -21,7 +21,8 @@ module SystemNoteService
total_count = new_commits.length + existing_commits.length total_count = new_commits.length + existing_commits.length
commits_text = "#{total_count} commit".pluralize(total_count) commits_text = "#{total_count} commit".pluralize(total_count)
body = "Added #{commits_text}:\n\n" body = "[Compare with previous version](#{diff_comparison_url(noteable, project, oldrev)})\n\n"
body << "Added #{commits_text}:\n\n"
body << existing_commit_summary(noteable, existing_commits, oldrev) body << existing_commit_summary(noteable, existing_commits, oldrev)
body << new_commit_summary(new_commits).join("\n") body << new_commit_summary(new_commits).join("\n")
...@@ -466,4 +467,16 @@ module SystemNoteService ...@@ -466,4 +467,16 @@ module SystemNoteService
def escape_html(text) def escape_html(text)
Rack::Utils.escape_html(text) Rack::Utils.escape_html(text)
end end
def diff_comparison_url(merge_request, project, oldrev)
diff_id = merge_request.merge_request_diff.id
Gitlab::Routing.url_helpers.diffs_namespace_project_merge_request_url(
project.namespace,
project,
merge_request.iid,
diff_id: diff_id,
start_sha: oldrev
)
end
end end
...@@ -40,21 +40,35 @@ describe SystemNoteService, services: true do ...@@ -40,21 +40,35 @@ describe SystemNoteService, services: true do
describe 'note body' do describe 'note body' do
let(:note_lines) { subject.note.split("\n").reject(&:blank?) } let(:note_lines) { subject.note.split("\n").reject(&:blank?) }
describe 'comparison diff link line' do
it 'adds the comparison link' do
link = Gitlab::Routing.url_helpers.diffs_namespace_project_merge_request_url(
project.namespace,
project,
noteable.iid,
diff_id: noteable.merge_request_diff.id,
start_sha: oldrev
)
expect(note_lines[0]).to eq "[Compare with previous version](#{link})"
end
end
context 'without existing commits' do context 'without existing commits' do
it 'adds a message header' do it 'adds a message header' do
expect(note_lines[0]).to eq "Added #{new_commits.size} commits:" expect(note_lines[1]).to eq "Added #{new_commits.size} commits:"
end end
it 'adds a message line for each commit' do it 'adds a message line for each commit' do
new_commits.each_with_index do |commit, i| new_commits.each_with_index do |commit, i|
# Skip the header # Skip the header
expect(note_lines[i + 1]).to eq "* #{commit.short_id} - #{commit.title}" expect(note_lines[i + 2]).to eq "* #{commit.short_id} - #{commit.title}"
end end
end end
end end
describe 'summary line for existing commits' do describe 'summary line for existing commits' do
let(:summary_line) { note_lines[1] } let(:summary_line) { note_lines[2] }
context 'with one existing commit' do context 'with one existing commit' do
let(:old_commits) { [noteable.commits.last] } let(:old_commits) { [noteable.commits.last] }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment