12.11. What VC Is Not
VC is not a total solution to the project-management problem.
Although it assists single-author programming or document maintenance
greatly and can give vital help on small- to medium-scale projects
involving several developers, it's not necessarily
adequate by itself for large multiple-component, multiple-directory
projects. The following are some of its more obvious deficiencies for
larger projects:
It is not integrated with a change request or problem-report system. Its only way of grouping project files is by directory subtree. This
limitation may create problems for large, multiple-directory
projects, especially when two or more need to share a common library
or subtree.
You can work around these deficiencies on small projects. Variant
versions might be handled with compile-time conditions, like
#ifdefs in C code. Change requests
can be kept separately in some kind of database (such as the
FSF's GNATS system, or Mozilla's
Bugzilla). Programmers can carry around in their heads the state
needed to do renames without disruption.
As projects scale up in size and intricacy, however, such
ad hoc measures increasingly fail to prevent
damaging friction and lead to death by accumulated details.
Complexity control for very large projects requires a fundamentally
stronger (and, unfortunately, more constraining and complex) support
environment that goes beyond version control—a full
project-management system.
For more on the design issues in project-management systems, see the
latter half of the book Applying SCCS and RCS by
Don Bolinger and Tan Bronson (O'Reilly).
|