www.keil.co.uk
page 8 of 37
The other very good use of VCS is that it permits developers to get on with
the next version without affecting the current builds. IE one can set up the
VCS to let the test team to get the version of the file released for testing.
Then there is the choice of fixing the bug in the version the developer is
working on or branching the file to give another copy (still tracked by the
VCS and linked to the original file). Most VCS systems permit the merging
of branches later. This is usually a semi-automatic procedure.
VCS also stops two people accidentally working on copies of the same file.
It usually requires several intentional acts to get a second write-able copy
out and several more intentional acts to check it back in in-place of the
original version pulled out. It is, of course, fully logged and the files can all
be recovered.
Many modern C development systems have hooks in them to interface to
the VCS systems so that once set up they become transparent to the
developers. Due to automatic time and date stamping in VCS systems, no
matter how slack you, or some one else gets, you should be able to, this is
the part ISO 9000 people like, show a complete audit trail from the day the
file was created.
VCS systems cover all sizes of project. I have seen an extreme case where
a very large embedded project consisted of several linked systems
produced by a couple of hundred engineers across 9 sites in 4 countries.
The VCS system (Clearcase from Pure Atria) could not only track all the
files but also synchronise all 9 of the databases automatically. This meant
that all the developers and testers were always working on the correct
(but not necessarily the latest) versions of software. This system was able
to cope with two changes of target CPU architecture! All the reusable Sw
modules were kept and moved (with their history) to the “new” project.
At the other end I have used a simpler system (PVCS from Intersolve) that I
found to be very useful on a single machine (or small networks) running
one or several projects. The PVCS suite can also integrate make and bug
reporting to full ISO9000 and CMM requirements.
These systems do cost money and take time to set up, but are worth their
weight in gold when a customer wants a mod done to a project you last
worked on 2 years ago. The other nightmare scenario is where the
customer wants a mod and the code has since modified the code for
something else….
So, we now have a project where we have organised files where we can get
at any version and easily build any version of the system. Incidentally, this
also helps with testing as test scripts can be held in the VCS in the same
way and any test suite rebuilt. The only thing to watch out for is these
systems store deltas of text files. Most let you baseline and start a new set
of deltas but for the storage of non-ASCII files they usually make complete
copies. This takes up a hell of a lot of disk space so be warned!