diff options
author | Tiago Botelho <tiagonbotelho@hotmail.com> | 2018-01-31 13:52:46 +0000 |
---|---|---|
committer | Tiago Botelho <tiagonbotelho@hotmail.com> | 2018-01-31 23:47:22 +0000 |
commit | fb8fed954cf4b97f76316f8b160069f1fcf03d92 (patch) | |
tree | 467791eccfcacf1067fd29c8d8d2542c139a5f40 | |
parent | b533c3604963950b87a236c6141b3715d3e09498 (diff) | |
download | gitlab-ce-fb8fed954cf4b97f76316f8b160069f1fcf03d92.tar.gz |
Adds documentation for the feature
-rw-r--r-- | doc/gitlab-basics/create-project.md | 38 | ||||
-rw-r--r-- | lib/gitlab/git_access.rb | 8 |
2 files changed, 44 insertions, 2 deletions
diff --git a/doc/gitlab-basics/create-project.md b/doc/gitlab-basics/create-project.md index e18711f3392..d491d676884 100644 --- a/doc/gitlab-basics/create-project.md +++ b/doc/gitlab-basics/create-project.md @@ -33,5 +33,43 @@ 1. Click **Create project**. +## Push to create a new project + +> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/26388) in GitLab 10.5. + +When you create a new repo locally, instead of going to GitLab to manually +create a new project and then push the repo, you can directly push it to +GitLab to create the new project, all without leaving your terminal. That +will automatically create a new project under a GitLab namespace that you have access to +with its visibility set to private by default (you can later change it). + +This can be done by using either SSH or HTTP: + +``` +## Git push using SSH +git push git@gitlab.com:namespace/nonexistent-project.git branch_name + +## Git push using HTTP +git push https://gitlab.com/namespace/nonexistent-project.git branch_name +``` + +Once the push finishes successfully, a remote message will indicate +the command to set the remote and the URL to the new project: + +``` +remote: +remote: The private project namespace/nonexistent-project was created. +remote: +remote: To configure the remote, run: +remote: git remote add origin https://gitlab.com/namespace/nonexistent-project.git +remote: +remote: To view the project, visit: +remote: https://gitlab.com/namespace/nonexistent-project +remote: +``` + +If the project name is already in use, your push will be rejected +to prevent accidental overwriting the existing project. + [import it]: ../workflow/importing/README.md [reserved]: ../user/reserved_names.md diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb index 3d07e112e2b..84299dd5790 100644 --- a/lib/gitlab/git_access.rb +++ b/lib/gitlab/git_access.rb @@ -2,6 +2,8 @@ # class return an instance of `GitlabAccessStatus` module Gitlab class GitAccess + include Gitlab::Utils::StrongMemoize + UnauthorizedError = Class.new(StandardError) NotFoundError = Class.new(StandardError) ProjectCreationError = Class.new(StandardError) @@ -239,9 +241,11 @@ module Gitlab end def can_create_project_in_namespace?(cmd) - return false unless push?(cmd) && target_namespace && project.blank? + strong_memoize(:can_create_project_in_namespace) do + return false unless push?(cmd) && target_namespace && project.blank? - user.can?(:create_projects, target_namespace) + user.can?(:create_projects, target_namespace) + end end def http? |