Condense commits already in target branch when updating merge request source branch.
This commit is contained in:
parent
8b53d9efe6
commit
663b3c968f
|
@ -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
|
||||||
)
|
)
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue