4. Future Enhancements and Current Bugs
Since cvs was designed to be incomplete, for reasons of design
simplicity, there are naturally a good
number of enhancements that can be made to make it more useful.
As well, some nuisances exist in the current implementation.
-
-
cvs does not currently ``remember'' who has a checked out a copy of a
module.
As a result, it is impossible to know who might be working on the same
module that you are.
A simple-minded database that is updated nightly would likely suffice.
-
Signal processing, keyboard interrupt handling in particular, is currently
somewhat weak.
This is due to the heavy use of the system(3) library
function to execute
RCS
programs like co and ci.
It sometimes takes multiple interrupts to make cvs quit.
This can be fixed by using a home-grown system() replacement.
-
Security of the source repository is currently not dealt with directly.
The usual UNIX approach of user-group-other security permissions through
the file system is utilized, but nothing else.
cvs could likely be a set-group-id executable that checks a
protected database to verify user access permissions for particular objects
before allowing any operations to affect those objects.
-
With every checked-out directory, cvs maintains some administrative
files that record the current revision numbers of the checked-out files as
well as the location of the respective source repository.
cvs does not recover nicely at all if these administrative files are
removed.
-
The source code for cvs has been tested extensively on Sun-3 and
Sun-4 systems, all running SunOS 4.0 or later versions of the operating
system.
Since the code has not yet been compiled under other platforms, the overall
portability of the code is still questionable.
-
As witnessed in the previous section, the cvs method for tracking
third party vendor source distributions can work quite nicely.
However, if the vendor changes the directory structure or the file names
within the source distribution, cvs has no way of matching the old
release with the new one.
It is currently unclear as to how to solve this, though it is certain to
happen in practice.