commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Fabulich <>
Subject Re: AW: AW: [releasing] SVN Tag creeated by maven
Date Wed, 13 May 2009 23:17:41 GMT
Mark Struberg wrote:

> You are right, but maybe we mix up two things:
> a) In almost all other SCMs (except SVN) a tag is a 'reference' to a 
> specific version. In SVN it's a copy (virtually a readonly branch) so 
> you cannot have multiple tags on the same revision. -> the rettagging 
> isn't valid because it's _not_ physically the same.

This is a philosophical question of source code identity.  Is a copy of 
source code "the same" as the original?  What about a symlink?  SVN copies 
are "lightweight;" they're more like symlinks than true copies.  Questions 
like these have no right answer IMO.

> b) for SVN it's imho perfectly ok to delete a copy which is erronous, 
> because you don't touch trunk here. So a RC which never got deployed to 
> another area than staging may imho safely be deleted/rollbacked.

It's not "unsafe" to delete/recreate a tag, but it does violate the 
convention that tags are read-only copies.  It's certainly not ideal.

> Maybe a mixed scenario would work. Doing development, calling a 
> X-RC-[1-n] if all is ok, do a X release:prepare release:stage, call a 
> vote on that stage, if it passes do a release:perform. That should 
> combine the best parts of both processes, wdyt?

We can't do it quite like that, because release:perform creates a new 
binary; we have to vote on the final binary.  Typically Apache projects 
who use release:stage use it *instead* of release:perform.

(The way we use it, release:perform is run with a -Prc profile, so it 
basically is release:stage for all intents and purposes.)

But let's suppose we did what you said, except don't do the final 
release:perform, just release:prepare, then release:stage, vote, and then 
manually release the staged RC (perhaps using maven-stage-plugin).

Even then, the tag riddle is in release:prepare.  release:prepare is the 
one that creates the tag, unfortunately.  If you need to do multiple RCs, 
you have to run release:prepare multiple times, and that means 
deleting/recreating the tag every time like we do today.

If you think deleting/recreating the tag is totally fine, then this won't 
bother you; we'll just stick with the release process we have today.

But if it bothers you that our tags are mutable, then you'll yearn for 
some better solution; arguably, Maven is unwilling/unable to provide that 
solution right now.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message