Do any of these comments sound familiar? If you've ever worked on a disorganized project, they may very well be frighteningly common. They're key indicators of a process where information is not under control, and in software development, information control is crucial to a successful project. It is crucial because that's what software development is. Any nontrivial software project is a complex system, often involving numerous different developers. For all of those developers to accomplish something, they must know what they need to accomplish, and that is very difficult to accomplish without controlled distribution of information between developers. Organized software development involves a large bag of tools and techniques. At the core of those tools is the ability to keep the source codewithout which, software development is simply nothingmaintained and accessible to the people who need that access. Enter the version control system, which assumes the role of tracking, maintaining, and storing the revision history of a development project's source. Version control is not a simple task, nor are all version control systems created equal. In the world of open source, the Subversion version control system is rapidly emerging as a major contender for not only open source development projects, but also small, medium, and maybe even a few large software companies. For instance, the open source Samba project has begun using Subversion, as has the Apache Software Foundation. Additionally, although there are no numbers showing just how many commercial companies are using Subversion, the Subversion Web site contains numerous testimonials from users who have successfully deployed Subversion in a commercial setting. Also, according to Jason Robbins at tigris.org (the site hosting the Subversion project), the version 1.0 release of Subversion in February of 2004 sparked an enormous increase in downloads of Subversion (more than 29,000 in May, 2004, for example). To help you to make the most of this rising star, I will not just show how to use Subversion in this book. I will instead show you how to use Subversion effectively as a core part of your software development process, through examples and explanations of things you will actually do during real-world, every-day usage of the system, as well as ideas for integrating Subversion into your total development process. Before learning how to use Subversion, it is imperative that you have a solid grasp of the basic concepts of version control. If you have used a version control system extensively before, you may want to skip to Chapter 2, "An Introduction to Subversion." If you would like to learn more about what typical version control systems can do, and how they can benefit your process, please read on. |