On 7/2/07, Barrett Snyder <[EMAIL PROTECTED]> wrote:

I am using Ivy on a source base which has multiple projects/branches going
at the same time. Almost every branch has dependencies on a core framework
which we usually include  in each project branch since the framework is
still in flux and changes with each project. We declare a branch attribute
for the dependency tag of each module in the framework. The problem comes
in
when we merge branches or back to HEAD because we then manually need to go
through and change each branch attribute. Is there an easy way to somewhat
automate this?

We are using Ant to do builds for releases and automated (CruiseControl)
builds while Eclipse (with IvyDE) handles building in our development
environments, so the solution needs to be compatible with both
environments.
Hence, Ant token replacement doesn't get us there.

I have pondered specifying a property in our ivyconf.xml called "
branch.name"
and importing this property from a file which could exist on each branch.
Then I could use this property on the module tag as the default branch.
This
would allow us to only specify branch attributes in exception cases where
the dependency is on a different branch and not the same branch you are
working on. This works for about 75% of the cases, but another problem
arises when you are working with projects with inter-branch dependencies
because this property then needs to be project specific and not globally
specified.

Has anybody working with Ivy and cross branch development come up with an
elegant solution to this problem, or do you just live with manually
updating
branch attributes every time you merge?


The case is interesting, it's not easy to solve depending on your
environment, and how frequently people work on different branches. One thing
which might work is to use property file to store branch "profiles". You
would use property like [module].branch.name (eg foo.branch.name) to name
the branches on which is module is living in this profile. You can either
define all your module branches in one file, or split them in several files,
depending on the way branches are used. Then switching from one profile to
another only requires including appropriate file(s) in your
ivyconf.xml(settings in
2.x). But it will only work if you can imagine such branch profiles. If
every module evolve independently, you will have to fallback to independent
branch attribute values.

HTH,

Xavier

Thanks!




--
Xavier Hanin - Independent Java Consultant
Creator of Ivy, xooki and xoocode.org
More about me: http://xhab.blogspot.com/

Reply via email to