We want to venture in the the world of branching.
We have many products that have dependencies on each other.
If we branch our code, we need a way to identify which artifact is from the branch(es) vs trunk. These branches would be merged back to trunk at some point inside of a full release.
What I was thinking of is having the branched code simply change the module name to reflect the branch:
trunk:
group: 'com.myco, name: 'db-tools-jdbc', version: 'latest.milestone'
"nirvana" branch:
group: 'com.myco, name: 'db-tools-jdbc=>nirvana', version: 'latest.milestone'
This way we can easily identify the artifacts as branches in the dependency lists and browsing artifactory and any consumers could opt to consume the branched artifacts if they wish by changing the module dependency name. And we still get the advantages of using snapshots and milestones.
A co-worker thinks this is a mis-use of the module name and should be handled via version numbers. I’m ok with this if we could make the version number obvious that it’s a branch. So somehow declare the version dependency like
"nirvana" branch:
group: 'com.myco, name: 'db-tools-jdbc', version: 'latest.milestone=>nirvana'
Here is a link to the ivy documentation on version strategies, but I’m not sure if we can make this work:
http://ant.apache.org/ivy/history/trunk/settings/latest-strategies.html
any thoughts are appreciated.