On 6/7/07, Buck, Robert <[EMAIL PROTECTED]> wrote:
Hi Xavier, It might be that you simply missed it in all that xml code. But on the integration side I thought the branch was handled: <artifact pattern="http://localhost:20080/ivyrep/integration/[organisation]/[modul e]/[branch]/[type]s/[artifact]-[revision].[ext]"/> Or am I missing something?
I saw the branch on the integration side. What I was talking about is the release side. If you configure Ivy like you suggest, when you ask for a latest version, Ivy will try to find it both in your release repo and integration one. So Ivy may take a version in the release repo believing it's more recent than the other one in the integration repo, even if you asked for a particular branch, because your release repo do not have a branch token in the pattern. This may or may not be an issue depending on your release and dependencies policy. Xavier Bob
> -----Original Message----- > From: Xavier Hanin [mailto:[EMAIL PROTECTED] > Sent: Thursday, June 07, 2007 3:22 AM > To: [email protected] > Subject: Re: Relationship between branches, revisions; > integration, and release. > > On 6/6/07, Buck, Robert <[EMAIL PROTECTED]> wrote: > > > > In an earlier thread on "best repository layout" a > suggestion was made > > by Xavier where I should consider how to handle branches, > and also how > > to handle integation and releases. > > > > From what I can determine this comes down to two settings: > > > > A. the status fields in the ivys files in the repository B. the > > [branch] vs [release] attributes in the patterns > > > > Would then it make sense to do something like the following? > > (wondering if I pulled the concepts together correctly). > > > > <?xml version="1.0"?> > > <ivyconf> > > <resolvers> > > <url name="public-resolver"> > > <ivy > > > pattern="http://localhost:20080/ivyrep/release/[organisation]/[module] > > /[ > > revision]/ivys/ivy-[revision].xml"/> > > <artifact > > > pattern="http://localhost:20080/ivyrep/release/[organisation]/[module] > > /[ > > revision]/[type]s/[artifact].[ext]"/> > > <artifact > > > pattern="http://localhost:20080/ivyrep/release/[organisation]/[module] > > /[ revision]/[type]s/[artifact]-[revision].[ext]"/> > > <artifact > > > pattern="http://localhost:20080/ivyrep/integration/[organisation]/[mod > > ul e]/[branch]/[type]s/[artifact].[ext]"/> > > <artifact > > > pattern="http://localhost:20080/ivyrep/integration/[organisation]/[mod > > ul e]/[branch]/[type]s/[artifact]-[revision].[ext]"/> > > </url> > > </resolvers> > > </ivyconf> > > > > Here, nothing is released unless it has a number, otherwise it is > > always on a branch, even if the branch were "mainline". And, we > > partition the ivyrep between release and integration, which > may make > > it easier to manage. > > > > Thoughts? > > > This sounds like a good layout according to your development > rules. If you never release things on a branch it's fine. > There is one thing you should take into account though: the > way you declare your dependencies and how they evolve over > time. When you depend on a branch in integration, you will > have something like this: > <dependency org="acme" name="foo" branch="bar" > rev="latest.integration"/> > > The problem you might have is that if you have release which > is yougest than the integration version on branch 'bar', Ivy > will pick it up, because you have no branch information in > your release repository. Thus having a [branch] token in your > release layout could make sense, even if the value is always > 'mainline' for instance. This would let Ivy know that release > can only be used when the branch is 'mainline'. > > Xavier > > Thanks in advance, > > > > Bob > > > > > > -- > Xavier Hanin - Independent Java Consultant Manage your > dependencies with Ivy! > http://incubator.apache.org/ivy/ >
-- Xavier Hanin - Independent Java Consultant Manage your dependencies with Ivy! http://incubator.apache.org/ivy/
