Merge branch 'condensed-mr-commits' into 'master'

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

Resolves https://dev.gitlab.org/gitlab/gitlabhq/issues/2043.

![Screen_Shot_2015-03-06_at_17.17.13](https://dev.gitlab.org/gitlab/gitlabhq/uploads/8d03540b7b7294ce07005e6f3db6ed3d/Screen_Shot_2015-03-06_at_17.17.13.png)

(Not shown in screenshot, but works fine with rebases as well)

See merge request !1648
This commit is contained in:
Dmitriy Zaporozhets 2015-03-07 00:13:10 +00:00
commit 7dadd423d5
4 changed files with 36 additions and 6 deletions

View file

@ -27,6 +27,7 @@ v 7.9.0 (unreleased)
- Add Bitbucket omniauth provider.
- Add Bitbucket importer.
- 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
- Fix service migration issue when upgrading from versions prior to 7.3

View file

@ -151,18 +151,41 @@ class Note < ActiveRecord::Base
)
end
def create_new_commits_note(noteable, project, author, commits)
commits_text = ActionController::Base.helpers.pluralize(commits.size, 'new commit')
def create_new_commits_note(merge_request, project, author, new_commits, existing_commits = [])
total_count = new_commits.length + existing_commits.length
commits_text = ActionController::Base.helpers.pluralize(total_count, 'commit')
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}"
body << message
body << "\n"
end
create(
noteable: noteable,
noteable: merge_request,
project: project,
author: author,
note: body,

View file

@ -82,8 +82,14 @@ module MergeRequests
merge_requests = filter_merge_requests(merge_requests)
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,
@current_user, @commits)
@current_user, new_commits, existing_commits)
end
end

View file

@ -61,7 +61,7 @@ describe MergeRequests::RefreshService do
it { expect(@merge_request.notes).to be_empty }
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 }
end