Trusted SF Member
Joined: 26 Aug 2003
Location: Warwickshire, England, UK
|Posted: Mon Mar 14, 2005 7:38 pm Post subject: Book Review - Pragmatic Version Control Using Subversion
Pragmatic Version Control Using Subversion
Author: Mike Mason
Publisher: The Pragmatic Programmers
Date Published: February 2005
Book Specification: Softcover, 207 pages
Category: Software Development, Project Management, Version Control
Publisher's Suggested User Level: Not Rated
Reviewer's Recommended User Level: Beginner to Advanced (Targetted for Programmers and System Administrators)
Suggested Publisher Price: US$29.99, CAN$43.99
Amazon.com: Pragmatic Version Control Using Subversion
Amazon.co.uk: Pragmatic Version Control Using Subversion
Blurb from back cover
"Version control" is how programmers manage the assets they produce. Its a fundamental practice that (surprisingly!) many people don't use, or don't use effectively. Contrary to popular belief, version control doesn't have to be complicated, hard to use, or expensive to implement. But without version control, your valuable assets are at risk.
This book shows how just a handful of basic recipes can be used to get almost all of the benefits from a version control system. Follow these recipes, and your project's assets (source code, documentation, test data, scripts, and so on) will be protected and you'll be in control of how they're used.
In software development, version control is hardly the most exciting topic of discussion, but it is an important part of the project. From tracking changes to managing release and development branches, version control systems play a vital role in most projects. Currently, CVS is the most used version control system, particularly for open-source projects, but CVS has its problems; there are aspects of CVS that can make even the most mild mannered developer want to go on a killing spree with a rocket launcher.
Subversion, however, is a relatively new entry to the version management arena; designed to address all of the shortcomings of CVS, Subversion is easy to use, and powerful. "Pragmatic Version Control Using Subversion" is a tutorial and reference in the use of Subversion as the version management platform for your projects.
Chapters 1 and 2 of the book introduce version control in general. This serves as a good starting point for those who have never used version control, and for those who are migrating from (or using in parallel with) other version control systems such as CVS. These two chapters introduce the concepts of version control and illustrate it in action with a simple project. Several useful features, both of version control in general and of Subversion in particular, are introduced in these chapters.
Chapter 3 introduces Subversion specifically, and illustrates the day-to-day activities you're likely to perform using Subversion, such as committing changes, updating, resolving conflicts, and so on. There is also a brief section on installing Subversion, at the beginning of the chapter.
Chapter 4 is a short 'How to' on version control. It goes through a few points which the author considers important when working on projects which utilise version control. Chapter 4 is only 3 pages in length, but it covers important material which deserves its own chapter!
Chapter 5 goes into the details of repository access. The repository is the storage location for the version information controlled by Subversion. This chapter explains the ways in which you can access the repository using a Subversion client, and ends with a section on choosing a networking option for your projects.
Chapter 6 is a "recipe" section on common Subversion commands. Covering just about everything you'll ever do with Subversion, this chapter is probably the one you'll go back to again and again. Everything is explained in an understandable, yet concise, manner, and nothing has been left out. This comprehensive Subversion command reference is perhaps the books best feature; its certainly the part you'll go back to years after reading it for the first time, even if you're a Subversion expert, just for those times when you need to check the exact details of what it is a command does.
Chapter 7 covers the organisation of your repository. It explains how Subversion stores projects in the repository, and illustrates a single-project repository and a multiple-project repository.
Chapter 8 describes tags and branches. These are perhaps the two least understood, and most feared, aspects of version control, and this book does an excellent job of explaining them and setting aside the fear often associated with the word 'branch' in a project management discussion. The chapter includes recommendations of when to tag and when to branch, and examples of generating releases, fixing bugs, and experimental branches.
Chapter 9 explains how to create a project in Subversion, detailing the ways in which you can import or otherwise create a project, and also code-sharing between projects.
Chapter 10 covers the storage of third party code in your repository, and includes a few pointers as to how this can be done effectively. Most projects involve libraries or code from other projects at some point, so this chapter is just as essential as the other chapters in the book, and although it covers a topic which may at first seem obvious, it provides some useful tips for storing third party code alongside your own project code.
The book concludes with 5 appendices. The first covers installing, networking, securing and administering Subversion. I followed this appendix to install Subversion on a server on my network, and the procedure is flawless and easy to follow. Appendix B covers migrating to Subversion from CVS or RCS, important topics for a lot of developers who already use these systems for version management but want to try out the additional features Subversion has to offer.
Appendix C covers third-party tools that work with Subversion, while appendix D is a command summary. Along with chapter 6, this appendix is another of those useful "will refer back to constantly" parts of the book. The command summary is easy to follow and provides 'at a glance' information about a command. Coupled with the detailed discussion in chapter 6, this is a valuable Subversion reference.
Finally, appendix E lists some other resources for Subversion, including documentation, books and Subversion websites.
Style And Detail
The book is well written and cleanly edited, yet retains a friendly style of writing. It is easy to read and follow, and every topic is explained sufficiently that those who have never used version control can understand it, yet also useful for those readers who are accustomed to version control and are simply trying to learn how Subversion is used.
I read this book with a working knowledge of the CVS version control system, and found the text pitched at the right level for both complete newcomers to version control and for those who are just trying to pick up the details of Subversion itself. Indeed, I now think about version control in a slightly different way due to the tips presented on version control and project management in general.
I started this review with "In software development, version control is hardly the most exciting topic of discussion", but "Pragmatic Version Control Using Subversion" is nonetheless an interesting read. I would not hesitate in recommending this book to anyone that needs to learn version control with Subversion.
The strength of this book lies not only in its reference chapters, but in the gentle way it introduces the reader to even the most complicated version control topics. For this, the book scores highly in the SFDC review scale.
This book receives an honoured SFDC Rating of 7/10
- Andrew J. Bennieston,
keywords: Software Development, Project Management, Version Control, Subversion, CVS, Programming, Tutorial, Reference
This review is copyright 2005 by the author (Andrew J. Bennieston) and Security-Forums Dot Com, and may not be reproduced in any form in any media without the express permission of the author, or Security-Forums Dot Com.
Last edited by Stormhawk on Wed Mar 16, 2005 1:49 am; edited 3 times in total