You are previewing Essential CVS, 2nd Edition.
O'Reilly logo
Essential CVS, 2nd Edition

Book Description

This easy-to-follow reference shows a variety of professionals how to use the Concurrent Versions System (CVS), the open source tool that lets you manage versions of anything stored in files. Ideal for software developers tracking different versions of the same code, this new edition has been expanded to explain common usages of CVS for system administrators, project managers, software architects, user-interface (UI) specialists, graphic designers and others.

Current for version 1.12, Essential CVS, 2nd Edition offers an overview of CVS, explains the core concepts, and describes the commands that most people use on a day-to-day basis. For those who need to get up to speed rapidly, the book's Quickstart Guide shows you how to build and use a basic CVS repository with the default settings and a minimum of extras. You'll also find:

  • A full command reference that details all aspects of customizing CVS for automation, logging, branching, merging documents, and creating alerts

  • Examples and descriptions of the most commonly used options for each command

  • Why and when to tag or branch your project, tagging before releases, and using branching to create a bugfix version of a project

  • Details on the systems used in CVS to permit multiple developers to work on the same project without loss of data

An entire section devoted to document version management and project management includes ways to import and export projects, work with remote repositories, and shows how to fix things that can go wrong when using CVS. You'll find more screenshots in this edition as well as examples of using graphical CVS clients to run CVS commands. Essential CVS also includes a FAQ that answers common queries in the CVS mailing list to get you up and running with this system quickly and painlessly.

