From 3fde07e662a9cadfc5582ccb0dc95b84b0d6cbc0 Mon Sep 17 00:00:00 2001 From: James Edwards-Jones Date: Tue, 8 Nov 2016 15:45:05 +0000 Subject: WIP --- app/services/merge_requests/build_service.rb | 34 +++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb index 6a7393a9921..a5423d85cc8 100644 --- a/app/services/merge_requests/build_service.rb +++ b/app/services/merge_requests/build_service.rb @@ -1,7 +1,7 @@ module MergeRequests class BuildService < MergeRequests::BaseService def execute - merge_request = MergeRequest.new(params) + @merge_request = merge_request = MergeRequest.new(params) # Set MR attributes merge_request.can_be_created = true @@ -72,16 +72,16 @@ module MergeRequests # more than one commit in the MR # def set_title_and_description(merge_request) - if match = merge_request.source_branch.match(/\A(\d+)-/) - iid = match[1] - end + # TODO: if single_commit? then set_title_from_commit, + # elsif source_branch_starts_with_issue_id? then set_from_issue_with_closes, + # else title_from_branch commits = merge_request.compare_commits if commits && commits.count == 1 commit = commits.first merge_request.title = commit.title merge_request.description ||= commit.description.try(:strip) - elsif iid && issue = merge_request.target_project.get_issue(iid, current_user) + elsif iid_from_branch_name && issue = get_issue case issue when Issue merge_request.title = "Resolve \"#{issue.title}\"" @@ -89,17 +89,12 @@ module MergeRequests merge_request.title = "Resolve #{issue.title}" end else + # TODO: ensure this is called for confidential issues even if branch name starts with a number merge_request.title = merge_request.source_branch.titleize.humanize end - if iid - closes_issue = "Closes ##{iid}" - - if merge_request.description.present? - merge_request.description += closes_issue.prepend("\n\n") - else - merge_request.description = closes_issue - end + if iid_from_branch_name + @merge_request.description = description_with_closes_reference end merge_request.title = merge_request.wip_title if commits.empty? @@ -115,5 +110,18 @@ module MergeRequests merge_request.can_be_created = false merge_request end + + private + def iid_from_branch_name + @iid_from_branch_name ||= @merge_request.source_branch.match(/\A(\d+)-/).try!(:[], 1) + end + + def description_with_closes_reference + [@merge_request.description, "Closes ##{iid_from_branch_name}"].reject(&:blank?).join("\n\n") + end + + def get_issue + @merge_request.target_project.get_issue(iid_from_branch_name, current_user) + end end end -- cgit v1.2.1