summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2016-11-08 15:45:05 +0000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-01-16 13:16:02 -0500
commit3fde07e662a9cadfc5582ccb0dc95b84b0d6cbc0 (patch)
tree53e716f0229061b747a3bfdd2ad702014dbe9df6
parentf12a8c467c21d68f355d523fcc31cf28409287b7 (diff)
downloadgitlab-ce-jej-26738-refactor-mr-build-service.tar.gz
-rw-r--r--app/services/merge_requests/build_service.rb34
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