diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2016-11-08 15:45:05 +0000 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2017-01-16 13:16:02 -0500 |
commit | 3fde07e662a9cadfc5582ccb0dc95b84b0d6cbc0 (patch) | |
tree | 53e716f0229061b747a3bfdd2ad702014dbe9df6 | |
parent | f12a8c467c21d68f355d523fcc31cf28409287b7 (diff) | |
download | gitlab-ce-jej-26738-refactor-mr-build-service.tar.gz |
-rw-r--r-- | app/services/merge_requests/build_service.rb | 34 |
1 files 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 |