Bookreview: Pragmatic Version Control Using Subversionreview written by Gabor Szabo on 2005.04.26
This book is the first part of a series of three books from Pragmatic Bookshelf that also includes Pragmatic Unit Testing and Pragmatic Automation. While I have not seen those other books yet I think this is a very important subject that most of the programmers coming out from universities never heard of. I think it is very important that people will learn about these concepts early in their careers as these are basic tools in the craft of software development. The Pragmatic Version Control Using Subversion while can be used as an introduction to Subversion only, it also fits people who don't have any experience with Version Control. While many programmers will say we are just programmers and only the Configuration Management group need to know this stuff I think reading this book will benefit both the programmers and the organization where they work.
In the first chapter the book start with a
story about Fred and Wilma showing why version control even in small teams
is very important.
Chapter 2 - What Is Version Control? provides an overview of, well
what Version Control is.
It defines the terminology used in this book. Though it warns of misunderstanding
that can be caused by terminology used by others, unfortunately there is no attempt
to fill the gap and explain how the words from various terminologies are related.
Chapter 3 - Getting Started with Subversion
is where the real work starts. In this chapter you learn how to setup
a local repository and how to execute subversion commands to do your daily job.
For this you learn how to import a directory structure, how to checkout, commit files
and how to resolve conflicts when they arise on parallel development.
Chapter 4 - How To... is a short one that points out the two main reasons groups don't use version control:
The whole book is about addressing these issues. Chapter 5 - Accessing a Repository covers the available options to setup a real networked Subversion with capability to handle multiple users. It provides some guidance as to when to choose which options. While a regular Subversion user might not need this information it's worth reading to understand the backend of such system. Besides, to learn more complex operations it is better to have multiple users in a distributed environment. Chapter 6 - Common Subversion Commands is a long one and to tell the truth, I did not like it. Instead of keeping the theme that was used in the first part of the book, in this chapter we see examples using a number of themes which is slightly confusing. It is also too long and mostly just a set of examples without much connection among them. It does explain the various tasks and give examples but it would have been much better if it were split up into several shorter chapters and if it followed and expanded the original story. Chapter 7 - Organizing Your Repository gives an overview of the two main layout options with some pro and contra reasoning. Chapter 8 - Using Tags and Branches is about all this and of course about merge. Without that branching would just be useless. It provides an explanation of what these are and suggests "best practices" with several branching strategies. Personally I think the PRE and POST bug fix tags are a bit too extensive tagging but it is a legitimate one anyway. Chapters 9-10 Chapter 9 - Creating a Project. Here you can read about directory layout and why it is important to have a README file in the top-most directory of the project. It also explains code sharing between projects on the source code level, with or without the svn:externals property. Chapter 10 - Third-Party code gives the reader a good introduction on how to deal with various situations involving either binary code or source code or both. It also shows how to deal with changes in third-party code on the administration level. Appendix A - Install, Network, Secure, and Administer Subversion gives you a more detailed series of instructions on how to install a Subversion server with either way of networking it. It also helps you with the security considerations and with mundane tasks such as backup.
Actually there is a small bug in backup script on page 166.
The weekly backup, after retrieving the number of the youngest revision
dumps the whole repository. In the slight chance that someone commits
a change exactly between these two operations will cause the script on the next
day to include a change in the incremental backup that was already included once.
Next day the incremental backup will dump from 11 to the youngest that day. Which means
revision 11 is included both in the original backup and the incremental backup.
Some other reviews of this book: Check out also the beginning of my RapidSVN user manual Self advertising: I provide Subversion training, installation and support mainly in Israel though I am ready to travel to Europe and the US as well. |