Table of Contents

  1. Essential CVS, 2nd Edition
  2. Dedication
  3. Preface
    1. Changes for the Second Edition
    2. Structure of the Book
    3. Conventions Used in This Book
    4. Learning More About CVS
    5. Web Site and Manpages
      1. Related Books
      2. Support
    6. Using Code Examples
    7. How To Contact Us
    8. SafariĀ® Enabled
    9. Acknowledgments for the First Edition
    10. Acknowledgments for the Second Edition
  4. I. Introduction
    1. 1. What Is CVS?
      1. 1.1. What Is a Versioning System?
      2. 1.2. Why CVS?
        1. 1.2.1. Features of Version Control Systems
        2. 1.2.2. Comparing Version Control Systems
        3. 1.2.3. CVS Versus Subversion
        4. 1.2.4. CVS and CVSNT
        5. 1.2.5. Why I Prefer CVS
      3. 1.3. CVS in the Field
        1. 1.3.1. System Administration
        2. 1.3.2. Software Development
        3. 1.3.3. Content-Controlled Publishing
        4. 1.3.4. Other Uses for CVS
    2. 2. CVS Quickstart Guide
      1. 2.1. Installing CVS
        1. 2.1.1. Is CVS Installed?
        2. 2.1.2. Graphic User Interfaces
        3. 2.1.3. Secure Shell
        4. 2.1.4. Installing CVS with a Package Manager
        5. 2.1.5. Installing and Building CVS from Source
      2. 2.2. Building Your First Repository
      3. 2.3. Importing Projects
      4. 2.4. Accessing Remote Repositories
      5. 2.5. Checking Out Files
      6. 2.6. Editing Files
      7. 2.7. Committing Changes
      8. 2.8. Updating Sandboxes
      9. 2.9. Adding Files
      10. 2.10. Removing Files
      11. 2.11. Exporting and Building Projects
      12. 2.12. Quick Tips for Success
  5. II. Using CVS
    1. 3. Basic Use of CVS
      1. 3.1. General Information
        1. 3.1.1. Lock Files
        2. 3.1.2. CVS Command Syntax
        3. 3.1.3. Choosing Your Editor
      2. 3.2. Sandboxes and Repositories
        1. 3.2.1. Permissions and Ownership
        2. 3.2.2. Repository Paths
        3. 3.2.3. Browsing the Repository
        4. 3.2.4. Creating a Sandbox
        5. 3.2.5. Checking Out from Multiple Repositories
        6. 3.2.6. Changing Repositories
        7. 3.2.7. Editing Sandbox Files
      3. 3.3. Committing Changes to the Repository
        1. 3.3.1. Setting Revision Numbers
        2. 3.3.2. When to Commit
        3. 3.3.3. Checking File Status
      4. 3.4. Updating the Sandbox Files from the Repository
        1. 3.4.1. Retrieving Past Revisions of a File
          1. 3.4.1.1. Retrieving a static file
          2. 3.4.1.2. Reverting changes
          3. 3.4.1.3. Retrieving by date
        2. 3.4.2. When to Update
        3. 3.4.3. Conflicts and Merging
      5. 3.5. Adding Files to the Repository
      6. 3.6. Removing Files from the Repository
        1. 3.6.1. Retrieving Removed Files
          1. 3.6.1.1. Method 1
          2. 3.6.1.2. Method 2
          3. 3.6.1.3. Method 3
        2. 3.6.2. Removing Directories
      7. 3.7. Moving Files or Directories
        1. 3.7.1. Moving Files
        2. 3.7.2. Moving Directories
      8. 3.8. Releasing a Sandbox
      9. 3.9. Keywords
      10. 3.10. Binary Files and Wrappers
      11. 3.11. Specifying Default Command Options
    2. 4. Tagging and Branching
      1. 4.1. Tagging
        1. 4.1.1. Tag Names
        2. 4.1.2. Reserved Tag Names
        3. 4.1.3. Tagging by Sandbox
        4. 4.1.4. Tagging by Date or Revision
        5. 4.1.5. Retrieving Tagged Files
        6. 4.1.6. Removing and Moving Tags
          1. 4.1.6.1. Removing a tag
          2. 4.1.6.2. Moving a tag
          3. 4.1.6.3. Moving or removing tags from Attic files
          4. 4.1.6.4. Renaming a tag
        7. 4.1.7. Removed Files
        8. 4.1.8. Tagging Strategies
      2. 4.2. Stickiness
      3. 4.3. Branching
        1. 4.3.1. Uses for Branches
        2. 4.3.2. Making a Branch
        3. 4.3.3. Retroactive Branching
        4. 4.3.4. Creating a Branch Sandbox
        5. 4.3.5. Adding and Removing Files
        6. 4.3.6. Merging Branches
          1. 4.3.6.1. Merging from branch to trunk
          2. 4.3.6.2. Merging from trunk to branch
          3. 4.3.6.3. Merging from branch to branch
          4. 4.3.6.4. Keyword issues when merging branches
          5. 4.3.6.5. Merging binary and special files
        7. 4.3.7. Branch Revision Numbers
        8. 4.3.8. Magic Branch Numbers
        9. 4.3.9. Deleting or Moving a Branch
      4. 4.4. Branching Strategies
        1. 4.4.1. Branching Philosophies
          1. 4.4.1.1. Basically stable
          2. 4.4.1.2. Basically unstable
        2. 4.4.2. Branch Styles
          1. 4.4.2.1. Long branch, merging to branch
          2. 4.4.2.2. Long branch, merging to trunk
          3. 4.4.2.3. Long branch, merging both trunk and branch
          4. 4.4.2.4. Short branches
          5. 4.4.2.5. Nested branches
        3. 4.4.3. Branch Policies
      5. 4.5. Merging Strategies
        1. 4.5.1. When Merging Is Easy
        2. 4.5.2. When Merging Is Difficult
    3. 5. Multiple Users
      1. 5.1. Using Simultaneous Development
      2. 5.2. Watching a File
        1. 5.2.1. Configuring Watches
        2. 5.2.2. Marking a File for Watching
        3. 5.2.3. Setting Your Watch
        4. 5.2.4. Editing a File
          1. 5.2.4.1. Aborting an edit
          2. 5.2.4.2. Committing an edit
        5. 5.2.5. Listing Watchers and Editors
      3. 5.3. Reserving Files
        1. 5.3.1. Installing and Configuring rcslock
        2. 5.3.2. Reserving a File
        3. 5.3.3. Committing a File
        4. 5.3.4. Releasing a File
        5. 5.3.5. Combining rcslock with watch
      4. 5.4. Comparing File Revisions
      5. 5.5. Displaying Recent Changes
      6. 5.6. Displaying File History
  6. III. CVS Administration
    1. 6. Repository Management
      1. 6.1. Creating a Repository
      2. 6.2. Deleting a Repository
      3. 6.3. Securing Your Projects
        1. 6.3.1. Sandboxes
        2. 6.3.2. Repository Root Directory
        3. 6.3.3. CVSROOT Directory
        4. 6.3.4. Project Directories
        5. 6.3.5. General Information on Security
      4. 6.4. Repository Structure
        1. 6.4.1. Attic Subdirectory
        2. 6.4.2. CVS Subdirectory
        3. 6.4.3. Locks
      5. 6.5. CVSROOT Files
        1. 6.5.1. Configuration Files
          1. 6.5.1.1. config
          2. 6.5.1.2. cvswrappers
          3. 6.5.1.3. modules
          4. 6.5.1.4. notify
        2. 6.5.2. Scripting Files
          1. 6.5.2.1. commitinfo
          2. 6.5.2.2. editinfo
          3. 6.5.2.3. loginfo
          4. 6.5.2.4. postadmin
          5. 6.5.2.5. postproxy
          6. 6.5.2.6. posttag
          7. 6.5.2.7. postwatch
          8. 6.5.2.8. preproxy
          9. 6.5.2.9. rcsinfo
          10. 6.5.2.10. taginfo
          11. 6.5.2.11. verifymsg
        3. 6.5.3. Informational Files
          1. 6.5.3.1. checkoutlist
          2. 6.5.3.2. cvsignore
          3. 6.5.3.3. history
          4. 6.5.3.4. passwd
          5. 6.5.3.5. readers
          6. 6.5.3.6. users
          7. 6.5.3.7. val-tags
          8. 6.5.3.8. writers
        4. 6.5.4. Variable Expansion
      6. 6.6. Server Environment Variables
      7. 6.7. Backing Up a Repository
        1. 6.7.1. Freezing a Repository
        2. 6.7.2. Restoring a Backup
      8. 6.8. Distributed Repositories
        1. 6.8.1. Mirroring a Repository
        2. 6.8.2. Write Proxies
        3. 6.8.3. Web-Viewable Repositories
      9. 6.9. Editing a Repository
        1. 6.9.1. Moving Files and Directories
          1. 6.9.1.1. Prerequisites to moving a file
          2. 6.9.1.2. Moving a file: Method 1
          3. 6.9.1.3. Moving a file: Method 2
          4. 6.9.1.4. Moving a directory: Method 1
          5. 6.9.1.5. Moving a directory: Method 2
        2. 6.9.2. Deleting Files and Directories
          1. 6.9.2.1. Deleting a file
          2. 6.9.2.2. Deleting a directory
        3. 6.9.3. Deleting a Project
        4. 6.9.4. Editing a Project's RCS Files
        5. 6.9.5. Clearing Locks
      10. 6.10. Sandbox Structure
        1. 6.10.1. CVS Subdirectories
        2. 6.10.2. Dot Files in Sandbox Directories
        3. 6.10.3. Dot Files in User Home Directories
      11. 6.11. Client Environment Variables
      12. 6.12. Exit Status
    2. 7. Project Management
      1. 7.1. Creating a Project
        1. 7.1.1. Preparing a Project
        2. 7.1.2. Importing a Project
        3. 7.1.3. Vendor Branches
        4. 7.1.4. Alternatives to Importing
          1. 7.1.4.1. Creating a project with cvs add
          2. 7.1.4.2. Creating a project by editing the repository
        5. 7.1.5. Importing from Other Version Control Systems
      2. 7.2. Distributing Files
        1. 7.2.1. checkout and update
        2. 7.2.2. Exporting Files
      3. 7.3. Running Scripts
        1. 7.3.1. Working with Scripting Files
        2. 7.3.2. Common Syntax
        3. 7.3.3. The modules File
          1. 7.3.3.1. Alias modules
          2. 7.3.3.2. Regular modules
          3. 7.3.3.3. Module options and scripts
        4. 7.3.4. The commitinfo File
        5. 7.3.5. The loginfo File
        6. 7.3.6. The postadmin File
        7. 7.3.7. The postproxy File
        8. 7.3.8. The posttag File
        9. 7.3.9. The postwatch File
        10. 7.3.10. The preproxy File
        11. 7.3.11. The rcsinfo File
        12. 7.3.12. The taginfo File
        13. 7.3.13. The verifymsg File
      4. 7.4. Interfacing with External Programs
        1. 7.4.1. Interfacing with Bug Trackers
        2. 7.4.2. Interfacing with Build Scripts
        3. 7.4.3. Enforcing Standards
        4. 7.4.4. Making Patchfiles
      5. 7.5. Tools
        1. 7.5.1. The cvs admin Command
        2. 7.5.2. The cvs history Command
          1. 7.5.2.1. The history file
          2. 7.5.2.2. cvs history output
          3. 7.5.2.3. Using the cvs history command
      6. 7.6. Strategies and Practices
        1. 7.6.1. Tag and Branch Strategies
        2. 7.6.2. Automation Strategies
        3. 7.6.3. Project Structure and Sandboxes
        4. 7.6.4. Client and Server Version Mismatch
        5. 7.6.5. Practices for Development
    3. 8. Remote Repositories
      1. 8.1. Specifying Repository Paths
      2. 8.2. Method Options
      3. 8.3. The local Access Method
      4. 8.4. The ext and server Access Methods
        1. 8.4.1. rsh
        2. 8.4.2. The server Access Method
        3. 8.4.3. SSH
        4. 8.4.4. Other Connection Programs
      5. 8.5. The fork Access Method
      6. 8.6. The gserver Access Method
      7. 8.7. The kserver Access Method
      8. 8.8. The pserver Access Method
        1. 8.8.1. The passwd File
        2. 8.8.2. The readers and writers Files
        3. 8.8.3. login and logout
        4. 8.8.4. Security
      9. 8.9. Using inetd with gserver, kserver, and pserver
        1. 8.9.1. Client Ports
      10. 8.10. PAM
    4. 9. Troubleshooting
      1. 9.1. General Troubleshooting Techniques
        1. 9.1.1. Finding Help
          1. 9.1.1.1. Mail and newsgroups
          2. 9.1.1.2. The Web
        2. 9.1.2. Reporting Bugs
        3. 9.1.3. Making Your Own Changes to CVS
      2. 9.2. Connectivity Problems
        1. 9.2.1. Root and Repository File Problems
        2. 9.2.2. Misconfigured Access Methods
        3. 9.2.3. Isolating Connectivity Problems
        4. 9.2.4. rsh-Replacement Problems
      3. 9.3. Filename Problems
      4. 9.4. Line-Ending Problems
      5. 9.5. Permission Problems
        1. 9.5.1. pserver Problems
      6. 9.6. Lock Files
      7. 9.7. Time Issues
  7. IV. Reference
    1. 10. Command Reference
      1. 10.1. CVS Command-Line Options
      2. 10.2. CVS Commands
        1. 10.2.1. add
          1. 10.2.1.1. Command options
          2. 10.2.1.2. Description
          3. 10.2.1.3. Example 1
          4. 10.2.1.4. Example 2
          5. 10.2.1.5. Example 3
        2. 10.2.2. admin
          1. 10.2.2.1. Command options
          2. 10.2.2.2. Description
          3. 10.2.2.3. Example 1
          4. 10.2.2.4. Example 2
        3. 10.2.3. annotate
          1. 10.2.3.1. Command options
          2. 10.2.3.2. Example 1
          3. 10.2.3.3. Example 2
        4. 10.2.4. checkout
          1. 10.2.4.1. Command options
          2. 10.2.4.2. Description
          3. 10.2.4.3. Example 1
          4. 10.2.4.4. Example 2
        5. 10.2.5. commit
          1. 10.2.5.1. Command options
          2. 10.2.5.2. Description
          3. 10.2.5.3. Example 1
          4. 10.2.5.4. Example 2
        6. 10.2.6. diff
          1. 10.2.6.1. Standard options
          2. 10.2.6.2. Format options
          3. 10.2.6.3. Line and group format options
          4. 10.2.6.4. Example 1
          5. 10.2.6.5. Example 2
        7. 10.2.7. edit
          1. 10.2.7.1. Command options
          2. 10.2.7.2. Description
          3. 10.2.7.3. Example
        8. 10.2.8. editors
          1. 10.2.8.1. Command options
          2. 10.2.8.2. Example
        9. 10.2.9. export
          1. 10.2.9.1. Command options
          2. 10.2.9.2. Description
          3. 10.2.9.3. Example
        10. 10.2.10. history
          1. 10.2.10.1. Command options
          2. 10.2.10.2. Example 1
          3. 10.2.10.3. Example 2
        11. 10.2.11. import
          1. 10.2.11.1. Command options
          2. 10.2.11.2. Description
          3. 10.2.11.3. Example 1
          4. 10.2.11.4. Example 2
        12. 10.2.12. init
          1. 10.2.12.1. Example
        13. 10.2.13. kserver
          1. 10.2.13.1. Example
        14. 10.2.14. log
          1. 10.2.14.1. Command options
          2. 10.2.14.2. Example
        15. 10.2.15. login
          1. 10.2.15.1. Example
        16. 10.2.16. logout
          1. 10.2.16.1. Example
        17. 10.2.17. ls
          1. 10.2.17.1. Command options
          2. 10.2.17.2. Example 1
          3. 10.2.17.3. Example 2
        18. 10.2.18. pserver
          1. 10.2.18.1. Example
        19. 10.2.19. rannotate
          1. 10.2.19.1. Command options
          2. 10.2.19.2. Example
        20. 10.2.20. rdiff
          1. 10.2.20.1. Command options
          2. 10.2.20.2. Example
        21. 10.2.21. release
          1. 10.2.21.1. Command option
          2. 10.2.21.2. Example
        22. 10.2.22. remove
          1. 10.2.22.1. Command options
          2. 10.2.22.2. Example 1
          3. 10.2.22.3. Example 2
        23. 10.2.23. rlog
          1. 10.2.23.1. Command options
          2. 10.2.23.2. Example
        24. 10.2.24. rls
          1. 10.2.24.1. Example
        25. 10.2.25. rtag
          1. 10.2.25.1. Command options
          2. 10.2.25.2. Description
          3. 10.2.25.3. Example 1
          4. 10.2.25.4. Example 2
        26. 10.2.26. server
        27. 10.2.27. status
          1. 10.2.27.1. Command options
          2. 10.2.27.2. Example
        28. 10.2.28. tag
          1. 10.2.28.1. Command options
          2. 10.2.28.2. Description
          3. 10.2.28.3. Example 1
          4. 10.2.28.4. Example 2
        29. 10.2.29. unedit
          1. 10.2.29.1. Command options
          2. 10.2.29.2. Description
          3. 10.2.29.3. Example
        30. 10.2.30. update
          1. 10.2.30.1. Command options
          2. 10.2.30.2. Description
          3. 10.2.30.3. Example 1
          4. 10.2.30.4. Example 2
        31. 10.2.31. version
          1. 10.2.31.1. Example
        32. 10.2.32. watch
          1. 10.2.32.1. Command options
          2. 10.2.32.2. Example
        33. 10.2.33. watchers
          1. 10.2.33.1. Command options
          2. 10.2.33.2. Example
    2. 11. Miscellaneous Topics Reference
      1. 11.1. Administrative Files
        1. 11.1.1. Dot Files
        2. 11.1.2. CVS Subdirectory Files
      2. 11.2. CVSROOT Files
        1. 11.2.1. Scripting File Syntax
        2. 11.2.2. The checkoutlist File
        3. 11.2.3. The commitinfo File
        4. 11.2.4. The config File
        5. 11.2.5. The cvsignore File
        6. 11.2.6. The cvswrappers File
        7. 11.2.7. The editinfo File
        8. 11.2.8. The history File
        9. 11.2.9. The loginfo File
        10. 11.2.10. The modules File
        11. 11.2.11. The notify File
        12. 11.2.12. The passwd File
        13. 11.2.13. The postadmin File
        14. 11.2.14. The postproxy File
        15. 11.2.15. The posttag File
        16. 11.2.16. The postwatch File
        17. 11.2.17. The preproxy File
        18. 11.2.18. The rcsinfo File
        19. 11.2.19. The readers File
        20. 11.2.20. The taginfo File
        21. 11.2.21. The users File
        22. 11.2.22. The val-tags File
        23. 11.2.23. The verifymsg File
        24. 11.2.24. The writers File
      3. 11.3. CVSROOT Variables
        1. 11.3.1. Environment Variables in CVSROOT Files
        2. 11.3.2. Internal Variables in CVSROOT Files
        3. 11.3.3. Shell Variables in CVSROOT Files
      4. 11.4. Dates
        1. 11.4.1. Legal Date Formats
          1. 11.4.1.1. ISO 8601
          2. 11.4.1.2. RFC 822 and RFC 1123
        2. 11.4.2. Legal Date Keywords
        3. 11.4.3. Time Zones
      5. 11.5. Environment Variables
        1. 11.5.1. Client Environment Variables
        2. 11.5.2. Server Environment Variables
      6. 11.6. Keywords and Keyword Modes
      7. 11.7. Pattern Matching
        1. 11.7.1. Wildcards
        2. 11.7.2. Regular Expressions
      8. 11.8. Repository Access Methods
        1. 11.8.1. Client Side
        2. 11.8.2. Server Side
        3. 11.8.3. PAM Support
  8. V. Appendixes
    1. A. Clients and Operating Systems
      1. A.1. Multi-Operating-System Clients
        1. A.1.1. gCVS, WinCVS, and MacCVS
          1. A.1.1.1. Installing gCVS
          2. A.1.1.2. Installing WinCVS
          3. A.1.1.3. Installing MacCVS
        2. A.1.2. CVL
        3. A.1.3. CrossVC
        4. A.1.4. jCVS
        5. A.1.5. SmartCVS
      2. A.2. Macintosh Clients
        1. A.2.1. MacCVSClient
        2. A.2.2. MacCVS Pro
      3. A.3. Unix and Linux Clients
        1. A.3.1. Cervisia
        2. A.3.2. Pharmacy
        3. A.3.3. tkCVS
      4. A.4. Windows Clients
        1. A.4.1. CS-CVS
        2. A.4.2. TortoiseCVS
      5. A.5. Integration Tools
        1. A.5.1. abCVS
        2. A.5.2. Anjuta
        3. A.5.3. BBEdit
        4. A.5.4. CVSIn
        5. A.5.5. CWCVS
        6. A.5.6. Eclipse
        7. A.5.7. Jalindi Igloo
        8. A.5.8. NetBeans
        9. A.5.9. VC
        10. A.5.10. Vim
        11. A.5.11. Zeus SCC-CVS
    2. B. Administrators' Tools
      1. B.1. CVS Variants
        1. B.1.1. CVS/MVS
        2. B.1.2. cvs-nserver
        3. B.1.3. CVSNT
        4. B.1.4. DCVS
        5. B.1.5. Meta-CVS
        6. B.1.6. OpenCVS
        7. B.1.7. RISC OS CVS ports
      2. B.2. Distribution Tools
        1. B.2.1. Chora
        2. B.2.2. CVSup
        3. B.2.3. CVSviaFTP
        4. B.2.4. CVSweb
        5. B.2.5. jCVS Web (Formerly jCVS Servlet)
        6. B.2.6. SandWeb
        7. B.2.7. ViewVC
        8. B.2.8. Wandisco
      3. B.3. Logging Tools
        1. B.3.1. CHalogen
        2. B.3.2. clmerge
        3. B.3.3. commit_prep and log_accum
        4. B.3.4. cvs2cl.pl
        5. B.3.5. cvs-exp
        6. B.3.6. log
        7. B.3.7. mfpipe
        8. B.3.8. rcs2log
      4. B.4. Metadata Tools
        1. B.4.1. CVS Monitor
        2. B.4.2. CVSPlot
        3. B.4.3. CVSSearch
        4. B.4.4. CVSTrac
      5. B.5. Converters
        1. B.5.1. rcs-to-cvs
        2. B.5.2. rcs2sccs and sccs2rcs
        3. B.5.3. VSSExtractor
        4. B.5.4. pvcs2rcs
      6. B.6. Miscellaneous
        1. B.6.1. activitymail
        2. B.6.2. cln_hist
        3. B.6.3. CPAN VCS::CVS
        4. B.6.4. cvs_acls
        5. B.6.5. CVSCheck
        6. B.6.6. CVSFS
        7. B.6.7. CVSlib
        8. B.6.8. CVS Utilities
        9. B.6.9. CVS2vendor
        10. B.6.10. descend
        11. B.6.11. newcvsroot
        12. B.6.12. rcslock
        13. B.6.13. sandbox_status
        14. B.6.14. validate_repo
    3. C. Frequently Asked Questions
      1. C.1. Usage Questions
        1. C.1.1. Creating Projects and Sandboxes
          1. C.1.1.1. How do I start a new project?
          2. C.1.1.2. How do I avoid using a vendor tag and a release tag when I import?
          3. C.1.1.3. How do I list all the projects in a repository?
          4. C.1.1.4. How do I check out all the projects in a repository?
          5. C.1.1.5. How do I get a checkout that doesn't have all that CVS administrative stuff?
          6. C.1.1.6. How do I check out only one file?
        2. C.1.2. Using Sandboxes
          1. C.1.2.1. How do I tell whether there are files in the repository that I haven't checked out? How do I tell which files in my sandbox I haven't committed?
          2. C.1.2.2. How do I clear stickiness?
          3. C.1.2.3. What does "move away (file), it is in the way" mean?
          4. C.1.2.4. How do I rollback or uncommit?
          5. C.1.2.5. How do I recover deleted files?
          6. C.1.2.6. What is the Attic?
          7. C.1.2.7. How do I view changes since a particular date? What about between two dates?
          8. C.1.2.8. How do I view a list of all the files with a given tag?
          9. C.1.2.9. How do I find out which tag was set on a given date, or on what date a given tag was created?
          10. C.1.2.10. How do I retrieve a particular revision when I only know which date the revision was on?
          11. C.1.2.11. What is locking all about?
          12. C.1.2.12. How do I lock files so that only I can commit them?
        3. C.1.3. Using Branches
          1. C.1.3.1. How do I lock a particular branch so no one can commit to it?
          2. C.1.3.2. How do I get the history of all files in a particular branch?
          3. C.1.3.3. How do I check out multiple branches of a project?
          4. C.1.3.4. How do I merge from branch to trunk, or trunk to branch?
          5. C.1.3.5. How do I avoid fixing the same conflicts over and over when I merge branches?
          6. C.1.3.6. How do I remove a branch?
          7. C.1.3.7. How do I branch a branch? Why would I want to?
          8. C.1.3.8. How do I recreate a deleted branch tag?
        4. C.1.4. Managing Projects
          1. C.1.4.1. How do I make a patch?
          2. C.1.4.2. How do I make CVS support symbolic links?
          3. C.1.4.3. How do I import vendor upgrades directly to a branch?
          4. C.1.4.4. How can I share common files between projects?
          5. C.1.4.5. How do I send emails automatically?
      2. C.2. Administration Questions
        1. C.2.1. General Administration
          1. C.2.1.1. How do I install and configure CVS?
          2. C.2.1.2. Will upgrading cause me any problems?
          3. C.2.1.3. How can I automatically create a changelog from CVS?
          4. C.2.1.4. How do I export a current copy automatically when files are committed?
        2. C.2.2. Permissions and Security
          1. C.2.2.1. How can I manage CVS file permissions?
          2. C.2.2.2. How do I get access control for CVS?
          3. C.2.2.3. How do I prevent my users from deleting my repository?
          4. C.2.2.4. How do I let multiple users use the same files?
          5. C.2.2.5. How do I fix permission denied problems?
          6. C.2.2.6. How do I clear file locks?
          7. C.2.2.7. How do I set up pserver?
          8. C.2.2.8. How do I change pserver passwords?
        3. C.2.3. Repositories
          1. C.2.3.1. How do I rename a repository?
          2. C.2.3.2. How do I maintain a repository on Samba/NTFS/etc.?
          3. C.2.3.3. How do I run multiple repositories from one pserver/kserver/gserver invocation?
          4. C.2.3.4. How do I make an anonymous, read-only repository?
          5. C.2.3.5. How do I make several anonymous, read-only repositories?
          6. C.2.3.6. How do I run multiple projects from one repository?
          7. C.2.3.7. How do I make multiple repositories with the same project information? How do I synchronize multiple CVS repositories?
          8. C.2.3.8. How do I move a repository from one server to another?
        4. C.2.4. Final Questions
          1. C.2.4.1. How do I get off the mailing list?
          2. C.2.4.2. How do I make money fast?
  9. About the Author
  10. Colophon
  11. Copyright