diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-10-05 20:40:57 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-10-05 20:40:57 +0300 |
commit | 58a256ad0bfa10211479b2685ed2d5e19948e059 (patch) | |
tree | 7078c2506e50829e1c85d43bc71deae907c29b57 /app | |
parent | b407061a281607e0c4bf22d2b7e94a068768ccac (diff) | |
parent | 0ae48e068794a732f728de76ffbf3f95e702ba9a (diff) |
Merge branch 'issue_43097' into 'master'
Move related branches to service
Closes #43097
See merge request gitlab-org/gitlab-ce!22094
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects/issues_controller.rb | 2 | ||||
-rw-r--r-- | app/models/issue.rb | 18 | ||||
-rw-r--r-- | app/services/issues/related_branches_service.rb | 26 |
3 files changed, 27 insertions, 19 deletions
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 4e859de6fde..b06a6f3bb0d 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -127,7 +127,7 @@ class Projects::IssuesController < Projects::ApplicationController end def related_branches - @related_branches = @issue.related_branches(current_user) + @related_branches = Issues::RelatedBranchesService.new(project, current_user).execute(issue) respond_to do |format| format.json do diff --git a/app/models/issue.rb b/app/models/issue.rb index d13fbcf002c..4ace5d3ab97 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -170,24 +170,6 @@ class Issue < ActiveRecord::Base "#{project.to_reference(from, full: full)}#{reference}" end - # All branches containing the current issue's ID, except for - # those with a merge request open referencing the current issue. - # rubocop: disable CodeReuse/ServiceClass - def related_branches(current_user) - branches_with_iid = project.repository.branch_names.select do |branch| - branch =~ /\A#{iid}-(?!\d+-stable)/i - end - - branches_with_merge_request = - Issues::ReferencedMergeRequestsService - .new(project, current_user) - .referenced_merge_requests(self) - .map(&:source_branch) - - branches_with_iid - branches_with_merge_request - end - # rubocop: enable CodeReuse/ServiceClass - def suggested_branch_name return to_branch_name unless project.repository.branch_exists?(to_branch_name) diff --git a/app/services/issues/related_branches_service.rb b/app/services/issues/related_branches_service.rb new file mode 100644 index 00000000000..76af482b7ac --- /dev/null +++ b/app/services/issues/related_branches_service.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# This service fetches all branches containing the current issue's ID, except for +# those with a merge request open referencing the current issue. +module Issues + class RelatedBranchesService < Issues::BaseService + def execute(issue) + branches_with_iid_of(issue) - branches_with_merge_request_for(issue) + end + + private + + def branches_with_merge_request_for(issue) + Issues::ReferencedMergeRequestsService + .new(project, current_user) + .referenced_merge_requests(issue) + .map(&:source_branch) + end + + def branches_with_iid_of(issue) + project.repository.branch_names.select do |branch| + branch =~ /\A#{issue.iid}-(?!\d+-stable)/i + end + end + end +end |