Question and Answer:

  Home  XML DOM

⟩ What is CVS *not* useful for?

CVS is not a build system.Though the structure of your Repository and modules file interact with your build system (e.g. a tree of Makefiles),they are essentially independent.CVS does not dictate how you build anything. It merely stores files for retrieval in a tree structure you devise.CVS does not dictate how to use disk space in the checked out working directories. If you require your Makefiles or build procedures to know the relative positions of everything else,you wind up requiring the entire Repository to be checked out. That's simply bad planning.If you modularize your work, and construct a build system that will share files (via links, mounts, VPATH in Makefiles,etc.), you can arrange your disk usage however you like.But you have to remember that *any* such system is a lot of work to construct and maintain. CVS does not address the issues involved. You must use your brain and a ollection of other tools to provide a build scheme to match your plans.Of course, you should use CVS to maintain the tools created to support such a build system (scripts, Makefiles, etc).CVS is not a substitute for management.You and your project leaders are expected to plan what you are doing. Everyone involved must be aware of schedules, merge points, branch names, release dates and the range of procedures needed to build products. (If you produce it and someone else uses it, it is a product.) CVS can't cover for a failure to manage your project.CVS is an instrument for making sources dance to your tune.But you are the piper and the composer. No instrument plays itself or writes its own music.CVS is not a substitute for developer communication.When faced with conflicts within a single file, most developers manage to resolve them without too much effort.But a more general definition of "conflict" includes problems too difficult to solve without communication between developers.CVS cannot determine when simultaneous changes within a single file, or across a whole collection of files, will logically conflict with one another.Its concept of a "conflict" is purely textual, arising when two changes to the same base file are near enough to spook the merge command into dropping conflict markers into the merged file.CVS is not capable of figuring out distributed conflicts in program logic.For example, if you change the arguments to function X defined in file A and, at the same time, edit file B, adding new calls to function X using the old arguments.You are outside the realm of CVS's competence.Acquire the habit of reading specs and talking to your peers.CVS is not a configuration management system.CVS is a source control system. The phrase "configuration management" is a marketing term, not an industry-recognized set of functions.A true "configuration management system" would contain elements of the following: * Source control. * Dependency tracking. * Build systems (i.e. What to build and how to find things during a build. What is shared? What is local?) * Bug tracking. * Automated Testing procedures. * Release Engineering documentation and procedures. * Tape Construction. * Customer Installation. * A way for users to run different versions of the same software on the same host at the same time.


More Questions for you: