[cvsnt] repository links (e.g. using modules2)
Nick Duane
nickdu at msn.com
Mon Jul 31 13:30:51 BST 2006
Our current system is comprised of many windows services and several static
libraries (providing common behavior) which these services make use of. In
addition there are third party libraries that these services link with. At
this point all of these projects are at the same level in the sccs system.
We're moving from vss to cvs so we figured it's a good time to make whatever
changes we should in the repository.
I was thinking that there might be some benefit in changing things around
such that the dependency was reflected in the hierarchy. And so that there
is no duplication of objects (source, binary for third party stuff, etc.) in
the repository this hierarchy would be virtual making use of modules or
modules2 to create this virtual layer. The problem we have today, as I see
it, is that if a developer is only interested in serviceA (making changes
and building) he/she would have no idea what other modules are required to
build that service. Unless they wanted to put some time and effort into
understanding the entire build so that they could only check out the modules
they needed, they would have to check out the entire project and build
everything. Well maybe you wouldn't have to build everything if your build
script allowed you to specify a target, but you would most likely have to
check out everything since you would not know which modules serviceA is
dependent on. If, however, you created this virtual hierarchy then the
developer would only have to checkout the serviceA module and build it.
Lets say serviceA is dependent on userlib1 and userlib3 and
3rdParty\product1 and 3rdParty\product2. Then at the repository you would
have the following modules:
repository\project1\serviceA
repository\project1\userlib1
repository\project1\userlib2
repository\project1\userlib3
repository\project1\3rdParty\product1
repository\project1\3rdParty\product2
repository\project1\3rdParty\product3
and via the modules or modules2 you would define the following virtual
hierarchy:
repository\project1\serviceA
repository\project1\serviceA\libs
repository\project1\serviceA\libs\userlib1
repository\project1\serviceA\libs\userlib3
repository\project1\serviceA\3rdParty
repository\project1\serviceA\3rdParty\product1
repository\project1\serviceA\3rdParty\product2
Does any of this sound reasonable? If this is a reasonable thing to do the
one problem I see with it is that if you are working on several modules you
could have a lot of duplicated files contained in your working directory.
Thanks,
Nick
More information about the cvsnt
mailing list