Ralph Goers schrieb:
> On May 13, 2009, at 5:09 PM, Christian Schulte wrote:
> 
>> Ralph Goers schrieb:
>>> 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.
>>>
>> What stops a developer from making changes to A(1.0) on trunk,
>> rebuilding locally - that is - overwriting release artifacts with
>> something different in the local repository, and then later on even
>> commit those changes forgetting to increase the version to a  
>> snapshot ?
>> Discipline ?
>>
> 
> Actually, this isn't at all the way we do releases. This was my  
> response to David's hypothetical scenario which didn't make any sense  
> to me. All I did was clean it up.
> 
> What we actually do looks more like:
> 
> +tags
>    +library-1.0.0 (on branch-library-1.0) pom version is 1.0.0
>      +A(1.0.0)
>      +B(1.0.0)
>      +C(1.0.0)
>    +library-1.0.1 (on branch-library-1.0) pom version is 1.0.1
>      +A(1.0.0)
>      +B(1.0.1)
>      +C(1.0.0)
>    +library-1.1.0 (on branch-library-1.1) pom version is 1.1.0
>      +A(1.0.0)
>      +B(1.1.0)
>      +C(1.1.0)
> +branches
>    +branch-library-1.0 (pom is still 1.0.1 - no work in progress on  
> branch)
>      +A(1.0.0)
>      +B(1.0.0)
>      +C(1.0.0)
>    +branch-library-1.1 (pom is 1.1.0-SNAPSHOT) (work in progress)
>      +A(1.0.0)
>      +B(1.1.0)
>      +C(1.1.1-SNAPSHOT)
> /trunk (library-1.2-SNAPSHOT) (Work in progress)
>    +A(1.1.0-SNAPSHOT) (new work)
>    +B(1.1.0)
>    +C(1.2.0-SNAPSHOT) (work from branch-library-1.1 has been merged)
> 
> The point here is not to debate the "right" or "wrong" way to manage  
> projects. It is what it is and it accomplishes our goals. The issue is  
> that the release plugin (at least the last time I reviewed it)  
> mandates that there is only one right way to do a release. As the  
> debate on Legal discuss last week shows this isn't necessarily the  
> case. I would suggest that the release plugin almost needs a lifecycle  
> of its own where the actual work is accomplished through plugins. If  
> things have changed significantly let me know and I'd be happy to look  
> at it again.
> 
> Ralph
>   

Some developers of the release-manager can better answer this. The
release manager uses its own phases internally, I think.

<http://svn.apache.org/viewvc/maven/release/tags/maven-release-2.0-beta-9/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/>

Hooking something in there may already be possible easily but I don't
know for sure.

My question may have sounded rhetorically but I really meant that. You
could of course manage commit rights with subversion so that whenever
someone mistakenly would try to commit to that release version on trunk,
subversion could simply disallow that. So a developer would at least
have to ask someone for permission to do so. I just don't get the point
for what all this additional effort is good for. Really only to not
release artifacts whose code did not change ? As I see it, that only
introduces additional complexity without any advantage. Indeed it
introduces some disadvantages every developer must be made aware of and
you cannot use quite well working maven tooling that way. Not because
this tooling behaves wrong, IMHO. The same applies to automatically
discovering the parent pom. That's constantly changing artifacts without
anyone noticing it, somehow. At least in all local repositories. It does
not matter if there are any code changes. Changing poms is the same as
changing code, IMHO. I would just say that it takes less than a week
until every developer has its own releases in the local repository and
noticing that is really not that easy. For me such setup would not work
at all since the CI server not only builds artifacts whenever someone
committed something, but forcibly runs builds every few days or so. So
for me that would just mean that the CI server would constantly deploy
differing release artifacts. Even worse, those release artifacts contain
a reference to a snapshot parent pom which introduces additional
problems. Non-reproducible.

Don't get me wrong. I still think you have really good reasons for doing
 things the way they are done. I just don't get it. I don't even see a
single advantage but a lot of disadvantages. I am not saying that there
may not be any advantages.

-- 
Christian

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

Reply via email to