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. What Is CVS?
- 1.1. What Is a Versioning System?
- 1.2. Why CVS?
- 1.3. CVS in the Field
2. CVS Quickstart Guide
- 2.1. Installing CVS
- 2.2. Building Your First Repository
- 2.3. Importing Projects
- 2.4. Accessing Remote Repositories
- 2.5. Checking Out Files
- 2.6. Editing Files
- 2.7. Committing Changes
- 2.8. Updating Sandboxes
- 2.9. Adding Files
- 2.10. Removing Files
- 2.11. Exporting and Building Projects
- 2.12. Quick Tips for Success
- 1. What Is CVS?
II. Using CVS
3. Basic Use of CVS
- 3.1. General Information
- 3.2. Sandboxes and Repositories
- 3.3. Committing Changes to the Repository
- 3.4. Updating the Sandbox Files from the Repository
- 3.5. Adding Files to the Repository
- 3.6. Removing Files from the Repository
- 3.7. Moving Files or Directories
- 3.8. Releasing a Sandbox
- 3.9. Keywords
- 3.10. Binary Files and Wrappers
- 3.11. Specifying Default Command Options
4. Tagging and Branching
- 4.1.1. Tag Names
- 4.1.2. Reserved Tag Names
- 4.1.3. Tagging by Sandbox
- 4.1.4. Tagging by Date or Revision
- 4.1.5. Retrieving Tagged Files
- 4.1.6. Removing and Moving Tags
- 4.1.7. Removed Files
- 4.1.8. Tagging Strategies
- 4.2. Stickiness
- 4.3.1. Uses for Branches
- 4.3.2. Making a Branch
- 4.3.3. Retroactive Branching
- 4.3.4. Creating a Branch Sandbox
- 4.3.5. Adding and Removing Files
- 4.3.6. Merging Branches
- 4.3.7. Branch Revision Numbers
- 4.3.8. Magic Branch Numbers
- 4.3.9. Deleting or Moving a Branch
4.4. Branching Strategies
- 4.4.1. Branching Philosophies
- 4.4.2. Branch Styles
- 4.4.3. Branch Policies
- 4.5. Merging Strategies
- 4.1. Tagging
5. Multiple Users
- 5.1. Using Simultaneous Development
- 5.2. Watching a File
- 5.3. Reserving Files
- 5.4. Comparing File Revisions
- 5.5. Displaying Recent Changes
- 5.6. Displaying File History
- 3. Basic Use of CVS
III. CVS Administration
6. Repository Management
- 6.1. Creating a Repository
- 6.2. Deleting a Repository
- 6.3. Securing Your Projects
- 6.4. Repository Structure
6.5. CVSROOT Files
- 6.5.1. Configuration Files
- 6.5.2. Scripting Files
- 6.5.3. Informational Files
- 6.5.4. Variable Expansion
- 6.6. Server Environment Variables
- 6.7. Backing Up a Repository
- 6.8. Distributed Repositories
6.9. Editing a Repository
- 6.9.1. Moving Files and Directories
- 6.9.2. Deleting Files and Directories
- 6.9.3. Deleting a Project
- 6.9.4. Editing a Project’s RCS Files
- 6.9.5. Clearing Locks
- 6.10. Sandbox Structure
- 6.11. Client Environment Variables
- 6.12. Exit Status
7. Project Management
- 7.1. Creating a Project
- 7.2. Distributing Files
7.3. Running Scripts
- 7.3.1. Working with Scripting Files
- 7.3.2. Common Syntax
- 7.3.3. The modules File
- 7.3.4. The commitinfo File
- 7.3.5. The loginfo File
- 7.3.6. The postadmin File
- 7.3.7. The postproxy File
- 7.3.8. The posttag File
- 7.3.9. The postwatch File
- 7.3.10. The preproxy File
- 7.3.11. The rcsinfo File
- 7.3.12. The taginfo File
- 7.3.13. The verifymsg File
- 7.4. Interfacing with External Programs
- 7.5. Tools
- 7.6. Strategies and Practices
8. Remote Repositories
- 8.1. Specifying Repository Paths
- 8.2. Method Options
- 8.3. The local Access Method
- 8.4. The ext and server Access Methods
- 8.5. The fork Access Method
- 8.6. The gserver Access Method
- 8.7. The kserver Access Method
- 8.8. The pserver Access Method
- 8.9. Using inetd with gserver, kserver, and pserver
- 8.10. PAM
- 9.1. General Troubleshooting Techniques
- 9.2. Connectivity Problems
- 9.3. Filename Problems
- 9.4. Line-Ending Problems
- 9.5. Permission Problems
- 9.6. Lock Files
- 9.7. Time Issues
- 6. Repository Management
10. Command Reference
- 10.1. CVS Command-Line Options
10.2. CVS Commands
- 10.2.1. add
- 10.2.2. admin
- 10.2.3. annotate
- 10.2.4. checkout
- 10.2.5. commit
- 10.2.6. diff
- 10.2.7. edit
- 10.2.8. editors
- 10.2.9. export
- 10.2.10. history
- 10.2.11. import
- 10.2.12. init
- 10.2.13. kserver
- 10.2.14. log
- 10.2.15. login
- 10.2.16. logout
- 10.2.17. ls
- 10.2.18. pserver
- 10.2.19. rannotate
- 10.2.20. rdiff
- 10.2.21. release
- 10.2.22. remove
- 10.2.23. rlog
- 10.2.24. rls
- 10.2.25. rtag
- 10.2.26. server
- 10.2.27. status
- 10.2.28. tag
- 10.2.29. unedit
- 10.2.30. update
- 10.2.31. version
- 10.2.32. watch
- 10.2.33. watchers
11. Miscellaneous Topics Reference
- 11.1. Administrative Files
11.2. CVSROOT Files
- 11.2.1. Scripting File Syntax
- 11.2.2. The checkoutlist File
- 11.2.3. The commitinfo File
- 11.2.4. The config File
- 11.2.5. The cvsignore File
- 11.2.6. The cvswrappers File
- 11.2.7. The editinfo File
- 11.2.8. The history File
- 11.2.9. The loginfo File
- 11.2.10. The modules File
- 11.2.11. The notify File
- 11.2.12. The passwd File
- 11.2.13. The postadmin File
- 11.2.14. The postproxy File
- 11.2.15. The posttag File
- 11.2.16. The postwatch File
- 11.2.17. The preproxy File
- 11.2.18. The rcsinfo File
- 11.2.19. The readers File
- 11.2.20. The taginfo File
- 11.2.21. The users File
- 11.2.22. The val-tags File
- 11.2.23. The verifymsg File
- 11.2.24. The writers File
- 11.3. CVSROOT Variables
- 11.4. Dates
- 11.5. Environment Variables
- 11.6. Keywords and Keyword Modes
- 11.7. Pattern Matching
- 11.8. Repository Access Methods
- 10. Command Reference
A. Clients and Operating Systems
- A.1. Multi-Operating-System Clients
- A.2. Macintosh Clients
- A.3. Unix and Linux Clients
- A.4. Windows Clients
- A.5. Integration Tools
B. Administrators’ Tools
- B.1. CVS Variants
- B.2. Distribution Tools
- B.3. Logging Tools
- B.4. Metadata Tools
- B.5. Converters
- B.6. Miscellaneous
C. Frequently Asked Questions
C.1. Usage Questions
C.1.1. Creating Projects and Sandboxes
- C.1.1.1. How do I start a new project?
- C.1.1.2. How do I avoid using a vendor tag and a release tag when I import?
- C.1.1.3. How do I list all the projects in a repository?
- C.1.1.4. How do I check out all the projects in a repository?
- C.1.1.5. How do I get a checkout that doesn’t have all that CVS administrative stuff?
- C.1.1.6. How do I check out only one file?
C.1.2. Using Sandboxes
- 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?
- C.1.2.2. How do I clear stickiness?
- C.1.2.3. What does “move away (file), it is in the way” mean?
- C.1.2.4. How do I rollback or uncommit?
- C.1.2.5. How do I recover deleted files?
- C.1.2.6. What is the Attic?
- C.1.2.7. How do I view changes since a particular date? What about between two dates?
- C.1.2.8. How do I view a list of all the files with a given tag?
- 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?
- C.1.2.10. How do I retrieve a particular revision when I only know which date the revision was on?
- C.1.2.11. What is locking all about?
- C.1.2.12. How do I lock files so that only I can commit them?
C.1.3. Using Branches
- C.1.3.1. How do I lock a particular branch so no one can commit to it?
- C.1.3.2. How do I get the history of all files in a particular branch?
- C.1.3.3. How do I check out multiple branches of a project?
- C.1.3.4. How do I merge from branch to trunk, or trunk to branch?
- C.1.3.5. How do I avoid fixing the same conflicts over and over when I merge branches?
- C.1.3.6. How do I remove a branch?
- C.1.3.7. How do I branch a branch? Why would I want to?
- C.1.3.8. How do I recreate a deleted branch tag?
- C.1.4. Managing Projects
- C.1.1. Creating Projects and Sandboxes
C.2. Administration Questions
- C.2.1. General Administration
C.2.2. Permissions and Security
- C.2.2.1. How can I manage CVS file permissions?
- C.2.2.2. How do I get access control for CVS?
- C.2.2.3. How do I prevent my users from deleting my repository?
- C.2.2.4. How do I let multiple users use the same files?
- C.2.2.5. How do I fix permission denied problems?
- C.2.2.6. How do I clear file locks?
- C.2.2.7. How do I set up pserver?
- C.2.2.8. How do I change pserver passwords?
- C.2.3.1. How do I rename a repository?
- C.2.3.2. How do I maintain a repository on Samba/NTFS/etc.?
- C.2.3.3. How do I run multiple repositories from one pserver/kserver/gserver invocation?
- C.2.3.4. How do I make an anonymous, read-only repository?
- C.2.3.5. How do I make several anonymous, read-only repositories?
- C.2.3.6. How do I run multiple projects from one repository?
- C.2.3.7. How do I make multiple repositories with the same project information? How do I synchronize multiple CVS repositories?
- C.2.3.8. How do I move a repository from one server to another?
- C.2.4. Final Questions
- C.1. Usage Questions
- A. Clients and Operating Systems
- About the Author
- Title: Essential CVS, 2nd Edition
- Release date: November 2006
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596527037
You might also like
CVS, the Concurrent Versions System, is the popular source-code management tool that frees developers from the …
CVS Pocket Reference, 2nd Edition
The beauty of open source is making code freely available. The curse is trying to organize …
The Anti-Racist Organization
Tackle systemic racism in the workplace with practical strategies In The Anti-Racist Organization: Dismantling Systemic Racism …
Selling Your Expertise
Build your book of business and sell more services with this expert guide for knowledge professionals …