Backport commit author changes from CE
This backports the changes made in EE to fix merge request approvers from https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/9574.
This commit is contained in:
parent
d9328cb3e3
commit
886f00bcba
4 changed files with 21 additions and 20 deletions
|
@ -20,8 +20,8 @@ class CommitCollection
|
||||||
commits.each(&block)
|
commits.each(&block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def committers
|
def authors
|
||||||
emails = without_merge_commits.map(&:committer_email).uniq
|
emails = without_merge_commits.map(&:author_email).uniq
|
||||||
|
|
||||||
User.by_any_email(emails)
|
User.by_any_email(emails)
|
||||||
end
|
end
|
||||||
|
|
|
@ -286,12 +286,12 @@ class MergeRequest < ActiveRecord::Base
|
||||||
work_in_progress?(title) ? title : "WIP: #{title}"
|
work_in_progress?(title) ? title : "WIP: #{title}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def committers
|
def commit_authors
|
||||||
@committers ||= commits.committers
|
@commit_authors ||= commits.authors
|
||||||
end
|
end
|
||||||
|
|
||||||
def authors
|
def authors
|
||||||
User.from_union([committers, User.where(id: self.author_id)])
|
User.from_union([commit_authors, User.where(id: self.author_id)])
|
||||||
end
|
end
|
||||||
|
|
||||||
# Verifies if title has changed not taking into account WIP prefix
|
# Verifies if title has changed not taking into account WIP prefix
|
||||||
|
|
|
@ -12,26 +12,26 @@ describe CommitCollection do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.committers' do
|
describe '.authors' do
|
||||||
it 'returns a relation of users when users are found' do
|
it 'returns a relation of users when users are found' do
|
||||||
user = create(:user, email: commit.committer_email.upcase)
|
user = create(:user, email: commit.author_email.upcase)
|
||||||
collection = described_class.new(project, [commit])
|
collection = described_class.new(project, [commit])
|
||||||
|
|
||||||
expect(collection.committers).to contain_exactly(user)
|
expect(collection.authors).to contain_exactly(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns empty array when committers cannot be found' do
|
it 'returns empty array when authors cannot be found' do
|
||||||
collection = described_class.new(project, [commit])
|
collection = described_class.new(project, [commit])
|
||||||
|
|
||||||
expect(collection.committers).to be_empty
|
expect(collection.authors).to be_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'excludes authors of merge commits' do
|
it 'excludes authors of merge commits' do
|
||||||
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
|
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
|
||||||
create(:user, email: commit.committer_email.upcase)
|
create(:user, email: commit.author_email.upcase)
|
||||||
collection = described_class.new(project, [commit])
|
collection = described_class.new(project, [commit])
|
||||||
|
|
||||||
expect(collection.committers).to be_empty
|
expect(collection.authors).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -435,6 +435,7 @@ describe MergeRequest do
|
||||||
it 'does not cache issues from external trackers' do
|
it 'does not cache issues from external trackers' do
|
||||||
issue = ExternalIssue.new('JIRA-123', subject.project)
|
issue = ExternalIssue.new('JIRA-123', subject.project)
|
||||||
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
|
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
|
||||||
|
|
||||||
allow(subject).to receive(:commits).and_return([commit])
|
allow(subject).to receive(:commits).and_return([commit])
|
||||||
|
|
||||||
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
|
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
|
||||||
|
@ -1023,23 +1024,23 @@ describe MergeRequest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#committers' do
|
describe '#commit_authors' do
|
||||||
it 'returns all the committers of every commit in the merge request' do
|
it 'returns all the authors of every commit in the merge request' do
|
||||||
users = subject.commits.map(&:committer_email).uniq.map do |email|
|
users = subject.commits.map(&:author_email).uniq.map do |email|
|
||||||
create(:user, email: email)
|
create(:user, email: email)
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(subject.committers).to match_array(users)
|
expect(subject.commit_authors).to match_array(users)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns an empty array if no committer is associated with a user' do
|
it 'returns an empty array if no author is associated with a user' do
|
||||||
expect(subject.committers).to be_empty
|
expect(subject.commit_authors).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#authors' do
|
describe '#authors' do
|
||||||
it 'returns a list with all the committers in the merge request and author' do
|
it 'returns a list with all the commit authors in the merge request and author' do
|
||||||
users = subject.commits.map(&:committer_email).uniq.map do |email|
|
users = subject.commits.map(&:author_email).uniq.map do |email|
|
||||||
create(:user, email: email)
|
create(:user, email: email)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue