summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects/branches_controller.rb20
-rw-r--r--app/helpers/projects_helper.rb17
-rw-r--r--changelogs/unreleased/create_branch_repo_less.yml2
-rw-r--r--spec/controllers/projects/branches_controller_spec.rb10
-rw-r--r--spec/factories/services.rb10
5 files changed, 33 insertions, 26 deletions
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index f815fa1387e..a01c0caa959 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -1,7 +1,6 @@
class Projects::BranchesController < Projects::ApplicationController
include ActionView::Helpers::SanitizeHelper
include SortingHelper
- include ProjectsHelper
# Authorize
before_action :require_non_empty_project, except: :create
@@ -34,7 +33,7 @@ class Projects::BranchesController < Projects::ApplicationController
branch_name = sanitize(strip_tags(params[:branch_name]))
branch_name = Addressable::URI.unescape(branch_name)
- is_redirect_to_autodeploy_needed = project.empty_repo? && project.deployment_services.present?
+ redirect_to_autodeploy = project.empty_repo? && project.deployment_services.present?
result = CreateBranchService.new(project, current_user).
execute(branch_name, ref)
@@ -47,11 +46,10 @@ class Projects::BranchesController < Projects::ApplicationController
if result[:status] == :success
@branch = result[:branch]
- if is_redirect_to_autodeploy_needed
+ if redirect_to_autodeploy
redirect_to(
url_to_autodeploy_setup(project, branch_name),
- notice: "Branch \"#{sanitize(branch_name)}\" was created. To set up auto deploy, \
- choose a GitLab CI Yaml template and commit your changes. #{view_context.link_to_autodeploy_doc}".html_safe)
+ notice: view_context.autodeploy_flash_notice(branch_name))
else
redirect_to namespace_project_tree_path(@project.namespace, @project,
@branch.name)
@@ -91,4 +89,16 @@ class Projects::BranchesController < Projects::ApplicationController
@project.default_branch || 'master'
end
end
+
+ def url_to_autodeploy_setup(project, branch_name)
+ namespace_project_new_blob_path(
+ project.namespace,
+ project,
+ branch_name,
+ file_name: '.gitlab-ci.yml',
+ commit_message: 'Set up auto deploy',
+ target_branch: branch_name,
+ context: 'autodeploy'
+ )
+ end
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 6684d7c456e..735a355c25a 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -154,6 +154,11 @@ module ProjectsHelper
link_to 'About auto deploy', help_page_path('ci/autodeploy/index'), target: '_blank'
end
+ def autodeploy_flash_notice(branch_name)
+ "Branch <strong>#{truncate(sanitize(branch_name))}</strong> was created. To set up auto deploy, \
+ choose a GitLab CI Yaml template and commit your changes. #{link_to_autodeploy_doc}".html_safe
+ end
+
private
def repo_children_classes(field)
@@ -272,18 +277,6 @@ module ProjectsHelper
)
end
- def url_to_autodeploy_setup(project, branch_name)
- namespace_project_new_blob_path(
- project.namespace,
- project,
- branch_name,
- file_name: '.gitlab-ci.yml',
- commit_message: 'Set up auto deploy',
- target_branch: branch_name,
- context: 'autodeploy'
- )
- end
-
def add_koding_stack_path(project)
namespace_project_new_blob_path(
project.namespace,
diff --git a/changelogs/unreleased/create_branch_repo_less.yml b/changelogs/unreleased/create_branch_repo_less.yml
index 263c6cb78c4..e8b14fa3b67 100644
--- a/changelogs/unreleased/create_branch_repo_less.yml
+++ b/changelogs/unreleased/create_branch_repo_less.yml
@@ -1,4 +1,4 @@
---
-title: Create new branch from issue for repo-less project using new branch button
+title: Creating a new branch from an issue will automatically initialize a repository if one doesn't already exist.
merge_request:
author:
diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb
index 3ab3a0eb3e8..effd8bcd982 100644
--- a/spec/controllers/projects/branches_controller_spec.rb
+++ b/spec/controllers/projects/branches_controller_spec.rb
@@ -116,14 +116,7 @@ describe Projects::BranchesController do
it 'redirects to autodeploy setup page' do
result = { status: :success, branch: double(name: branch) }
- project.create_kubernetes_service(
- active: true,
- properties: {
- namespace: project.path,
- api_url: 'https://kubernetes.example.com',
- token: 'a' * 40,
- }
- )
+ project.services << build(:kubernetes_service)
expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
@@ -135,6 +128,7 @@ describe Projects::BranchesController do
issue_iid: issue.iid
expect(response.location).to include(namespace_project_new_blob_path(project.namespace, project, branch))
+ expect(response).to have_http_status(302)
end
end
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index a14a46c803e..51335bdcf1d 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -2,4 +2,14 @@ FactoryGirl.define do
factory :service do
project factory: :empty_project
end
+
+ factory :kubernetes_service do
+ project factory: :empty_project
+ active true
+ properties({
+ namespace: 'somepath',
+ api_url: 'https://kubernetes.example.com',
+ token: 'a' * 40,
+ })
+ end
end