From 55e3b0c9100c453fa32055dc2c76bd7ebfa23a17 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 21 Dec 2021 12:14:15 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- lib/gitlab/database/gitlab_schemas.yml | 2 +- .../merge_requests/commit_message_generator.rb | 27 +++++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/gitlab/database/gitlab_schemas.yml b/lib/gitlab/database/gitlab_schemas.yml index c9096de6b6e..025a59a14fd 100644 --- a/lib/gitlab/database/gitlab_schemas.yml +++ b/lib/gitlab/database/gitlab_schemas.yml @@ -200,7 +200,7 @@ experiment_subjects: :gitlab_main experiment_users: :gitlab_main external_approval_rules: :gitlab_main external_approval_rules_protected_branches: :gitlab_main -external_pull_requests: :gitlab_main +external_pull_requests: :gitlab_ci external_status_checks: :gitlab_main external_status_checks_protected_branches: :gitlab_main feature_gates: :gitlab_main 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 -- cgit v1.2.1