On 1-2-2010 12:51, Ulrich Eckhardt wrote:
On Monday 01 February 2010, CBy wrote:
Suppose I have 2 projects, Foo and Bar, which have nothing in common.
Because they are unrelated, I decided to give them their own TTB
directories under /foo and /bar, respectively. Both projects, however,
depend on a Utils project, which has features needed in virtually all my
projects. Because Utils is a general purpose project, I also gave it its
own TTB directories under /utils. Is that strange reasoning so far?
No.
Now I want to tag the release of my Foo project, e.g.
/foo/tags/release-1.0. Since Foo depends on Utils, I guess I need to tag
Utils as well, e.g.
/utils/tags/utils-compatible-with-release-1.0-of-foo? Or should I save
it to /foo/tags/release-1.0/utils? Or is there no need to tag Utils,
because I can use the revision number of /foo/tags/release-1.0 to relate
it back to Utils?
I'd split those up. For both 'foo', 'bar' and 'utils', you should have
releases. When developing 'foo' and 'bar', you only use previously released
versions of 'utils'. If you need a new feature in 'utils', add it there with
all the testcases and documentation and then make a new release of it. In
those projects referencing 'utils', I would also add checks that the required
version of 'utils' is provided.
Thanks for answering. I am working with NetBeans and have added the
Utils _project_ as a dependency to both Foo and Bar (1 out of 3 ways for
defining dependencies). If I do understand you well, I better define
Utils as a _library_ or _jar_ instead, e.g. utils-1.2.15? In that way,
Foo and Bar depend on a specific version of Utils, and changes to Utils
will not automatically force a recompilation of Foo and Bar. Do you also
recommend adding utils-1.2.15.jar as a resource to the project tree of
Foo and Bar in subversion, e.g. in a lib folder?
A different way is all three are related but not technically interdependent.
Then, you can use svn:external to link the utility folder into the other
project folders. Then, when making a release, you fix that relation, either
by creating a simple copy or by specifying the revision in the svn:external
property. In that case, the utilities are not really a fully separate project
on their own and I wouldn't give them the TTB folders, just a trunk and
perhaps branches.
Can't follow you here. I am afraid I have to do some additional reading
on svn:external.
Uli