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
   138   139   140   141   142   143   144   145   146   147   148