[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