[ On Saturday, February 26, 2000 at 13:18:45 (-0800), Paul Sander wrote: ]
> Subject: Re: removing the need for "cvs add file" to contact the server....
>
> One of the requirements of this architecture is to share header files
> across multiple projects. (Such a project would also contain libraries
> that are shared among applications, which I've pruned for simplicity.)
To say it bluntly: That's a really really really stupid way of doing things.
Please use the build system or some other external SCM system to share
stuff, not CVS modules directly like that!
I.e. keep separate release management for your headers (and associated
libraries, if there are any) and install them on build systems so they
can be shared by other modules.
Yes, it might require more effort and thought to do things this way but
this additional work is necessary for good software hygiene. It also
makes much more sense in an object-oriented sense, and even if you're
not directly using OO programming techniques it'll still afford you some
of the benefits.
If you can't manage this level of internal release management then I
would strongly suggest just keeping separate copies of the shared code
in each module that uses it and learn to do maintenance across the
common files in the old fashioned way -- i.e. remember to apply each
change to each file separately. If you think this is too much work then
you're obviously ready to do as I say and do separate release management
of the shared modules.
Sharing code by using CVS to "link" it into separate modules only works
in the very most simple of scenarios. Paul's example shows pretty
clearly how it can get way out of hand in very short order, and that's
without even considering some of the deeper software development issues
(not to mention CVS issues like branching!).
CVS is not a full blown configuration management system, nor should it be!
--
Greg A. Woods
+1 416 218-0098 VE3TCP <[EMAIL PROTECTED]> <robohack!woods>
Planix, Inc. <[EMAIL PROTECTED]>; Secrets of the Weird <[EMAIL PROTECTED]>