Version Control with Subversion
Draft Revision exported
Ben Collins-Sussman
Brian W. Fitzpatrick
C. Michael Pilato
Table of Contents
- Preface
- Audience
- How to Read this Book
- Conventions Used in This Book
- This Book is Free
- Acknowledgments
- 1. Introduction
- What is Subversion?
- Subversion's History
- Subversion's Features
- Subversion's Architecture
- Installing Subversion
- Subversion's Components
- Client Components (for the User)
- Server Components (for the Administrator)
- 2. Basic Concepts
- The Repository
- Versioning Models
- The Problem of File-Sharing
- The Lock-Modify-Unlock Solution
- The Copy-Modify-Merge Solution
- Subversion in Action
- Working Copies
- Revisions
- How Working Copies Track the Repository
- The Limitations of Mixed Revisions
- Summary
- 3. Guided Tour
- Help!
- Import
- Revisions: Numbers, Keywords, and Dates, Oh My!
- Revision Numbers
- Revision Keywords
- Revision Dates
- Initial Checkout
- Basic Work Cycle
- Update Your Working Copy
- Make Changes to Your Working Copy
- Examine Your Changes
- svn status
- svn diff
- svn revert
- Resolve Conflicts (Merging Others' Changes)
- Merging Conflicts by Hand
- Copying a File Onto Your Working File
- Punting: Using svn revert
- Commit Your Changes
- Examining History
- svn log
- svn diff
- Examining Local Changes
- Comparing Working Copy to Repository
- Comparing Repository to Repository
- svn cat
- svn list
- A Final Word on History
- Other Useful Commands
- svn cleanup
- svn import
- Summary
- 4. Branching and Merging
- What's a Branch?
- Using Branches
- Creating a Branch
- Working with Your Branch
- The Moral of the Story
- Copying Changes Between Branches
- Copying Specific Changes
- Best Practices for Merging
- Tracking Merges Manually
- Previewing Merges
- Common Use-Cases for Merging
- Merging a Whole Branch to Another
- Undoing Changes
- Resurrecting Deleted Items
- Switching a Working Copy
- Tags
- Creating a Simple Tag
- Creating a Complex Tag
- Branch Maintenance
- Repository Layout
- Data Lifetimes
- Summary
- 5. Repository Administration
- Repository Basics
- Understanding Transactions and Revisions
- Unversioned Properties
- Berkeley DB
- Repository Creation and Configuration
- Hook Scripts
- Berkeley DB Configuration
- Repository Maintenance
- An Administrator's Toolkit
- svnlook
- svnadmin
- svndumpfilter
- svnshell.py
- Berkeley DB Utilities
- Repository Cleanup
- Managing Disk Space
- Repository Recovery
- Migrating a Repository
- Repository Backup
- Adding Projects
- Choosing a Repository Layout
- Creating the Layout, and Importing Initial Data
- Summary
- 6. Server Configuration
- Overview
- Network Model
- Requests and Responses
- Client Credentials Caching
- svnserve, a custom server
- Invoking the Server
- Built-in authentication and authorization
- Create a 'users' file and realm
- Set access controls
- SSH authentication and authorization
- httpd, the Apache HTTP server
- Prerequisites
- Basic Apache Configuration
- Authentication Options
- Basic HTTP Authentication
- SSL Certificate Management
- Authorization Options
- Blanket Access Control
- Per-Directory Access Control
- Extra Goodies
- Repository Browsing
- Other Features
- Supporting Multiple Repository Access Methods
- 7. Advanced Topics
- Runtime Configuration Area
- Configuration Area Layout
- Configuration and the Windows Registry
- Configuration Options
- Servers
- Config
- Properties
- Why Properties?
- Manipulating Properties
- Special properties
- svn:executable
- svn:mime-type
- svn:ignore
- svn:keywords
- svn:eol-style
- svn:externals
- Externals Definitions
- Vendor branches
- General Vendor Branch Management Procedure
- svn_load_dirs.pl
- 8. Developer Information
- Layered Library Design
- Repository Layer
- Repository Access Layer
- RA-DAV (Repository Access Using HTTP/DAV)
- RA-SVN (Proprietary Protocol Repository Access)
- RA-Local (Direct Repository Access)
- Your RA Library Here
- Client Layer
- Using the APIs
- The Apache Portable Runtime Library
- URL and Path Requirements
- Using Languages Other than C and C++
- Inside the Working Copy Administration Area
- The Entries File
- Pristine Copies and Property Files
- WebDAV
- Programming with Memory Pools
- Contributing to Subversion
- Join the Community
- Get the Source Code
- Become Familiar with Community Policies
- Make and Test Your Changes
- Donate Your Changes
- 9. Subversion Complete Reference
- The Subversion Command Line Client:
svn
- svn Switches
- svn Subcommands
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin Switches
- svnadmin Subcommands
- svnadmin create
- svnadmin dump
- svnadmin help
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook Switches
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook proplist
- svnlook tree
- svnlook youngest
- A. Subversion for CVS Users
- Revision Numbers Are Different Now
- Directory Versions
- More Disconnected Operations
- Distinction Between Status and Update
- Branches and Tags
- Metadata Properties
- Conflict Resolution
- Binary Files and Translation
- Versioned Modules
- Authentication
- Converting a Repository from CVS to Subversion
- B. Troubleshooting
- Common Problems
- Problems Using Subversion
- Every Time I Try to Access My Repository, My
Subversion Client Just Hangs.
- Every Time I Try to Run svn, It
Says My Working Copy is Locked.
- I'm Getting Errors Finding or Opening a Repository,
but I Know My Repository URL is Correct.
- How can I specify a Windows drive letter in a
file:// URL?
- I'm Having Trouble Doing Write Operations to a
Subversion Repository over a Network
- Under Windows XP, the Subversion Server Sometimes
Seems to Send Out Corrupted Data.
- What is the Best Method of Doing a Network Trace of
the Conversation Between a Subversion Client and
Server?
- Problems Building Subversion
- I Just Built the Distribution Binary, and When I Try
to Check Out Subversion, I Get an Error About an
Unrecognized URL Scheme
- When I Run configure, I Get Errors
Like subs-1.sed line 38: Unterminated `s'
command
- I'm Having Trouble Building Subversion Under Windows
with MSVC++ 6.0.
- C. WebDAV and Autoversioning
- Basic WebDAV Concepts
- Just Plain WebDAV
- DeltaV Extensions
- Subversion and DeltaV
- Mapping Subversion to DeltaV
- Autoversioning Support
- The mod_dav_lock Alternative
- Autoversioning Interoperability
- Win32 WebFolders
- Mac OS X
- Unix: Nautilus 2
- Linux davfs2
- D. Other Subversion Clients
- Out of One, Many
- E. Third Party Tools
- Repository Converters
- ViewCVS
- SubWiki
- Glossary