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]/[modul
e]/[branch]/[type]s/[artifact].[ext]"/>
<artifact
pattern="http://localhost:20080/ivyrep/integration/[organisation]/[modul
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/