Page 143 -
P. 143
This is the only section in this book in which a specific software package is recommended.
However, Subversion is not the only option for version control. Other popular version
control systems include:
• CVS (http://www.nongnu.org/cvs)
• RCS (http://www.gnu.org/software/rcs)
• Arch (http://www.gnu.org/software/gnu-arch/)
• Aegis (http://aegis.sourceforge.net/)
• Perforce (http://www.perforce.com/)
• Visual SourceSafe (http://msdn.microsoft.com/vstudio/previous/ssafe/)
Multiple People Can Work on One File
Programming teams that do not use a modern version control system usually have a rule
that only one person at a time can work on any given file. Sometimes this rule is enforced
by using an antiquated version control system, which allows only one person to check out
a file. Some teams use a master folder to store all of the source code, and individual pro-
grammers must rename files that they are using or move them temporarily to a “check-
out” folder.
There are version control systems that essentially function as an automated checkout
folder. A system like this requires that a programmer check out a file from the repository
before modifying it, and keeps track of the checkout status of each file in the repository.
The system prevents anyone from modifying any file until it is checked back in. This is
known as the “lock-modify-unlock” model, and it is very intuitive to many programmers.
However, it is a very restrictive way to manage code, and can cause delays and problems
for the team.
One worst-case scenario that some teams encounter is a schedule delay caused by having
many programming tasks that must occur on a single piece of code, when that code can be
updated by only a single person at a time. For example, programmers might run into trou-
ble when they must add behavior to a complex window in the software that contains
many tabs and controls, all of which reside in a single file. If they are only using a folder to
store the code, only one person can work on the file at a time. Even if the
modifications themselves are relatively straightforward, this process could take a lot of
time, and may even require a senior developer to be pulled in to perform the work as
quickly as possible (which could lead to extra delays because he can’t be assigned to any
other task until this one is done.)
When a team has to work with large files that contain a lot of code that is not under con-
trol, or that is checked into a lock-modify-unlock version control system, it runs into
“unavoidable” delays because only one person can edit each file at a time. Adopting a
modern version control system like Subversion is one effective way to fix this problem.
Subversion allows multiple people to work on a single file at the same time, using an alter-
native model called “copy-modify-merge.” In this model, a file can be checked out any
DESIGN AND PROGRAMMING 135