|
Re: Centrally controlling component versions [message #379853 is a reply to message #379851] |
Thu, 28 August 2008 19:59 |
|
Hi Roland,
Buckminster can infer the version from a branch or a tag using what is called a
versionConverter. A versionConverter is declared in a provider element of the RMAP and
it's task is to transform a branch name or a tag into a valid version and vice versa.
See:
http://wiki.eclipse.org/Buckminster_component_meta-data_lang uage_1.0_(Reference)#VersionConverter_component
for more info.
Kind Regards,
Thomas Hallgren
Roland Tepp wrote:
> I am trying to manage component dependencies and materialization using
> Buckminster and while I was declaring dependencies on a component, I
> notices that I was continuously copying the same version information to
> CSPEC version and and dependency (versionDesignator) nodes.
>
> That prompted me to wonder how the version information is meant to be
> used/handled by Buckminster.
>
> If I have to specify version information of all dependencies in all
> CSPECs, wouldn't it become rather troublesome to manage later on, when
> the whole project moves to new new branch/version.
>
> I would have to remember to (manually) change the version number of the
> component and all of the dependency declarations of the dependent
> components?
>
> In my use case there is actually 1:1 mapping between version and branch
> in source control tree - so that one can be inferred from the other.
>
> So is there a way to infer component version number from the source
> control branch defined in CQUERY?
>
|
|
|
|
Re: Centrally controlling component versions [message #379902 is a reply to message #379857] |
Fri, 29 August 2008 13:59 |
|
Roland Tepp wrote:
> Aah, so that is what the versionConverter in RMAP was for...
>
> So in my CQUERY I specify a branch and in RMAP I translate this branch
> to a version number?
>
No, not really. You either use branches as a non-versioning scheme and rely on that the
components that you find in a branch (or in head/trunk) will provide the version from
meta-data files in some way or another OR you let the branches/tags be the ones that
defines the versions. If you do the latter, Buckminster will scan the branches that are
available and select the best one according to a version designator. In this case, you do
NOT want to specify a branch or tag in the CQUERY.
The branch/tag path in the CQUERY can be used if you want Buckminster to use a specific
branch or tag when resolving. You can enter several comma separated values (hence the term
path) which will cause Buckminster to search them one at a time. The keyword "main" can be
used to denote head/trunk. This approach is particularly useful when you have a number of
components but only a few of them needs to be branched. We use this ourselves since only a
small selection of our plug-ins needs special handling for the differences between Europa
and Ganymede. When working with Europa, we use a CQUERY that first looks in our 3.3.x
branch and then in head, i.e. "3.3.x,head"
> In my component dependencies I do not have to specify an exact version
> number of the component (that will be inferred from the branch)?
>
> Still, there is the matter of version numbers of the components
> themselves declared in CSPEC - can I omit version information there and
> have it inferred from branch or should I still manage these manually?
>
Yes, that's possible. You can control all version explicitly using branches. In some cases
that's the simplest thing to do. It all depends on how you want to work :-)
Regards,
Thomas Hallgren
|
|
|
Powered by
FUDForum. Page generated in 0.02689 seconds