ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Davis <james.da...@atsid.com>
Subject RE: Please vote: changing the default conflict manager
Date Thu, 23 Sep 2010 16:01:13 GMT
Ok, I see what you are talking about.

Resolving X on its own should yield a Y rev 2.0, however if you do a resolve on A Y rev 1.0
should be pulled instead (because A is 1.0 explicitly).

Yes, I agree with the confusion point on that.  Additionally if there were non-backwards compatible
changes from Y 1.0 to 2.0, then the build would break at this point.

James Davis * QA Engineer II/Software Engineer
Applied Technical Systems, Inc. * Information Engineering
web: www.atsid.com * e-mail: james.davis@atsid.com
(p) 360.698.7100 x241 * (f) 360.698.7200


-----Original Message-----
From: archie.cobbs@gmail.com [mailto:archie.cobbs@gmail.com] On Behalf Of Archie Cobbs
Sent: Thursday, September 23, 2010 8:57 AM
To: ivy-user@ant.apache.org
Subject: Re: Please vote: changing the default conflict manager

You're right that the dependency from X -> Y says rev="[1.0,)" butt he
dependency from A -> Y says rev="1.0". Since we're talking about resolving
A, I would expect "1.0" to be the right choice since it satisfies A's
constraint, not "2.0", which does not.

-Archie

On Thu, Sep 23, 2010 at 10:32 AM, James Davis <james.davis@atsid.com> wrote:

> To me, the current default behavior makes sense.  The dependency for X is
> listed as 1.0 (inclusive) or newer, not 1.0 explicitly.  I myself would find
> it confusing and surprising if it resolved to 1.0 if 2.0 was available.
>
> James Davis * QA Engineer II/Software Engineer
> Applied Technical Systems, Inc. * Information Engineering
> web: www.atsid.com * e-mail: james.davis@atsid.com
> (p) 360.698.7100 x241 * (f) 360.698.7200
>
> -----Original Message-----
> From: archie.cobbs@gmail.com [mailto:archie.cobbs@gmail.com] On Behalf Of
> Archie Cobbs
> Sent: Thursday, September 23, 2010 8:04 AM
> To: Ivy Users
> Subject: Please vote: changing the default conflict manager
>
> In my opinion, the default behavior of ivy is very non-intuitive and
> violates POLA <
> http://en.wikipedia.org/wiki/Principle_of_least_astonishment>
> .
>
> I'm referring specifically to the default conflict manager being
> "latest-revision" instead of "latest-compatible".
>
> For a concrete example of what this means, suppose we have modules A, X and
> Y with these dependencies:
>
> A:
>
>  <dependency name="X" rev="3.0"/>
>  <dependency name="Y" rev="1.0"/>
>
> X:
>
>  <dependency name="Y" rev="[1.0,)"/>
>
> Y:
>
>  No dependencies
>
> Now suppose we resolve A. If only version 1.0 of Y exists, then ivy will
> choose Y=1.0 and everything is fine. Now suppose a few months later version
> 2.0 of Y is released and added to the repository. The next time A is
> resolved, ivy will choose version Y=2.0... even though the dependency in
> module A specifically states rev="1.0" for Y.
>
> To me this seems completely insane... at least for being the
> *default*behavior of ivy.
>
> However, this is just my opinion... and fixing it would mean changing ivy's
> default behavior in a backward-incompatible manner, by changing the default
> conflict manager from "latest-revision" to "latest-compatible".
>
> So the question is: would you support this change, or would it be too
> disruptive (or you just don't like it, etc.)?
>
> Thanks,
> -Archie
>
> --
> Archie L. Cobbs
>



-- 
Archie L. Cobbs

Mime
View raw message