Status: In Progress (View Workflow)
When creating a new feature branch, the current version asks the user for the branch name and an optional commit message.
In the case of a single-project repository layout, that works just fine: a new branch is created under "/branches" using the provided name, and the source code is copied directly into the new branch; besides, a new job is created with a name composed by concatenating the original job name with the name of the new branch.
In case of a multi-project repository layout (http://svnbook.red-bean.com/en/1.0/ch05s04.html), the location of the new branch must be composed by concatenating the branch name and the sub-project name. This can be achieved using a simple workaround: specifing the complete location of the new branch in the "branch name" input field, e.g. "mynewbranch/projX". This approach is error prone and one drawback is the name of the new job which results in a long and possibly non-intuitive name that must be changed manually. (e.g. "projX-mynewbranch-projX")
In addition, since we've adopted a development process that forbids direct development in trunk, we need to tag the trunk version when creating a new branch, to track back the state of the trunk in the moment the new branch is created. In particular, we have a tags/dev folder in our repo for that kind of tags, and a tags/rel folder for the effective released versions.
To address the needs of this scenario, I suggest to implement more fields in the "new feature branch creation" page, to give the user the means to control the newly created job in a more fine-grained way, including the opportunity to create a tag while creating the branch.
Let me know if this feature can be useful for the community, I'm going on with the analysis to provide a more concrete proposal.
I'm available to take in charge the development.
- is blocking
JENKINS-15830 Error: Unable to infer the new branch name from XXX
- is related to
JENKINS-15615 Feature Branch does not copy all modules
Updated the screenshot of my proposal.
The use of regular expressions simplifies the repository layout detection (based on the upstream svn url) and in most cases can detect automatically the new branch location, without the need to manually provide the subproject name (if any). When the repository layout does not follows standard conventions, as mentioned in JENKINS-15830, the user is needed to manually provide the new branch url.
In conclusion, I changed my initial idea and now I believe that doing a little bit more advanced use of regex we can support a good range of repository layouts, substantially resolving the other mentioned issue as well.
It's important to point that using regex these urls
cannot be distinguished, so we have to assume a convention for the multi layout case.
I assumed the branch name always follows the "branches" folder, so for example for the following upstream svn url
the default new branch location will be: http://svnserver/branches/<new_branch_name>/other/
Here is the complete list of the different upstream URL supported:
|Upstream SVN URL||Branch SVN URL (default)||Tag SVN URL (default, optional)|
|http://svnserver.com/FolderTrunk/Folder2/Folder3/Folder4/ProjectName||unable to infer, user must provide the url||unable to infer, user must provide the url|
|http://svnserver.com/FolderBranches/Folder2/A/B/C/FeatureBranch||unable to infer, user must provide the url||unable to infer, user must provide the url|
Code changed in jenkins
User: Hugues Chabot
Merge pull request #13 from hugueschabot/jenkins-22284
[FIXED JENKINS-22284] Improve branch creation
[FIXED JENKINS-15830] Error: Unable to infer the new branch name from XXX
I understand, it makes a lot of sense to support the "multi project layout with closely related project" too.