On May 13, 2009, at 10:41 AM, David Jencks wrote:

Sorry I wasn't more specific last night at 2:00 am :-). I need more scm context to understand. I'm assuming something like svn with

+tags
 +root-1.0 (1.0)
   +A(1.0)
   \B(1.0)
 +root-1.1 (1.1)
   +A(1.0)
   \B(1.1)
 \root-1.2 (1.1)
   +A(1.0)
   \B(1.2)
\trunk
 \root(1.2-SNAPSHOT)
   +A(???? 1.0? 1.0-SNAPSHOT?? 1.1-SNAPSHOT???)
   \B(1.3-SNAPSHOT)

I have several assumptions about releasing stuff...

Your assumptions are not completely correct.
a) In our case a release is aways off a branch. This isn't particularly relevant to the discussion but it does make production maintenance easier so I'll ignore it. b) tagging doesn't create a copy of anything. It just is a label that is a shortcut to a revision on a branch. Multiple tags that point to the same revision are not a problem and don't incur much overhead.

So the tree really looks like:

+tags
  +root-1.0 (trunk revision 1)
    +A(1.0)
    +B(1.0)
  +root-1.1 (trunk revision 2)
    +A(1.0)
    +B(1.1)
  +root-1.2 (trunk revision 3)
    +A(1.0)
    +B(1.2)
/trunk at revision 4
  +root(1.2-SNAPSHOT)
    +A(1.0)
    +B(1.3-SNAPSHOT)

This assumes that A has not been modified since its initial release and B is currently under development and has not been released.



- development will continue after the release
- therefore the version in "trunk" must be incremented so it's clear that snapshots are later than the release
- tags should not contain anything with a snapshot version
- releasing will create a tag of what's been released
- tagging for release creates a copy of an entire svn subtree, not a copy with stuff removed.
See above. While the tag applies to the whole subtree, no copy is made.


I see several problems with the svn tree I sketched above:
- there are 3 or 4 copies of A claiming to be version 1.0
No. There are multiple tags that all point to the same subversion revision. This is not a problem.

- there is no plausible version for trunk/root/A
? If A has not been changed its version is still 1.0. If it has then it is 1.1-SNAPSHOT.

- in tags, the version of root doesn't match the end of the directory name. (there are 2 version 1.1 roots)
Why would you allow a branch that matches a tag? If I was going to allow a branch to be created named root-1.2 then I would require that all tags be named root-1.2.n. If I did that then I would have

+tags
  +root-1.0.0 (trunk revision 1)
    +A(1.0.0)
    +B(1.0.0)
  +root-1.1.0 (trunk revision 2)
    +A(1.0.0)
    +B(1.1.0)
  +root-1.2.0 (root-1.2 revision 3)
    +A(1.0.0)
    +B(1.2.0)
/root-1.0 (branched from trunk at revision 1)
  +A(1.0.0)
  +B(1.0.0)
/root-1.1 (branched from trunk at revision 2)
  +A(1.0.0)
  +B(1.1.0)
/root-1.2 (branched from trunk at revision 3)
  +A(1.0.0)
  +B(1.2.0)
/trunk at revision 4
  +root(1.2-SNAPSHOT)
    +A(1.0)
    +B(1.3-SNAPSHOT)


I must not be understanding something basic about what you are proposing.... I'm probably beating a long-dead horse but could you please be even more specific about what scm operations you want to have as part of a release and what the scm repo looks like afterwards?
I'm not proposing anything. I'm just explaining what this particular project has been doing for the last 5 years and why Maven 2 is a PITA in this regard. Maven 1 was actually easier for this particular project.

Ralph


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to