01 October 2014

Aske Olsson & Rasmus Vos - Git Version Control Cookbook

If you have been or are involved in activities such as programming/software engineering then GIT is a term you have likely come across very often.

GIT is a Version Control System, it allows you to keep track of changes in things weather those things be documents or computer code.  It allows you to control how those changes are applied, it allows for changes to be carried out by multiple people, who can be in different parts of the world. 

GIT is very powerful and fast and was developed by the same group of people who now maintain and extend the Linux Kernel.  So with such a group of power coders involved in GIT's creation it should be no surprise that GIT has such power and flexibility.

However as has been often quoted "With great power comes great responsibility.".

The above is also true of GIT, it's powerful but this can mean that a lot of the functionality of GIT is hidden in a spiders web of complex command line statements, and while the fundamental basics are not too hard to grasp, once you move beyond the basics GIT very quickly becomes very complex.  Anyone who has ever had to read the GIT reference manual will have an understanding of just how complex!

This is where "Git Version Control Cookbook" comes in, it is aimed at the GIT user who already knows the basic fundamentals of how to use GIT and wants to move on to the more intermediate/advanced uses of GIT.

Product Specifications:

        The book does this by trying to clear  up a lot of the confusion surrounding GIT commands and how to use them.

        Like all of the other Cookbook series of books from Packt Publishing the recipe, solution, explanation format is used.  A problem that needs to be addressed is identified, a solution is created, then an explanation of the arrived at solution is documented.

        The range of different recipes that get explained and carried out in this book, range from reasonably simple to quite involved.  At the end of most of the recipes there are links to further information relating to most of the recipes if you want to take things further with a specific topic.  These were especially useful to me.

        There are 340 pages in the book and a lot of recipes (90), so it will not be a quick read, and given the level of information contained within some of the recipes are quite dense, it would require someone who is a little rusty with GIT to reread and experiment with the recipes to fully grasp what is being achieved.

        I am not a GIT expert so occasionally I did have to reread certain parts of the recipes and do a bit of Google searching to fully comprehend why some of the recipes worked.

        It is important to note that the book is very well written the authors have good writing styles and everything was well explained, it's just that I rarely do anything even remotely as complex as some of the tasks described in this book.  If you are a more frequent user of GIT you will likely not have some of the confusions that I did.

        Although GIT can be used as a general purpose Version Control System this book definitely has most of the recipes orientated towords tasks that a computer programmer would want to carry out, such as:
        • Configuring GIT
        • Admin Tasks
        • Branching
        • Merging
        • Patching
        • Obtaining Release Log Bug Fixes
        • Various Other Things...

        My favourite recipe was a simple one that showed you have to obtain a list of Bug Fixes for a software release using JGIT software repository.  And the other highlight for me was the coverage of how the Rebase command works.

        Rebase is one topic that always causes me a lot of confusion so I was glad of a simple explanation of exactly what it is and why you would want to use it, and a good explanation of the pitfalls of it.

        Another useful highlight for me was that the book didn't just stick to teaching how to use just GIT internal commands, it also covered how to extend GIT by using various external shell scripts, to make GIT even more flexible.

        Another thing I found useful was that most of the recipes used real repositories of software to demonstrate various GIT commands on actual real open source software.

        I think that maybe this book has two different audiences in mind.  The first is the one who has the basics of GIT under their belt and wants to expand their knowledge.  The other is the person who just wants to find a specific recipe to get a specific task done as quickly as possible.  While I think the first set of people will get more from this text than the second set, it is possible to use this book to just look up a specific recipe.

        It is always a little difficult to rate books like this because in the end how useful the book is to you depends on weather the recipes achieve things you find useful.  But since the range of topics the recipes covered were quite large and in my opinion they are the sort of tasks every GIT user would need to know, there is likely to be something in this book that you will find useful to know if you are a GIT user.  For a full list of all the topics covered in this book checkout the website (https://www.packtpub.com/application-development/git-version-control-cookbook) for the book.

        All in all this was an interesting and informative read, just remember that it is not a beginners GIT book, you will need familiarity with the basics of GIT to get the most out of this book.  For the price I really can't complain either 340 pages for just over £7 is a good deal.

        Review Score 90%