diff options
-rw-r--r-- | app/controllers/projects/branches_controller.rb | 20 | ||||
-rw-r--r-- | app/helpers/projects_helper.rb | 17 | ||||
-rw-r--r-- | changelogs/unreleased/create_branch_repo_less.yml | 2 | ||||
-rw-r--r-- | spec/controllers/projects/branches_controller_spec.rb | 10 | ||||
-rw-r--r-- | spec/factories/services.rb | 10 |
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 |