HEP software projects often last for 10 or more years and involve program development of a large number of source files by a number of programmers working at a number of sites. Trying to keep track of the software is a crucial management task for the software team. A popular tool is CVS which stands for Concurrent Versioning System. (Newer systems exist now such as subversion and git. There is a Physics SCM (Source Code Management Service) SCM for Beginners however the basic principles remain the same as below.)
This means it allows two or more people to work on the same files concurrently (sounds rather scary doesn't it?) and records each change to the software by assigning it a revision number.
The key points of CVS are:-
Suppose A and B both checkout a copy of a file and change it. A commits successfully. Later B attempts to commit but this will fail; B's local copy is out of date. So B has to update which will merge A's changes into B's version. If both A and B are changing the same lines of code then CVS treats this as a conflict and still will not allow B to commit until the conflict is resolved.