A colleague of mine give me this book, as I use “third generation” VCSs. I decided to check on the author approach on Version Control and his opinion on the matter. The book explores the different approaches of the latest VCS tools, with their advantages and drawbacks. Also, it delves into some algorithmic designs of Distributed VCSs. I’ve already discussed some of these tools, but the book is not a flame war against one DVCS, but more an explanation of all of them.
Content and opinions
The focus on the book is how to use a Version Control system, so several chapters are dedicated to how to use the most well-known one – and the one the author develops.
The book is split in three parts: “old” VCSs, new VCSs and finally how they work. The first chapter is a glossary of the special VCS words and their meaning. Once this is done, the first example chapter starts with Subversion. A small situation is depicted with two coders that are locally closed.
The third chapter starts the second part and it introduces new concepts for distributed VCSs. A complete chapter is dedicated to the advantages of DVCSs, and it doesn’t fall in the common pitfalls (those are in fact a reason to some humor from the author). The next chapter does exactly the opposite, i.e. explains the drawbacks of a DVCS. Although I disagree on GUI part (there are wonderful GUIs for both Mercurial and GIT on Windows, and on Linux they have a great integration in Eclipse for instance), I do agree with the author on the main topics here. The next four chapters are the practical application seen in the second chapter applied to Mercurial, Git and Veracity (two chapter for this one, one to explain the differences with Mercurial and Git, and one for the scenario), the tool the author develops.
The last part can be called “how to use them”. Even for the second generation tools like SVN, I was flabbergasted to see that a lot of coders didn’t even know how to use it, and even worse, that experienced managers didn’t know how to implement an appropriate workflow. So I think that the first chapter in this part should be something that everyone HAS to read if one wants to be called a coder. Seriously. Then, as I’ve said, the author explains how the distributed tools work and some of their internals. It’s not for the average coder, but it’s really interesting – for the culture. The last chapter is a set of golden rules, and like the first chapter, it’s something mandatory to read and use.
One of the most easy-to-read introductory books and a book on a sensible subject, this book should be read by everyone searching for a robust tool to support one’s development. It is also a very good argumentation on why you should use one.