SourceGear is a company that I’ve never heard (until now) that works on version control software. Eric Sink is the founder of SourceGear, and he has recently written and published the book Version Control by Example. I came to hear about it perhaps as many others who have seen it already would have — he is giving this book away for free (shipping costs covered), and as his FAQ page says, there are no string attached.
The book covers the history of Version Control Systems (VCS), the terminology and common feature sets, examples of each of those features (in Apache Subversion, Mercurial, Git, and SourceGear’s Veracity), a discussion of how to use a VCS effectively in practice, and details about how VCS’s work internally. Through following VCS’s throughout history, we are introduced to additional VCS features in a context that easily explains their motivations.
Many choices for the book seem to have contributed the book to being as effective as possible. For example, having a chapter to explain the conceptual operations (with pictures) before giving the examples for each of the respective VCSs allows the reader to get a high-level understanding of what is going on, with the added bonus of standardizing terminology. There are also comments, as appropriate, specific to each VCS. The VCS’s are categorized into generations, with Subversion being 2nd generation (centralized), and Mercurial, git, and Veracity being 3rd generation (distributed). The bulk of the book was dedicated to 3rd generation tools for the reason that it is rightfully identified as the future for VCS. With 3rd generation tools being new, and thus trickier to understand on top of their inherent complexity, There is a section that directly addresses the tradeoffs between 2nd and 3rd generation VCS’s.
The book clearly delivers on content, and does so in a carefully graduated manner that might convince you that VCS is all-around simple. What really gives the book that extra shine are the details that are small enough to be overlooked. For example, the code snippets are formatted with different colors for the prompt, the user input, and the output, and red boxes highlighting pertinent sections of the output. The terminal output snippets themselves are formatted in rounded boxes which have square corners at the beginnings and ends of pages if they overflow across pages. And lastly, you can tell that the author had fun with the book via pictures and text that makes for a truly colorful experience.
Since Veracity is explained side-by-side with git and Mercurial, proliferation of Version Control by Example will serve as an advertisement for Veracity. And that may well be more valuable than the list price of $35 and the cost of shipping. Veracity is a new entrant into the distributed VCS scene, and although open-source, does not currently seem to garner as much popularity. Time will tell which 3rd generation VCS system(s) are used heavily, and whether there are further groundbreaking innovations yet to be seen. For anyone doing development with at least one other person, the more serious you are about development work, the more incumbent it should be upon you to master the concepts of VCS, and this book is probably one of the best places to start.