Cover image for Essential CVS

Book description

CVS, the Concurrent Versions System, is the popular source-code management tool that frees developers from the chaos that too often ensues when multiple users work on the same file. An open source technology that is available on most computer platforms, including Windows® and Mac OS® X, CVS is widely used to manage program code, web site content, and to track changes made to system configuration files. Multiple users can check out files from a directory tree, make changes, and then commit those changes back into the directory. If two developers modify the same file, CVS enables both sets of changes to be merged together into one final file. Although CVS is a lifesaver in many development scenarios, it suffers from poor documentation. But with Essential CVS, developers can have it all: the order that CVS brings and the comprehensive documentation developers need. Essential CVS is a complete and easy-to-follow reference that helps programmers and system administrators apply order to the task of managing large quantities of documents. The book covers basic concepts and usage of CVS, and features a comprehensive reference for CVS commands--including a handy Command Reference Card for quick, on-the-job checks. The book also includes advanced information on all aspects of CVS that involve automation, logging, branching and merging, and "watches." Readers will find in-depth coverage of the following:

  • Installing CVS and building your first repository

  • Basic use of CVS, including importing projects, checking out projects, committing changes, and updating projects

  • Tagging, branching and merging

  • Working with multiple users

  • Clients, operating systems, and IDEs

  • Repository management and managing remote repositories

  • Project administration, including bug tracking systems, enforcing log messages, history and annotation, and more.

  • Troubleshooting

Version control is essential to maintaining order in any project, large or small. Any CVS user, from beginners to team leaders and system administrators, will find this practical guide to CVS indispensable in getting the most from this valuable tool.

