![]() |
Chapter 3 | ![]() |
Alex, Betty, and Charles are members of a team writing a software package. Though each team member has a set of files that they work on exclusively, they also have to coordinate changes to common files (especially headers). Normally they work with their own copy of the code in separate directories, and merge their copy in periodically to an 'official' version.
The problem is - sometimes files change in great ways, and when they put their functions in, they have to go though by hand, and make sure all additions work as they did for their version which didn't have the other developers additions. Worse, they could be editing the official files at the same time someone else does. This wasn't bad back at the beginning of the project when you just copied a single file in, and even worked right out of the official area, but now it's a major hassle.
Worse yet, David is rewriting the software to run on a different operating system, and he has his own unique 'branch' of code, which needs to add in the most recent changes from the other coders in a specific and controlled way.
As mentioned above, version control software is capable of managing source code and revisions; this means that it can mediate code conflicts in an intelligent manner, highlighting them, or resolving them if they are simple. Alex, Betty and Charles problems are solved.
Further, most version control software packages are capable of handling project forking. If you're unfamiliar with this term, forking is simply a copy of a code at one point in time which is developed in a different direction from the original. A good example of this can be seen with DikuMUD; the many forks from it lead to other systems such as CircleMUD, GodWars, ROM, and the sort, who all share that common base of being derived from DikuMUD.
David is obviously working on a code fork, as described above.
We'll take a look at the 2 most prevalant software packages out there today; CVS and SourceSafe. CVS is currently the most popular form of version control for open source projects today, and is itself a free open source program. It also happens to be my favorite. SourceSafe is an offering from Microsoft, and usually costs a decent bit of money, has quite a different selection of capabilities, and (as far as I know) only runs on Windows platforms (CVS is native to *nix, but (free) windows versions do exist).
![]() |
Index | ![]() |
2.5 Programmer Payoff | 3.2 CVS |