I'm preparing the Cargo 0.9 and Maven plugin 0.3 releases and I'd like to do them using the Maven2 release plugin. However before we're able to use it we need to clean up our structure. Indeed we need to have a separate directory tree per release cycle. As of today we have 2 release cycles: one for Cargo core (v0.9) and one for the Cargo Maven2 plugin (v0.3). We're doing something messy in mixing the branches/tags for both in the same location. I think we need to bite the bullet and make it right.
Here's the new structure I'm proposing:
pom/ (version starts at 1)
core/ (version continues as 0.9, 1.0, etc)
|_ ant (includes functional tests) (version continues as 0.9, 1.0, etc)
|_ maven (includes functional tests) (version continues as 0.9, 1.0, etc)
|_ maven2 (includes functional tests) (version continues as 0.3, 1.0, etc)
pom.xml (top level pom just to build all the modules, depends on pom/trunk/pom.xml)
Release process (in that order):
* Release pom/ from time to time (whenever a release is required for core/ or extensions/)
* Release core/ in one go (mvn release:prepare from core/trunk/ dir)
* Release extensions/* separately for each extension (mvn release:prepare from each subdir: ant/, maven/, maven2/)
In addition I'll create a svn:external called trunks to get the full directory structure above in one checkout.
Note 1: In extensions/tags we will have the tags for the different modules. For example: ant-0.9, maven2-0.3, etc. We could have a different trunk/tags/branches for each extension but it sounds too cumbersome and not needed.
Note 2: In the future I think we could have a top level containers/ directory too but I don't think we're ripe for this now so I'd rather do it in 2 steps and start easy.