Table of Contents

  1. Essential CVS
    1. Preface
      1. Structure of the Book
      2. Conventions Used in This Book
      3. Learning More About CVS
        1. Web Site and Manpages
        2. Related Books
        3. Support
      4. We’d Like to Hear from You
      5. Acknowledgments
    2. I. Introduction
      1. 1. What Is CVS?
        1. What Is a Versioning System?
        2. CVS in the Field
          1. System Administration
          2. Software Development
          3. Content-Controlled Publishing
          4. Other Uses for CVS
      2. 2. CVS Quickstart Guide
        1. Installing CVS
          1. Installing and Building CVS From Source
          2. Using apt to Install CVS
          3. Using rpm to Install CVS
          4. Using yast to Install CVS
        2. Building Your First Repository
        3. Importing Projects
        4. Accessing Remote Repositories
        5. Checking Out Files
        6. Committing Changes
        7. Updating Sandboxes
        8. Adding Files
        9. Removing Files
        10. Quick Tips for Success
    3. II. Using CVS
      1. 3. Basic Use of CVS
        1. General Information
          1. Lock Files
          2. CVS Command Syntax
          3. Choosing Your Editor
        2. Sandboxes and Repositories
          1. Permissions and Ownership
          2. Repository Paths
          3. Creating a Sandbox
          4. Changing Repositories
          5. Editing Sandbox Files
        3. Committing Changes to the Repository
          1. Setting Revision Numbers
          2. When to Commit
        4. Checking File Status
        5. Updating the Sandbox Files from the Repository
          1. Retrieving Past Revisions of a File
            1. Retrieving a static file
            2. Reverting changes
            3. Retrieving by date
          2. When to Update
          3. Conflicts and Merging
        6. Adding Files to the Repository
        7. Removing Files from the Repository
          1. Retrieving Removed Files
            1. Method 1
            2. Method 2
            3. Method 3
          2. Removing Directories
        8. Moving Files or Directories
          1. Moving Files
          2. Moving Directories
        9. Releasing a Sandbox
        10. Keywords
        11. Binary Files and Wrappers
        12. Specifying Default Command Options
      2. 4. Tagging and Branching
        1. Tagging
          1. Tagging by Sandbox
          2. Tagging by Date or Revision
          3. Retrieving Tagged Files
          4. Removing and Moving Tags
            1. Removing a tag
            2. Moving a tag
            3. Moving or removing tags from Attic files
            4. Renaming a tag
          5. Removed Files
          6. Tagging Strategies
        2. Stickiness
        3. Branching
          1. Uses for Branches
          2. Making a Branch
          3. Retroactive Branching
          4. Creating a Branch Sandbox
          5. Adding and Removing Files
          6. Merging Branches
            1. Merging from branch to trunk
            2. Merging from trunk to branch
            3. Merging from branch to branch
            4. Keyword issues when merging branches
            5. Merging binary and special files
          7. Branch Revision Numbers
          8. Magic Branch Numbers
          9. Deleting or Moving a Branch
        4. Branching Strategies
          1. Branching Philosophies
            1. Basically stable
            2. Basically unstable
          2. Branch Styles
            1. Long branch, merging to branch
            2. Long branch, merging to trunk
            3. Long branch, merging both trunk and branch
            4. Short branches
            5. Nested branches
          3. Branch Policies
      3. 5. Multiple Users
        1. Using Simultaneous Development
        2. Watching a File
          1. Configuring Watches
          2. Marking a File for Watching
          3. Setting Your Watch
          4. Editing a File
            1. Aborting an edit
            2. Committing an edit
          5. Listing Watchers and Editors
        3. Reserving Files
          1. Installing and Configuring rcslock
          2. Reserving a File
          3. Committing a File
          4. Releasing a File
          5. Combining rcslock with watch
        4. Comparing File Revisions
        5. Displaying Recent Changes
        6. Displaying File History
    4. III. CVS Administration
      1. 6. Repository Management
        1. Creating a Repository
        2. Deleting a Repository
        3. Securing Your Projects
          1. Repository Root Directory
          2. CVSROOT Directory
          3. Project Directories
          4. General Information on Security
        4. Repository Structure
          1. CVS Subdirectory
          2. Locks
        5. CVSROOT Files
          1. Configuration Files
            1. config
            2. cvswrappers
            3. modules
            4. notify
          2. Scripting Files
            1. commitinfo
            2. editinfo
            3. loginfo
            4. rcsinfo
            5. taginfo
            6. verifymsg
          3. Informational Files
            1. checkoutlist
            2. cvsignore
            3. history
            4. passwd
            5. readers
            6. users
            7. val-tags
            8. writers
          4. Variable Expansion
        6. Server Environment Variables
        7. Backing Up a Repository
          1. Freezing a Repository
          2. Restoring a Backup
          3. Mirroring a Repository
        8. Editing a Repository
          1. Moving Files and Directories
            1. Prerequisites to moving a file
            2. Moving a file: Method 1
            3. Moving a file: Method 2
            4. Moving a directory: Method 1
            5. Moving a directory: Method 2
          2. Deleting Files and Directories
            1. Deleting a file
            2. Deleting a directory
          3. Deleting a Project
          4. Editing a Project’s RCS Files
          5. Clearing Locks
        9. Sandbox Structure
          1. CVS Subdirectories
          2. Dot Files in Sandbox Directories
          3. Dot Files in User Home Directories
        10. Client Environment Variables
        11. Exit Status
      2. 7. Project Management
        1. Creating a Project
          1. Preparing a Project
          2. Importing a Project
          3. Vendor Branches
          4. Alternatives to Importing
            1. Creating a project with cvs add
            2. Creating a project by editing the repository
          5. Importing from Other Version Control Systems
        2. Distributing Files
          1. checkout and update
          2. Exporting Files
        3. Running Scripts
          1. Working with Scripting Files
          2. Common Syntax
          3. The modules File
            1. Alias modules
            2. Regular modules
            3. Module options and scripts
          4. The commitinfo File
          5. The loginfo File
          6. The rcsinfo File
          7. The taginfo File
          8. The verifymsg File
        4. Interfacing with External Programs
          1. Interfacing with Bug Trackers
          2. Interfacing with Build Scripts
          3. Enforcing Standards
        5. Tools
          1. The cvs admin Command
          2. The cvs history Command
            1. The history file
            2. cvs history output
            3. Using the cvs history command
        6. Strategies and Practices
          1. Tag and Branch Strategies
          2. Automation Strategies
          3. Project Structure and Sandboxes
          4. Practices for Development
      3. 8. Remote Repositories
        1. Specifying Repository Paths
        2. The local Access Method
        3. The ext and server Access Methods
          1. rsh
          2. The server Access Method
          3. SSH
          4. Other Connection Programs
        4. The fork Access Method
        5. The gserver Access Method
        6. The kserver Access Method
        7. The pserver Access Method
          1. The passwd File
          2. The readers and writers Files
          3. login and logout
          4. Security
        8. Using inetd with gserver, kserver, and pserver
          1. Client Ports
      4. 9. Troubleshooting
        1. General Troubleshooting Techniques
          1. Finding Help
            1. Mail and newsgroups
            2. The Web
          2. Reporting Bugs
          3. Making Your Own Changes to CVS
        2. Connectivity Problems
          1. Root and Repository File Problems
          2. Misconfigured Access Methods
          3. Isolating Connectivity Problems
          4. rsh-Replacement Problems
        3. Filename Problems
        4. Line-Ending Problems
        5. Permission Problems
          1. pserver Problems
        6. Lock Files
    5. IV. Reference
      1. 10. Command Reference
        1. CVS Command-Line Options
        2. CVS Commands
          1. add
          2. admin
          3. annotate
          4. checkout
          5. commit
          6. diff
          7. edit
          8. editors
          9. export
          10. history
          11. import
          12. init
          13. kserver
          14. log
          15. login
          16. logout
          17. pserver
          18. rannotate
          19. rdiff
          20. release
          21. remove
          22. rlog
          23. rtag
          24. server
          25. status
          26. tag
          27. unedit
          28. update
          29. version
          30. watch
          31. watchers
      2. 11. Miscellaneous Topics Reference
        1. Administrative Files
          1. Dot Files
          2. CVS Subdirectory Files
        2. CVSROOT Files
          1. The checkoutlist File
          2. The commitinfo File
          3. The config File
          4. The cvsignore File
          5. The cvswrappers File
          6. The editinfo File
          7. The history File
          8. The loginfo File
          9. The modules File
          10. The notify File
          11. The passwd File
          12. The rcsinfo File
          13. The readers File
          14. The taginfo File
          15. The users File
          16. The val-tags File
          17. The verifymsg File
          18. The writers File
        3. CVSROOT Variables
          1. Environment Variables in CVSROOT Files
          2. Internal Variables in CVSROOT Files
          3. Shell Variables in CVSROOT Files
        4. Dates
          1. Legal Date Formats
            1. ISO 8601
            2. RFC 822 and RFC 1123
          2. Legal Date Keywords
          3. Time Zones
        5. Environment Variables
          1. Client Environment Variables
          2. Server Environment Variables
        6. Keywords and Keyword Modes
        7. Pattern Matching
          1. Wildcards
          2. Regular Expressions
        8. Repository Access Methods
          1. Client Side
          2. Server Side
    6. V. Appendixes
      1. A. Clients and Operating Systems
        1. Multi-Operating-System Clients
          1. gCVS, WinCVS, and MacCVS
            1. Installing gCVS
            2. Installing WinCVS
            3. Installing MacCVS
          2. jCVS
          3. SmartCVS
        2. Macintosh Clients
          1. MacCVSClient
          2. MacCVS Pro
        3. Unix and Linux Clients
          1. Cervisia
          2. LinCVS
          3. Pharmacy
          4. tkCVS
        4. Windows Clients
          1. TortoiseCVS
        5. Integration Tools
          1. abCVS
          2. Anjuta
          3. BBEdit
          4. CVSIn
          5. CWCVS
          6. Eclipse
          7. Jalindi Igloo
          8. NetBeans
          9. PCL-CVS
          10. VC
          11. Vim
          12. Zeus SCC-CVS
      2. B. Administrator’s Tools
        1. CVS Variants
          1. CVS/MVS
          2. CVSNT
          3. Meta-CVS
        2. Distribution Tools
          1. Chora
          2. CVSup
          3. CVSviaFTP
          4. CVSweb
          5. CVS Web Client
          6. jCVS Servlet
          7. SandWeb
          8. ViewCVS
        3. Logging Tools
          1. CHalogen
          2. clmerge
          3. commit_prep and log_accum
          4. cvs2cl.pl
          5. cvs2html
          6. cvs-exp
          7. log
          8. mfpipe
          9. rcs2log
        4. Metadata Tools
          1. CVS Monitor
          2. CVSPlot
          3. CVSSearch
          4. cvsstat and cvschk
        5. Convertors
          1. rcs-to-cvs
          2. rcs2sccs and sccs2rcs
          3. VSS2CVS
          4. pvcs2rcs
        6. Miscellaneous
          1. cln_hist
          2. cvs_acls
          3. CVSCheck
          4. CVSFS
          5. CVS2vendor
          6. descend
          7. rcslock
    7. C. CVS Quick Reference
      1. CVS Options
      2. Repository Access
      3. Common CVS Tasks
      4. Sandbox Commands
      5. Synchronization Commands
      6. File Commands
      7. Branch Commands
      8. Tag Commands
    8. Index
    9. Colophon