Commit 663b3c96 authored by Douwe Maan's avatar Douwe Maan

Condense commits already in target branch when updating merge request source branch.

parent 8b53d9ef
...@@ -26,6 +26,7 @@ v 7.9.0 (unreleased) ...@@ -26,6 +26,7 @@ v 7.9.0 (unreleased)
- Add Bitbucket omniauth provider. - Add Bitbucket omniauth provider.
- Add Bitbucket importer. - Add Bitbucket importer.
- Support referencing issues to a project whose name starts with a digit - Support referencing issues to a project whose name starts with a digit
- Condense commits already in target branch when updating merge request source branch.
v 7.8.2 v 7.8.2
- Fix service migration issue when upgrading from versions prior to 7.3 - Fix service migration issue when upgrading from versions prior to 7.3
......
...@@ -151,18 +151,41 @@ class Note < ActiveRecord::Base ...@@ -151,18 +151,41 @@ class Note < ActiveRecord::Base
) )
end end
def create_new_commits_note(noteable, project, author, commits) def create_new_commits_note(merge_request, project, author, new_commits, existing_commits = [])
commits_text = ActionController::Base.helpers.pluralize(commits.size, 'new commit') total_count = new_commits.length + existing_commits.length
commits_text = ActionController::Base.helpers.pluralize(total_count, 'commit')
body = "Added #{commits_text}:\n\n" body = "Added #{commits_text}:\n\n"
commits.each do |commit| if existing_commits.length > 0
commit_ids =
if existing_commits.length == 1
existing_commits.first.short_id
else
"#{existing_commits.first.short_id}...#{existing_commits.last.short_id}"
end
commits_text = ActionController::Base.helpers.pluralize(existing_commits.length, 'commit')
branch =
if merge_request.for_fork?
"#{merge_request.target_project_namespace}:#{merge_request.target_branch}"
else
merge_request.target_branch
end
message = "* #{commit_ids} - _#{commits_text} from branch `#{branch}`_"
body << message
body << "\n"
end
new_commits.each do |commit|
message = "* #{commit.short_id} - #{commit.title}" message = "* #{commit.short_id} - #{commit.title}"
body << message body << message
body << "\n" body << "\n"
end end
create( create(
noteable: noteable, noteable: merge_request,
project: project, project: project,
author: author, author: author,
note: body, note: body,
......
...@@ -82,8 +82,14 @@ module MergeRequests ...@@ -82,8 +82,14 @@ module MergeRequests
merge_requests = filter_merge_requests(merge_requests) merge_requests = filter_merge_requests(merge_requests)
merge_requests.each do |merge_request| merge_requests.each do |merge_request|
mr_commit_ids = Set.new(merge_request.commits.map(&:id))
new_commits, existing_commits = @commits.partition do |commit|
mr_commit_ids.include?(commit.id)
end
Note.create_new_commits_note(merge_request, merge_request.project, Note.create_new_commits_note(merge_request, merge_request.project,
@current_user, @commits) @current_user, new_commits, existing_commits)
end end
end end
......
...@@ -61,7 +61,7 @@ describe MergeRequests::RefreshService do ...@@ -61,7 +61,7 @@ describe MergeRequests::RefreshService do
it { expect(@merge_request.notes).to be_empty } it { expect(@merge_request.notes).to be_empty }
it { expect(@merge_request).to be_open } it { expect(@merge_request).to be_open }
it { expect(@fork_merge_request.notes.last.note).to include('new commit') } it { expect(@fork_merge_request.notes.last.note).to include('Added 4 commits') }
it { expect(@fork_merge_request).to be_open } it { expect(@fork_merge_request).to be_open }
end end
......
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