(From IEEE Software)
Bookshelf
A Good CVS Resource for Beginners
Lorin Hochstein
Pragmatic Version Control Using CVS, by David Thomas and Andrew Hunt, Pragmatic Bookshelf, 2003, ISBN 0-9745140-0-4, 176 pp., US$29.95.
Version control is generally considered an important part of any software development project. Yet, for the aspiring programmer, relatively little has been written on the nuts and bolts of version control. So, it’s the pragmatic programmers to the rescue! Regular IEEE Software readers might recognize Dave Thomas and Andy Hunt from their Software Construction column, which ran from 2002–2004. However, the dynamic duo are probably best known for their book, The Pragmatic Programmer: From Journeyman to Master (Addison-Wesley, 1999), a collection of ready-to-use advice for the working programmer. Recently, they’ve launched a book series entitled “The Pragmatic Starter Kit” to provide a base of solid development practices in version control, unit testing, and automation. Pragmatic Version Control Using CVS, the first book in the series, uses the open source Concurrent Versions System software package to teach version control.
Those expecting Pragmatic Version Control Using CVS to have the same style as The Pragmatic Programmer might be disappointed, because the starter-kit book is aimed at apprentices rather than journeymen. (The authors describe the new books as prequels to their earlier work.) Thomas and Hunt wrote Pragmatic Version Control as a tutorial to get readers to a proficiency level where they can use CVS productively. The emphasis is on providing readers with knowledge of how to perform common tasks rather than simply providing a CVS reference. They cover start-up issues (setting up and connecting to a repository) and fundamental CVS concepts (such as checkouts, updates, commits, and resolving conflicts). They also discuss various CVS quirks (such as dealing with binary files and moving and renaming files) and some more sophisticated features, such as branches and modules.
Pragmatic Version Control stands out by not only describing how you can use CVS but also how you should use it. Thomas and Hunt offer advice on such tasks as structuring your code in the repository, organizing build scripts, committing changes, determining what’s appropriate to put in a log message and when to branch the code, and labeling the different branches. When multiple approaches exist for a task, the authors describe each approach and then recommend their favorite. They also aren’t shy about telling the reader what CVS features to avoid.
Pragmatic Version Control is slim as technical books go, and readers who master CVS basics will soon be looking for a more thorough reference manual. Thomas and Hunt don’t describe in detail the features they consider counterproductive, and they neglect to mention some CVS features altogether. For example, they don’t discuss export and history commands or how you can use triggers to automate tasks. Fortunately, their bibliography lists other CVS books, and readers looking for a more complete reference can always find the information on the official CVS Web site (www.cvshome.org).
For programmers who are new to version control and want to get up to speed quickly, Pragmatic Version Control Using CVS is an excellent place to start. Those who already have a working knowledge of CVS will find the early chapters a little tedious but might find some interesting material in later chapters on branching, project structure, modules, and third-party code.
Lorin Hochstein is a graduate student at the University of Maryland’s Computer Science Department. Contact him at lorin@cs.umd.edu.