Maven SCM
  1. Maven SCM
  2. SCM-288

Improved support for SCM providers like ClearCase that do NOT check out directly into the check-out-dir but into sub-directories of the check-out-dir

    Details

    • Complexity:
      Intermediate
    • Number of attachments :
      2

      Description

      As discussed on http://www.nabble.com/Towards-full-ClearCase-integration-tf3433039.html

      PROBLEM:

      The ClearCase implementation of the checkout command for ClearCase creates a ClearCase snapshot view. Such a snaphsot view is very similiar to a CVS or Subversion checkout directory, but one major difference is the directory structure. To make it clear, consider the following example:

      Consider you have checked out the project MY_VOB/my/project to d:\continuum-work\167:

      • When working with CVS or SVN, you would find the POM file at d:\continuum-work\167\pom.xml.
      • With ClearCase, the location would be d:\continuum-work\167\MY_VOB\my\project\pom.xml. This means that the directory structure within the configuration management system, is repeated in every view (checkout directory). AFAIK it is not possible to change this ClearCase behaviour.

      This leads to the following problems:

      • After adding a project to Continuum, the build cannot be performed because the POM file cannot be found. The build definition has to be changed manually, so that the POM file location is e.g. "MY_VOB/my/project/pom.xml" instead of "pom.xml".
      • The maven-release-manager performs a clean checkout from a tag to the target/checkout directory, and then runs the build in that checkout directory. Same problem here, it would have to be run in e.g. "target/checkout/MY_VOB/my/project" instead of just "target/checkout".

      SOLUTION:

      The solution is to add an attribute to CheckOutScmResult that contains the path of the project directory relative to the checkout directory. By default, and for most SCM providers, it is just "". But the ClearCaseCheckOutCommand sets e.g. "MY_VOB/my/project" instead. (Notice that this is only be possible with auto-generated config specs as introduced by SCM-287).

      PATCH:

      The attached maven-scm-patch.txt contains a patch to maven-scm-api, maven-scm-provider-clearcase and the BootstrapMojo in maven-scm-plugin. I tested it by trying scm:bootstrap for ClearCase (works now) and SVN (still works).

      After applying the patch, please deploy a new maven-scm snapshot version to the Apache Snapshot repo as well.

      Continuum and the maven-release-manager will have to be changed to pay attention to this relative path attribute accordingly; I will try to submit patches in the next days, at least for maven-release-manager. Should these patches be part of this issue, or should separate issues be created for these projects?

      1. patch-maven-scm.txt
        8 kB
        Arne Degenring
      2. patch-maven-scm-2.txt
        17 kB
        Arne Degenring

        Issue Links

          Activity

          Hide
          Emmanuel Venisse added a comment -

          Your patch seems to be good, I'll look at it in detail later.
          Can you add some tests about it?

          About patches for continuum and maven-release-plugin, file separated issues in projects and link them th this issue.

          Show
          Emmanuel Venisse added a comment - Your patch seems to be good, I'll look at it in detail later. Can you add some tests about it? About patches for continuum and maven-release-plugin, file separated issues in projects and link them th this issue.
          Hide
          Arne Degenring added a comment -

          I have attached an updated patch (patch-maven-scm-2.txt) that contains a new test case for BootstrapMojo, along with some minor refactorings for improved testability.

          Show
          Arne Degenring added a comment - I have attached an updated patch (patch-maven-scm-2.txt) that contains a new test case for BootstrapMojo, along with some minor refactorings for improved testability.
          Arne Degenring made changes -
          Field Original Value New Value
          Attachment patch-maven-scm-2.txt [ 26399 ]
          Hide
          Emmanuel Venisse added a comment -

          Applied, thanks.
          I think this patch will be very useful when release plugin and continuum will be patched too

          Show
          Emmanuel Venisse added a comment - Applied, thanks. I think this patch will be very useful when release plugin and continuum will be patched too
          Emmanuel Venisse made changes -
          Status Open [ 1 ] Closed [ 6 ]
          Resolution Fixed [ 1 ]
          Assignee Emmanuel Venisse [ evenisse ]
          Fix Version/s 1.0 [ 13066 ]
          Arne Degenring made changes -
          Link This issue is depended upon by MRELEASE-208 [ MRELEASE-208 ]
          Arne Degenring made changes -
          Link This issue is related to MRELEASE-208 [ MRELEASE-208 ]
          Hide
          Arne Degenring added a comment -

          A patch for the maven-release-manager has been submitted in MRELEASE-208

          Show
          Arne Degenring added a comment - A patch for the maven-release-manager has been submitted in MRELEASE-208
          Arne Degenring made changes -
          Link This issue is depended upon by CONTINUUM-1218 [ CONTINUUM-1218 ]
          Hide
          Arne Degenring added a comment -

          I filed an issue for Continuum as well: CONTINUUM-1218

          Show
          Arne Degenring added a comment - I filed an issue for Continuum as well: CONTINUUM-1218
          Arne Degenring made changes -
          Link This issue is related to CONTINUUM-1218 [ CONTINUUM-1218 ]
          Arne Degenring made changes -
          Link This issue relates to SCM-290 [ SCM-290 ]

            People

            • Assignee:
              Emmanuel Venisse
              Reporter:
              Arne Degenring
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: