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.da...@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.da...@atsid.com > (p) 360.698.7100 x241 * (f) 360.698.7200 > > -----Original Message----- > From: archie.co...@gmail.com [mailto:archie.co...@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