ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Buck, Robert" <rb...@verisign.com>
Subject RE: Relationship between branches, revisions; integration, and release.
Date Thu, 07 Jun 2007 11:47:13 GMT
Hi Xavier,

I think this might be a matter of definition; I did not provide you a
piece of information.

We do NOT assign version numbers to branches, as a rule; we consider it
bad practice. In theory, the only rules that a branch name must follow
are:

- unique within a single release vehicle (meaning 'ACME' may be used
only once for product foo, but may also be used once by product bar)

- subsequent releases have a name that lexicographically sort AFTER the
former release.

So what we do is, branches are always U.S. town/city names, sequentially
sorted and assigned. For a particular release vehicle, we establish a
gapping policy of 10 town names just in case we need to slip in an
interim release. An example branch name may be:

  BILINGSERVER-ACME

Version numbers, however, are only assigned when a product is released.
And the only place these numbers are referred to is:

- the IVY release repository

- the installation, users guides, operations guides, documentation

- the images directory where the installer is dropped

...

So if I depend upon a branch, it would look something like:

    <dependency name="bsgw" rev="latest.integration"
branch="BILINGSERVER-ACME" conf="default"/>

Since it is only the artifacts in the integration repository that has
the 'status="integration"' flag set, shouldn't it resolve to:

  $ivyrep/integration/verisign/bsgw/BILINGSERVER-ACME/ivys/ivy.xml

Won't this work? Yes/No?

Bob

> -----Original Message-----
> From: Xavier Hanin [mailto:xavier.hanin@gmail.com] 
> Sent: Thursday, June 07, 2007 7:17 AM
> To: ivy-user@incubator.apache.org
> Subject: Re: Relationship between branches, revisions; 
> integration, and release.
> 
> On 6/7/07, Buck, Robert <rbuck@verisign.com> 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]/[mod
> > ul 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:xavier.hanin@gmail.com]
> > > Sent: Thursday, June 07, 2007 3:22 AM
> > > To: ivy-user@incubator.apache.org
> > > Subject: Re: Relationship between branches, revisions; 
> integration, 
> > > and release.
> > >
> > > On 6/6/07, Buck, Robert <rbuck@verisign.com> 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]/[modul
> > > e]
> > > > /[
> > > > revision]/ivys/ivy-[revision].xml"/>
> > > >       <artifact
> > > >
> > > 
> pattern="http://localhost:20080/ivyrep/release/[organisation]/[modul
> > > e]
> > > > /[
> > > > revision]/[type]s/[artifact].[ext]"/>
> > > >       <artifact
> > > >
> > > 
> pattern="http://localhost:20080/ivyrep/release/[organisation]/[modul
> > > e]
> > > > /[ revision]/[type]s/[artifact]-[revision].[ext]"/>
> > > >       <artifact
> > > >
> > > 
> pattern="http://localhost:20080/ivyrep/integration/[organisation]/[m
> > > od
> > > > ul e]/[branch]/[type]s/[artifact].[ext]"/>
> > > >       <artifact
> > > >
> > > 
> pattern="http://localhost:20080/ivyrep/integration/[organisation]/[m
> > > od
> > > > 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/
> 

Mime
View raw message