3 Replies Latest reply on Mar 9, 2005 4:59 PM by gozilla

    'cvsroot' at Component Level and using URLs instead.

      As I'm working on a template project using the new build, I think it would be better if we removed the 'cvsroot' attribute and replaced 'version' and 'module' with a URL containing all three. We should place that URL at the component level rather than the build level.

      So instead of:

      <build id="jbossas"
       ...
       cvsroot="cvs.sourceforge.net:/cvsroot/jboss"
       ...
       <component id="common"
       ...
       module="jboss-common"
       version="5.0-SNAPSHOT"
       </component>
      </build>
      


      You'd have something like:

      <build id="jbossas"
       ...
       <component id="common"
       ...
       versionURL="cvs:/cvs.sourceforge.net:/cvsroot/jboss:jboss-common:5.0-SNAPSHOT"
       ...
       </component>
      </build>
      


      This will allow:

      1. Allow individual components to be sourced from different repositories
      2. Allow the integration of different types of repositories (other VCSs)


      I understand the URL syntax is arbitrary at this point, but you get the idea. For example, to use svn:

      <build id="jbossas"
       ...
       <component id="common"
       ...
       versionURL="svn+ssh://user@svn.jboss.org/jboss/jems/common"
       ...
       </component>
      </build>
      


      We'd have to put some smart into the cvs url parsing as it isn't standard. But, we can make do.

        • 1. Re: 'cvsroot' at Component Level and using URLs instead.

          You are correct that we need to move repository information to the component level. However, it needs to be removed from the toplevel build entirely. Instead, all we should have at the toplevel is the component version. This is used to find the componentdef in the build repository. This build.xml will contain the repository information for the component.

          I don't think subversion support necessitates emulating subversion URL's for CVS. We can just have a subversionURL attribute which is used instead of cvsRoot and module. Not only is this easier to implement, it will be easier for component developers to understand, rather than our own CVS URL.

          • 2. Re: 'cvsroot' at Component Level and using URLs instead.

            I'm thinking a component version doesn't necessarily have to come from a VCS. But, it can be say: "ftp://repo.jboss.com/pub/jboss/common"

            Hence, the URL. But, yeah, separating them will make it easier. Maybe just have the option of specifying a type and a locationURI, and then parameters (i.e., user, module if it has one).

            • 3. Re: 'cvsroot' at Component Level and using URLs instead.
              gozilla

              Ryan,

              Yep, it might be easier for the first two type of repos, but it will rapidly become a maintenance nightmare.

              I like the idea of exporting the repository access to some external component(s), opening the way to a pluggeable implementation.

              Gozilla