Edit default path and project name when forking
Problem to solve
When forking a project into a namespace, the fork name cannot be changed. If for example user wants to create a second, private fork of an already forked project, this is not possible via the GUI. API allows for this customization, but the same workflow cannot be achieved via the GUI.
Provide a mechanism to change the initial name of a fork before the fork operations is performed. If the chosen name exists in the target namespace then disallow forking (existing behavior).
Example: as a regular contributor to an open source project like
gitlab-org/gitlab-ce, I have a public fork
john/gitlab-ce from which I contribute improvements. Sometimes I want to work from a private fork
john/private-ce when I need to fix a security issue and I can't work on it publicly. Or I might just be nervous about having my really bad WIP branches being public.
Currently this is possible using the API, or via an inconvenient workflow involving forking to a group, renaming and moving to my own namespace.
Streamlining the security release process for public projects is the primary motivation for making this easy. A developer who is going to resolve a confidential security issue, needs to be able to create a branch in a private fork. If a public fork already exists, this workflow is obstructed.
Another common use case is a template project that I want to create forks from, so that I can merge changes between projects since they are related.
There are existing QA tests that will be updated: gitlab-org/quality/testcases#1719 (moved)
Links / references
Description: Forking a project allows you to have an exact copy of an original repository where you can experiment, apply changes, and submit contributions to the parent project. When forking it's useful to provide forks a meaningful name that indicates the effort or goal related to it. Additionally, having multiple copies of a fork allows you to maintain diverging projects.
This release introduces the option to edit the project name and project slug when forking, as well as the possibility of having multiple forks of the same project, allowing for different names and different forks in a single namespace.