Commit 839829a7 authored by Tiago Botelho's avatar Tiago Botelho

Adds documentation for the feature

parent dc229c07
...@@ -33,5 +33,43 @@ ...@@ -33,5 +33,43 @@
1. Click **Create project**. 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 [import it]: ../workflow/importing/README.md
[reserved]: ../user/reserved_names.md [reserved]: ../user/reserved_names.md
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# class return an instance of `GitlabAccessStatus` # class return an instance of `GitlabAccessStatus`
module Gitlab module Gitlab
class GitAccess class GitAccess
include Gitlab::Utils::StrongMemoize
UnauthorizedError = Class.new(StandardError) UnauthorizedError = Class.new(StandardError)
NotFoundError = Class.new(StandardError) NotFoundError = Class.new(StandardError)
ProjectCreationError = Class.new(StandardError) ProjectCreationError = Class.new(StandardError)
...@@ -239,10 +241,12 @@ module Gitlab ...@@ -239,10 +241,12 @@ module Gitlab
end end
def can_create_project_in_namespace?(cmd) def can_create_project_in_namespace?(cmd)
strong_memoize(:can_create_project_in_namespace) do
return false unless push?(cmd) && target_namespace && project.blank? return false unless push?(cmd) && target_namespace && project.blank?
user.can?(:create_projects, target_namespace) user.can?(:create_projects, target_namespace)
end end
end
def http? def http?
protocol == 'http' protocol == 'http'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment