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.
v 8.13.0 (unreleased)
- Add link from system note to compare with previous version
- Use gitlab-shell v3.6.2 (GIT TRACE logging)
- AbstractReferenceFilter caches project_refs on RequestStore when active
- Speed-up group milestones show page
......
......@@ -21,7 +21,8 @@ module SystemNoteService
total_count = new_commits.length + existing_commits.length
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 << new_commit_summary(new_commits).join("\n")
......@@ -466,4 +467,16 @@ module SystemNoteService
def escape_html(text)
Rack::Utils.escape_html(text)
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
......@@ -40,21 +40,35 @@ describe SystemNoteService, services: true do
describe 'note body' do
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
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
it 'adds a message line for each commit' do
new_commits.each_with_index do |commit, i|
# 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
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
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