Pragmatic Version Control Using Subversion 2nd EditionThe book is clear and concise. Mason begins with an overview, starting from the beginning (basic theory) and gradually building to the more advanced skills. A reader who has never touched version control before could be up and running quickly with this book. Even though the first six chapters were a complete review for me, they were not boring. Mason kept the verbiage compact yet simple. It never became "too much repetition" to read, as I've seen in other books. Making something this compact sound so simple and straight-forward must have taken a good deal of thought and crafting. For example, on page 61, Mason writes: You may have heard that Subversion requires Apache - this actually isn't true; neither svn nor svn+ssh need anything extra to network your repository. Most prebuilt Unix packages have a dependencyon Apache because they install all three networking options, which is where the misunderstanding comes from. In this example, he addresses and clears up the confusion that some people have without bogging the reader down with extra details that may add confusion. Although, the book is heavy on Java and Window examples, with the occasional bias (like on page 166.."...Notepad, everyone's favorite editor..."), in all places where it was appropriate, the author also gave Linux and Mac examples. The author also sprinkled in a few C/C++ examples to keep things interesting. Before reading this book, I didn't feel comfortable using tags or branches. I also kept every project in a different subversion repository, making the over-all administration hefty and organization challenging. I also did not know how to create properties to better manage my files (like setting svn:ignore to ignore all of my *.pyc files to keep them from slipping into the repository in error). I learned all of these skills in the last five chapters of the book. Additionally, I learned how to take modules common to all of my projects, create a single repository for them, and link them back in to my projects as an external repository. This, with tagging and branching, has helped me manage an area of my code that was becoming a nightmare. By the time I finished reading this book cover to cover, I had a completely reorganized and much easier to use and administer repository. In summary, there is no question that this book will remain on my shelf for future reference. I only wish there were a Volume II (Pragmatic Unit Testing) and Volume III (Pragmatic Automation) for Python.