Synopses & Reviews
One of the greatest frustrations in most software projects is version control: the art of managing changes to information. Today's increasingly fast pace of software development--as programmers make small changes to software one day only to undo them the next--has only heightened the problem; consecutive work on code or single-programmer software is a rare sight these days. Without careful attention to version control, concurrent and collaborative work can create more headaches than it solves. This is where Subversion comes into play.Written by members of the Subversion open source development team, Version Control with Subversion introduces the powerful new versioning tool designed to be the successor to the Concurrent Version System or CVS. CVS users will find the "look and feel" Subversion comfortably familiar, but under the surface it's far more flexible, robust, and usable, and more importantly, it improves on CVS's more notable flaws.The book begins with a general introduction to Subversion, the basic concepts behind version control, and a guided tour of Subversion's capabilities and structure. With thorough attention to detail, the authors cover every aspect of installing and configuring Subversion for managing a programming project, documentation, or any other team-based endeavor. Later chapters cover the more complex topics of branching, repository administration, and other advanced features such as properties, externals, and access control. The book ends with reference material and appendices covering a number of useful topics such as a Subversion complete reference and troubleshooting guide.Version Control with Subversion aims to be useful to readers of widely different backgrounds, from those with no previous experience in version control to experienced sysadmins. If you've never used version control, you'll find everything you need to get started in this book. And if you're a seasoned CVS pro, this book will help you make a painless leap into Subversion.
About the Author
Ben Collins-Sussman is one of the original designers and authors of Subversion. He currently works for CollabNet as a Subversion developer and community leader. He has a degree in Mathematics from the University of Chicago, and his home page can be found at http://www.red-bean.com/sussman. When away from his computer, he moonlights as a musical theater composer at theaters around Chicago. He lives with his lovely wife and three cats, and can be found practicing his banjo on sunny afternoons.
Brian Fitzpatrick started Google's Chicago engineering office in 2005, and currently leads Google's Transparency Engineering team, which uses data to help protect free expression and free speech on the web. He also founded and leads Google's Data Liberation Front, a team that systematically works to make it easy for users to move their data both to and from Google (e.g. via Google Takeout). He serves as both thought leader and internal advisor for Google's open data efforts and has previously led the Google Code and The Google Affiliate Network teams.
Prior to joining Google, Brian was a senior software engineer on the version control team at CollabNet, working on Subversion, cvs2svn, and CVS. He has also worked at Apple Computer as a senior engineer in their professional services division, developing both client and web applications for Apple's largest corporate customers.
Brian has coauthored "Version Control with Subversion" (now in its second edition), and chapters for "Unix in a Nutshell" and "Linux in a Nutshell."
Brian has an A.B. in Classics from Loyola University Chicago with a major in Latin, a minor in Greek, and a concentration in Fine Arts and Ceramics. Despite growing up in New Orleans and working for Silicon Valley companies for most of his career, he decided years ago that Chicago was his home and stubbornly refuses to move to California.
C. Michael Pilato (Mike) is a leader in the Subversion community, and a core developer of both Subversion and ViewCVS. He is currently employed by CollabNet, where he spends his days (and many nights) improving Subversion and other tools with which it integrates. When he's not programming, Mike enjoys composing and performing music, freelance graphic design work, hiking, and spending quality time with his wife and son. Mike holds a degree in computer science and mathematics from the University of North Carolina at Charlotte. He maintains a personal website at http://cmichaelpilato.com/.
Table of Contents
Foreword; Preface; Audience; How to Read this Book; Conventions Used in This Book; Organization of This Book; This Book is Free; Comments and Questions; Acknowledgments; Chapter 1: Introduction; 1.1 What Is Subversion?; 1.2 Subversion's History; 1.3 Subversion's Features; 1.4 Subversion's Architecture; 1.5 Installing Subversion; 1.6 Subversion's Components; 1.7 A Quick Start; Chapter 2: Basic Concepts; 2.1 The Repository; 2.2 Versioning Models; 2.3 Subversion in Action; 2.4 Summary; Chapter 3: Guided Tour; 3.1 Help!; 3.2 Import; 3.3 Revisions: Numbers, Keywords, and Dates, Oh My!; 3.4 Initial Checkout; 3.5 Basic Work Cycle; 3.6 Examining History; 3.7 Other Useful Commands; 3.8 Summary; Chapter 4: Branching and Merging; 4.1 What's a Branch?; 4.2 Using Branches; 4.3 Copying Changes Between Branches; 4.4 Common Use-Cases for Merging; 4.5 Switching a Working Copy; 4.6 Tags; 4.7 Branch Maintenance; 4.8 Summary; Chapter 5: Repository Administration; 5.1 Repository Basics; 5.2 Repository Creation and Configuration; 5.3 Repository Maintenance; 5.4 Adding Projects; 5.5 Summary; Chapter 6: Server Configuration; 6.1 Overview; 6.2 Network Model; 6.3 svnserve; A Custom Server; 6.4 httpd; The Apache HTTP Server; 6.5 Supporting Multiple Repository Access Methods; Chapter 7: Advanced Topics; 7.1 Runtime Configuration Area; 7.2 Properties; 7.3 Externals Definitions; 7.4 Vendor Branches; Chapter 8: Developer Information; 8.1 Layered Library Design; 8.2 Using the APIs; 8.3 Inside the Working Copy Administration Area; 8.4 WebDAV; 8.5 Programming with Memory Pools; 8.6 Contributing to Subversion; Chapter 9: Subversion Complete Reference; 9.1 The Subversion Command Line Client: svn; 9.2 svnadmin; 9.3 svnlook; 9.4 svnserve; Appendix A: Subversion for CVS Users; A.1 Revision Numbers Are Different Now; A.2 Directory Versions; A.3 More Disconnected Operations; A.4 Distinction Between Status and Update; A.5 Branches and Tags; A.6 Metadata Properties; A.7 Conflict Resolution; A.8 Binary Files and Translation; A.9 Versioned Modules; A.10 Authentication; A.11 Converting a Repository from CVS to Subversion; Appendix B: Troubleshooting; B.1 Common Problems; Appendix C: WebDAV and Autoversioning; C.1 Basic WebDAV Concepts; C.2 Subversion and DeltaV; C.3 Autoversioning Interoperability; Appendix D: Third-Party Tools; D.1 Clients and Plugins; D.2 Language Bindings; D.3 Repository Converters; D.4 Higher-Level Tools; D.5 Repository Browsing Tools; Appendix E: Creative Commons Attribution License; E.1 Creative Commons Legal Code; Colophon;