Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-22284

new field in the "feature branch" creation form, to manage multi-project repository layout

    XMLWordPrintable

Details

    Description

      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.
      Cheers

      Verny

      Attachments

        Issue Links

          Activity

            hugueschabot Hugues Chabot added a comment -

            I understand, it makes a lot of sense to support the "multi project layout with closely related project" too.

            hugueschabot Hugues Chabot added a comment - I understand, it makes a lot of sense to support the "multi project layout with closely related project" too.

            latest proposal of the new branch creation form

            verny Verny Quartara Gutierrez added a comment - latest proposal of the new branch creation form

            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/trunk http://svnserver/branches/<new_branch_name> http://svnserver/tags/dev/<new_branch_name>
            http://svnserver/branches/other http://svnserver/branches/<new_branch_name> http://svnserver/tags/dev/<new_branch_name>
            http://svnserver/trunk/subproject http://svnserver/branches/<new_branch_name>/subproject http://svnserver/tags/dev/<new_branch_name>/subproject
            http://svnserver/branches/other/subproject http://svnserver/branches/<new_branch_name>/subproject http://svnserver/tags/dev/<new_branch_name>/subproject
            http://svnserver/project/trunk http://svnserver/project/branches/<new_branch_name> http://svnserver/project/tags/dev/<new_branch_name>
            http://svnserver/project/branches/other http://svnserver/project/branches/<new_branch_name> http://svnserver/project/tags/dev/<new_branch_name>
            http://svnserver/project/branches/feature/subproject http://svnserver/project/branches/<new_branch_name>/subproject http://svnserver/project/tags/dev/<new_branch_name>/subproject
            http://svnserver/project/trunk/subproject http://svnserver/project/branches/<new_branch_name>/subproject http://svnserver/project/tags/dev/<new_branch_name>/subproject
            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
            verny Verny Quartara Gutierrez added a comment - 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 http://svnserver/branches/subproject/branchname http://svnserver/branches/branchname/subproject 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 http://svnserver/branches/subproject/other 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/trunk http://svnserver/branches/<new_branch_name> http://svnserver/tags/dev/<new_branch_name> http://svnserver/branches/other http://svnserver/branches/<new_branch_name> http://svnserver/tags/dev/<new_branch_name> http://svnserver/trunk/subproject http://svnserver/branches/<new_branch_name>/subproject http://svnserver/tags/dev/<new_branch_name>/subproject http://svnserver/branches/other/subproject http://svnserver/branches/<new_branch_name>/subproject http://svnserver/tags/dev/<new_branch_name>/subproject http://svnserver/project/trunk http://svnserver/project/branches/<new_branch_name> http://svnserver/project/tags/dev/<new_branch_name> http://svnserver/project/branches/other http://svnserver/project/branches/<new_branch_name> http://svnserver/project/tags/dev/<new_branch_name> http://svnserver/project/branches/feature/subproject http://svnserver/project/branches/<new_branch_name>/subproject http://svnserver/project/tags/dev/<new_branch_name>/subproject http://svnserver/project/trunk/subproject http://svnserver/project/branches/<new_branch_name>/subproject http://svnserver/project/tags/dev/<new_branch_name>/subproject 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
            Path:
            .gitignore
            src/main/java/jenkins/plugins/svnmerge/IntegratableProjectAction.java
            src/main/java/jenkins/plugins/svnmerge/RepositoryLayoutEnum.java
            src/main/java/jenkins/plugins/svnmerge/RepositoryLayoutInfo.java
            src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/_attach.groovy
            src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/_attach.properties
            src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/index.groovy
            src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/index.properties
            src/test/java/jenkins/plugins/svnmerge/RepositoryLayoutInfoTest.java
            http://jenkins-ci.org/commit/svnmerge-plugin/6598e037fd58781bbc0c1965e322219cca2c535d
            Log:
            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

            Compare: https://github.com/jenkinsci/svnmerge-plugin/compare/ca285ed64c31...6598e037fd58

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Hugues Chabot Path: .gitignore src/main/java/jenkins/plugins/svnmerge/IntegratableProjectAction.java src/main/java/jenkins/plugins/svnmerge/RepositoryLayoutEnum.java src/main/java/jenkins/plugins/svnmerge/RepositoryLayoutInfo.java src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/_attach.groovy src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/_attach.properties src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/index.groovy src/main/resources/jenkins/plugins/svnmerge/IntegratableProjectAction/index.properties src/test/java/jenkins/plugins/svnmerge/RepositoryLayoutInfoTest.java http://jenkins-ci.org/commit/svnmerge-plugin/6598e037fd58781bbc0c1965e322219cca2c535d Log: 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 Compare: https://github.com/jenkinsci/svnmerge-plugin/compare/ca285ed64c31...6598e037fd58
            alex_ouzounis Alex Ouzounis added a comment -

            related if not duplicate

            alex_ouzounis Alex Ouzounis added a comment - related if not duplicate

            People

              kohsuke Kohsuke Kawaguchi
              verny Verny Quartara Gutierrez
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated: