Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2018-10-05 20:40:57 +0300
committerSean McGivern <sean@mcgivern.me.uk>2018-10-05 20:40:57 +0300
commit58a256ad0bfa10211479b2685ed2d5e19948e059 (patch)
tree7078c2506e50829e1c85d43bc71deae907c29b57 /app
parentb407061a281607e0c4bf22d2b7e94a068768ccac (diff)
parent0ae48e068794a732f728de76ffbf3f95e702ba9a (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.rb2
-rw-r--r--app/models/issue.rb18
-rw-r--r--app/services/issues/related_branches_service.rb26
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