summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Dodds <matthewrusselldodds@gmail.com>2016-09-29 21:51:33 -0400
committerMatthew Dodds <matthewrusselldodds@gmail.com>2016-09-29 21:51:33 -0400
commitec82cecf3c54cb2cd1ab7b72f77e787be1bf1264 (patch)
tree93dfe504596787d20faea4888b6e933128ccd917
parentce0591df704028c467dbb34c1521347c3b8c7cda (diff)
downloadgitlab-ce-ec82cecf3c54cb2cd1ab7b72f77e787be1bf1264.tar.gz
Add link to comparison from system note, update changelog
-rw-r--r--CHANGELOG1
-rw-r--r--app/services/system_note_service.rb15
-rw-r--r--spec/services/system_note_service_spec.rb20
3 files changed, 32 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a1add261a89..b74c7a05908 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
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
diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb
index 0c8446e7c3d..8da1af67ee6 100644
--- a/app/services/system_note_service.rb
+++ b/app/services/system_note_service.rb
@@ -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
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index 3d854a959f3..16e345501d9 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -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] }