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:[EMAIL PROTECTED]
> Sent: Thursday, June 07, 2007 7:17 AM
> To: [email protected]
> Subject: Re: Relationship between branches, revisions;
> integration, and release.
>
> 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]/[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:[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]/[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/
>