Book Review – Pragmatic Version Control Using Git

Review published at DZone:

I believe one must have a reasonable acquaintance with at least the three big guns in version control for open source, Subversion, known as SVN (non distributed), Mercurial and GIT.
Pragmatic Version Control Using Git The Pragmatic Starter Kit-Volume 1 By: Travis Swicegood ©2008 ISBN-10: 1-934356-15-8 Publisher: The pragmatic Bookshelf Raleigh, North Carolina, Dallas Texas. $34.95. note that this is version 1.0 of the book, version 2.0 just came out. We are still trying to determine from the publisher if version 2 is out, they say no but the web site says yes?

Git is rapidly becoming the major opensource distributed version control system (DVCS) of choice for many major projects. Competitors such as Mercurial and Bazzar (both DVCS) are important and SVN remains as a major centralized VCS. It has become quite necessary to have at least a basic understanding of each of these systems if you are active in the Open source world. Of these systems arguably the most complex is and comprehensive is git.

Git was originated by Linus Torvalds to help manage the distributed development and merge processes involved with the maintenance of the Linux kernel. It is something of a rite of passage for open source developers to become sufficiently fluent with its use.

The basic documentation on the net and even Linus’s famous talk (available on you tube) got me started but I still have been feeling a bit lost.

While this book is targeted at rank beginners there is plenty here for the advanced user. It succeeds admirably in providing information for all levels of users.

As someone quite new to Git, I found this book to be very well laid out and it has a huge virtue of making no assumptions! I believe that much of the other material I attempted to learn from made big assumptions either about Version Control knowledge from other systems or just plain skipped over concepts and presented raw commands, leaving it to the reader to determine how and when to use what command.

The book gently starts out describing the general case of version control and rapidly introduces clear cogent explanations of how git differs from centralized systems. At the same time the introductory portions of the book use basic examples to introduce versions of various concepts along with the related commands.

I found myself saying often as I read, oh! that’s the way it works!

I also found myself trying to understand more about some of the actual mechanics. This is where another great feature of the book came to the rescue for me. Each chapter has a Git hub repository which you can access to try out each concept or command that is being discussed. That filled in a few holes for me, specifically, for instance, what state is the working directory in and how does a command affect the working directory.

For me the book rates about a 8.5 out of 10, the only thing that might have improved it for me would have been some Tortoise Git explanation. I could also use more on setting up your own repository on various services. This criticism is unfair since Tortoise Git really only became viable after the book was put to bed and there is simply too many variables between hosting providers to cover that point adequately. The material presented is a definite help getting started with the task and I’ll have the book open as I start to work on that for myself. The book also has a web site which has errata, and other comments which may prove helpful