summaryrefslogtreecommitdiff
path: root/lib/gitlab/merge_requests
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-12-21 12:14:15 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-12-21 12:14:15 +0000
commit55e3b0c9100c453fa32055dc2c76bd7ebfa23a17 (patch)
treebe205a5fe067983f154884f724511ba6fdb2620e /lib/gitlab/merge_requests
parent3442b76bbd896c85c06feaa56e3d9355a3945523 (diff)
downloadgitlab-ce-55e3b0c9100c453fa32055dc2c76bd7ebfa23a17.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/merge_requests')
-rw-r--r--lib/gitlab/merge_requests/commit_message_generator.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/gitlab/merge_requests/commit_message_generator.rb b/lib/gitlab/merge_requests/commit_message_generator.rb
index 0e9ec6f5cb3..39247a47bf5 100644
--- a/lib/gitlab/merge_requests/commit_message_generator.rb
+++ b/lib/gitlab/merge_requests/commit_message_generator.rb
@@ -2,8 +2,9 @@
module Gitlab
module MergeRequests
class CommitMessageGenerator
- def initialize(merge_request:)
+ def initialize(merge_request:, current_user:)
@merge_request = merge_request
+ @current_user = @merge_request.metrics&.merged_by || @merge_request.merge_user || current_user
end
def merge_message
@@ -21,12 +22,13 @@ module Gitlab
private
attr_reader :merge_request
+ attr_reader :current_user
PLACEHOLDERS = {
- 'source_branch' => ->(merge_request) { merge_request.source_branch.to_s },
- 'target_branch' => ->(merge_request) { merge_request.target_branch.to_s },
- 'title' => ->(merge_request) { merge_request.title },
- 'issues' => ->(merge_request) do
+ 'source_branch' => ->(merge_request, _) { merge_request.source_branch.to_s },
+ 'target_branch' => ->(merge_request, _) { merge_request.target_branch.to_s },
+ 'title' => ->(merge_request, _) { merge_request.title },
+ 'issues' => ->(merge_request, _) do
return "" if merge_request.visible_closing_issues_for.blank?
closes_issues_references = merge_request.visible_closing_issues_for.map do |issue|
@@ -34,10 +36,13 @@ module Gitlab
end
"Closes #{closes_issues_references.to_sentence}"
end,
- 'description' => ->(merge_request) { merge_request.description.presence || '' },
- 'reference' => ->(merge_request) { merge_request.to_reference(full: true) },
- 'first_commit' => -> (merge_request) { merge_request.first_commit&.safe_message&.strip.presence || '' },
- 'first_multiline_commit' => -> (merge_request) { merge_request.first_multiline_commit&.safe_message&.strip.presence || merge_request.title }
+ 'description' => ->(merge_request, _) { merge_request.description.presence || '' },
+ 'reference' => ->(merge_request, _) { merge_request.to_reference(full: true) },
+ 'first_commit' => -> (merge_request, _) { merge_request.first_commit&.safe_message&.strip.presence || '' },
+ 'first_multiline_commit' => -> (merge_request, _) { merge_request.first_multiline_commit&.safe_message&.strip.presence || merge_request.title },
+ 'url' => ->(merge_request, _) { Gitlab::UrlBuilder.build(merge_request) },
+ 'approved_by' => ->(merge_request, _) { merge_request.approved_by_users.map { |user| "Approved-by: #{user.name} <#{user.commit_email_or_default}>" }.join("\n") },
+ 'merged_by' => ->(_, user) { "#{user&.name} <#{user&.commit_email_or_default}>" }
}.freeze
PLACEHOLDERS_REGEX = Regexp.union(PLACEHOLDERS.keys.map do |key|
@@ -57,14 +62,14 @@ module Gitlab
# This allows us to recreate previous default merge commit message behaviour - we skipped new line character
# before empty description and before closed issues when none were present.
PLACEHOLDERS.each do |key, value|
- unless value.call(merge_request).present?
+ unless value.call(merge_request, current_user).present?
message = message.gsub(BLANK_PLACEHOLDERS_REGEXES[key], '')
end
end
Gitlab::StringPlaceholderReplacer
.replace_string_placeholders(message, PLACEHOLDERS_REGEX) do |key|
- PLACEHOLDERS[key].call(merge_request)
+ PLACEHOLDERS[key].call(merge_request, current_user)
end
end
end