[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
trans-coord/manual/cvs cvs.dvi.gz cvs.html cvs....
From: |
Pavel Kharitonov |
Subject: |
trans-coord/manual/cvs cvs.dvi.gz cvs.html cvs.... |
Date: |
Mon, 28 Dec 2015 15:58:35 +0000 |
CVSROOT: /web/trans-coord
Module name: trans-coord
Changes by: Pavel Kharitonov <ineiev> 15/12/28 15:58:34
Added files:
manual/cvs : cvs.dvi.gz cvs.html cvs.html.gz
cvs.html_node.tar.gz cvs.info.tar.gz cvs.pdf
cvs.texi.tar.gz cvs.txt cvs.txt.gz index.html
manual/cvs/html_node: A-sample-session.html
Accessing-branches.html
Adding-and-removing.html Adding-files.html
Administrative-files.html
Alias-modules.html Ampersand-modules.html
Assigning-revisions.html Attic.html
Avoiding-substitution.html BUGS.html
Backing-up.html
Binary-files-in-imports.html
Binary-files.html Binary-howto.html
Binary-why.html
Branches-and-revisions.html
Branches-motivation.html
Branching-and-merging.html Builds.html
CVS-commands.html CVS-in-repository.html
CVSROOT-storage.html Choosing-a-model.html
Cleaning-up.html
Committing-your-changes.html
Common-options.html Compatibility.html
Concurrency.html Conflicts-example.html
Connecting-via-fork.html
Connecting-via-rsh.html Connection.html
Creating-a-branch.html
Creating-a-repository.html Credits.html
Defining-the-module.html
Editing-files.html
Environment-variables.html
Error-messages.html
Excluding-directories.html
Exit-status.html File-permissions.html
File-status.html First-import.html
From-files.html
From-other-version-control-systems.html
From-scratch.html
GSSAPI-authenticated.html
Getting-Notified.html
Getting-the-source.html
Global-options.html History-browsing.html
Index.html Informing-others.html
Inside.html
Intro-administrative-files.html
Invoking-CVS.html
Keeping-a-checked-out-copy.html
Kerberos-authenticated.html
Keyword-list.html
Keyword-substitution.html
Keywords-in-imports.html Line-formats.html
Line-group-formats.html Locks.html
Log-keyword.html Magic-branch-numbers.html
Merging-a-branch.html
Merging-adds-and-removals.html
Merging-and-keywords.html
Merging-more-than-once.html
Merging-two-revisions.html
Modifying-tags.html Module-options.html
Module-program-options.html
Moving-a-repository.html
Moving-directories.html Moving-files.html
Multiple-developers.html
Multiple-repositories.html
Multiple-vendor-branches.html
Other-problems.html Outside.html
Overview.html Password-authenticated.html
Password-authentication-client.html
Password-authentication-security.html
Password-authentication-server.html
Read_002donly-access.html
Recursive-behavior.html
Regular-modules.html
Remote-repositories.html
Removing-directories.html
Removing-files.html Rename-by-copying.html
Repository-files.html
Repository-storage.html Repository.html
Reverting-local-changes.html
Revision-management.html
Revision-numbers.html Revisions.html
Server-requirements.html
Server-temporary-directory.html
Setting-a-watch.html
Setting-up-the-files.html
Special-Files.html
Specifying-a-repository.html
Starting-a-new-project.html
Sticky-tags.html Structure.html
Substitution-modes.html
Tagging-add_002fremove.html
Tagging-by-date_002ftag.html
Tagging-the-working-directory.html
Tags.html Tracking-sources.html
Trigger-Script-Security.html
Trigger-Scripts.html Troubleshooting.html
Update-imports.html Updating-a-file.html
Using-keywords.html Variables.html
Versions-revisions-releases.html
Viewing-differences.html
Watch-information.html
Watches-Compatibility.html Watches.html
What-is-CVS-not_003f.html
What-is-CVS_003f.html When-to-commit.html
Windows-permissions.html
Working-directory-storage.html
Wrappers.html _007e_002f_002ecvsrc.html
add-examples.html add-options.html
add.html admin-options.html admin.html
annotate-example.html
annotate-options.html annotate.html
checkout-examples.html
checkout-options.html checkout.html
checkoutlist.html commit-examples.html
commit-files.html commit-options.html
commit.html commitinfo.html config.html
cvsignore.html diff-examples.html
diff-options.html diff.html
editinfo-example.html editinfo.html
export-options.html export.html
history-database.html history-file.html
history-options.html history.html
import-examples.html import-options.html
import-output.html import.html index.html
log-examples.html log-messages.html
log-options.html log.html
loginfo-example.html loginfo.html
modules.html rcsinfo.html
rdiff-examples.html rdiff-options.html
rdiff.html release-examples.html
release-options.html release-output.html
release.html remove-examples.html
remove-options.html remove.html
syntax.html taginfo.html
update-options.html update-output.html
update.html user_002ddefined-logging.html
verifymsg.html
Log message:
Add cvs manual RT #1073518.
CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.dvi.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.html.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.html_node.tar.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.info.tar.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.pdf?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.texi.tar.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.txt?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/cvs.txt.gz?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/index.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/A-sample-session.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Accessing-branches.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Adding-and-removing.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Adding-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Administrative-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Alias-modules.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Ampersand-modules.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Assigning-revisions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Attic.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Avoiding-substitution.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/BUGS.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Backing-up.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Binary-files-in-imports.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Binary-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Binary-howto.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Binary-why.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Branches-and-revisions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Branches-motivation.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Branching-and-merging.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Builds.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/CVS-commands.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/CVS-in-repository.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/CVSROOT-storage.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Choosing-a-model.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Cleaning-up.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Committing-your-changes.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Common-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Compatibility.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Concurrency.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Conflicts-example.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Connecting-via-fork.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Connecting-via-rsh.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Connection.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Creating-a-branch.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Creating-a-repository.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Credits.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Defining-the-module.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Editing-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Environment-variables.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Error-messages.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Excluding-directories.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Exit-status.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/File-permissions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/File-status.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/First-import.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/From-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/From-other-version-control-systems.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/From-scratch.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/GSSAPI-authenticated.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Getting-Notified.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Getting-the-source.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Global-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/History-browsing.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Index.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Informing-others.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Inside.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Intro-administrative-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Invoking-CVS.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Keeping-a-checked-out-copy.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Kerberos-authenticated.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Keyword-list.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Keyword-substitution.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Keywords-in-imports.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Line-formats.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Line-group-formats.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Locks.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Log-keyword.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Magic-branch-numbers.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Merging-a-branch.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Merging-adds-and-removals.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Merging-and-keywords.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Merging-more-than-once.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Merging-two-revisions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Modifying-tags.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Module-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Module-program-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Moving-a-repository.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Moving-directories.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Moving-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Multiple-developers.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Multiple-repositories.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Multiple-vendor-branches.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Other-problems.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Outside.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Overview.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Password-authenticated.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Password-authentication-client.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Password-authentication-security.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Password-authentication-server.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Read_002donly-access.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Recursive-behavior.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Regular-modules.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Remote-repositories.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Removing-directories.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Removing-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Rename-by-copying.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Repository-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Repository-storage.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Repository.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Reverting-local-changes.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Revision-management.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Revision-numbers.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Revisions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Server-requirements.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Server-temporary-directory.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Setting-a-watch.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Setting-up-the-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Special-Files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Specifying-a-repository.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Starting-a-new-project.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Sticky-tags.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Structure.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Substitution-modes.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Tagging-add_002fremove.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Tagging-by-date_002ftag.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Tagging-the-working-directory.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Tags.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Tracking-sources.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Trigger-Script-Security.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Trigger-Scripts.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Troubleshooting.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Update-imports.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Updating-a-file.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Using-keywords.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Variables.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Versions-revisions-releases.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Viewing-differences.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Watch-information.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Watches-Compatibility.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Watches.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/What-is-CVS-not_003f.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/What-is-CVS_003f.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/When-to-commit.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Windows-permissions.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Working-directory-storage.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/Wrappers.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/_007e_002f_002ecvsrc.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/add-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/add-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/add.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/admin-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/admin.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/annotate-example.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/annotate-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/annotate.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/checkout-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/checkout-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/checkout.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/checkoutlist.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/commit-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/commit-files.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/commit-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/commit.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/commitinfo.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/config.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/cvsignore.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/diff-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/diff-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/diff.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/editinfo-example.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/editinfo.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/export-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/export.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/history-database.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/history-file.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/history-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/history.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/import-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/import-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/import-output.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/import.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/index.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/log-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/log-messages.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/log-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/log.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/loginfo-example.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/loginfo.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/modules.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/rcsinfo.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/rdiff-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/rdiff-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/rdiff.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/release-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/release-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/release-output.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/release.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/remove-examples.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/remove-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/remove.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/syntax.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/taginfo.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/update-options.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/update-output.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/update.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/user_002ddefined-logging.html?cvsroot=trans-coord&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/trans-coord/manual/cvs/html_node/verifymsg.html?cvsroot=trans-coord&rev=1.1
Patches:
Index: cvs.dvi.gz
===================================================================
RCS file: cvs.dvi.gz
diff -N cvs.dvi.gz
Binary files /dev/null and /tmp/cvsxK6bcI differ
Index: cvs.html
===================================================================
RCS file: cvs.html
diff -N cvs.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ cvs.html 28 Dec 2015 15:57:42 -0000 1.1
@@ -0,0 +1,15873 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="#Top" rel="start" title="Top">
+<link href="#Index" rel="index" title="Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="dir.html#Top" rel="up" title="(dir)">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<h1 class="settitle" align="center">CVS—Concurrent Versions System
v1.11.23</h1>
+
+
+
+
+
+
+
+
+
+
+
+
+<a name="SEC_Overview"></a>
+<h2 class="shortcontents-heading">Short Table of Contents</h2>
+
+<div class="shortcontents">
+<ul class="no-bullet">
+<li><a name="stoc-Overview-1" href="#toc-Overview-1">1 Overview</a></li>
+<li><a name="stoc-The-Repository" href="#toc-The-Repository">2 The
Repository</a></li>
+<li><a name="stoc-Starting-a-project-with-CVS"
href="#toc-Starting-a-project-with-CVS">3 Starting a project with CVS</a></li>
+<li><a name="stoc-Revisions-1" href="#toc-Revisions-1">4 Revisions</a></li>
+<li><a name="stoc-Branching-and-merging-1"
href="#toc-Branching-and-merging-1">5 Branching and merging</a></li>
+<li><a name="stoc-Recursive-behavior-1" href="#toc-Recursive-behavior-1">6
Recursive behavior</a></li>
+<li><a
name="stoc-Adding_002c-removing_002c-and-renaming-files-and-directories"
href="#toc-Adding_002c-removing_002c-and-renaming-files-and-directories">7
Adding, removing, and renaming files and directories</a></li>
+<li><a name="stoc-History-browsing-1" href="#toc-History-browsing-1">8 History
browsing</a></li>
+<li><a name="stoc-Handling-binary-files" href="#toc-Handling-binary-files">9
Handling binary files</a></li>
+<li><a name="stoc-Multiple-developers-1" href="#toc-Multiple-developers-1">10
Multiple developers</a></li>
+<li><a name="stoc-Revision-management-1" href="#toc-Revision-management-1">11
Revision management</a></li>
+<li><a name="stoc-Keyword-substitution-1"
href="#toc-Keyword-substitution-1">12 Keyword substitution</a></li>
+<li><a name="stoc-Tracking-third_002dparty-sources"
href="#toc-Tracking-third_002dparty-sources">13 Tracking third-party
sources</a></li>
+<li><a name="stoc-How-your-build-system-interacts-with-CVS"
href="#toc-How-your-build-system-interacts-with-CVS">14 How your build system
interacts with CVS</a></li>
+<li><a name="stoc-Special-Files-1" href="#toc-Special-Files-1">15 Special
Files</a></li>
+<li><a name="stoc-Guide-to-CVS-commands"
href="#toc-Guide-to-CVS-commands">Appendix A Guide to CVS commands</a></li>
+<li><a name="stoc-Quick-reference-to-CVS-commands"
href="#toc-Quick-reference-to-CVS-commands">Appendix B Quick reference to CVS
commands</a></li>
+<li><a name="stoc-Reference-manual-for-Administrative-files"
href="#toc-Reference-manual-for-Administrative-files">Appendix C Reference
manual for Administrative files</a></li>
+<li><a name="stoc-All-environment-variables-which-affect-CVS"
href="#toc-All-environment-variables-which-affect-CVS">Appendix D All
environment variables which affect CVS</a></li>
+<li><a name="stoc-Compatibility-between-CVS-Versions"
href="#toc-Compatibility-between-CVS-Versions">Appendix E Compatibility between
CVS Versions</a></li>
+<li><a name="stoc-Troubleshooting-1" href="#toc-Troubleshooting-1">Appendix F
Troubleshooting</a></li>
+<li><a name="stoc-Credits-1" href="#toc-Credits-1">Appendix G Credits</a></li>
+<li><a name="stoc-Dealing-with-bugs-in-CVS-or-this-manual"
href="#toc-Dealing-with-bugs-in-CVS-or-this-manual">Appendix H Dealing with
bugs in CVS or this manual</a></li>
+<li><a name="stoc-Index-1" href="#toc-Index-1">Index</a></li>
+</ul>
+</div>
+
+
+<a name="SEC_Contents"></a>
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="no-bullet">
+ <li><a name="toc-Overview-1" href="#Overview">1 Overview</a>
+ <ul class="no-bullet">
+ <li><a name="toc-What-is-CVS_003f-1" href="#What-is-CVS_003f">1.1 What is
CVS?</a></li>
+ <li><a name="toc-What-is-CVS-not_003f-1" href="#What-is-CVS-not_003f">1.2
What is CVS not?</a></li>
+ <li><a name="toc-A-sample-session-1" href="#A-sample-session">1.3 A sample
session</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Getting-the-source-1" href="#Getting-the-source">1.3.1
Getting the source</a></li>
+ <li><a name="toc-Committing-your-changes-1"
href="#Committing-your-changes">1.3.2 Committing your changes</a></li>
+ <li><a name="toc-Cleaning-up-1" href="#Cleaning-up">1.3.3 Cleaning
up</a></li>
+ <li><a name="toc-Viewing-differences-1"
href="#Viewing-differences">1.3.4 Viewing differences</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-The-Repository" href="#Repository">2 The Repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Telling-CVS-where-your-repository-is"
href="#Specifying-a-repository">2.1 Telling CVS where your repository
is</a></li>
+ <li><a name="toc-How-data-is-stored-in-the-repository"
href="#Repository-storage">2.2 How data is stored in the repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Where-files-are-stored-within-the-repository"
href="#Repository-files">2.2.1 Where files are stored within the
repository</a></li>
+ <li><a name="toc-File-permissions-1" href="#File-permissions">2.2.2 File
permissions</a></li>
+ <li><a name="toc-File-Permission-issues-specific-to-Windows"
href="#Windows-permissions">2.2.3 File Permission issues specific to
Windows</a></li>
+ <li><a name="toc-The-attic" href="#Attic">2.2.4 The attic</a></li>
+ <li><a name="toc-The-CVS-directory-in-the-repository"
href="#CVS-in-repository">2.2.5 The CVS directory in the repository</a></li>
+ <li><a name="toc-CVS-locks-in-the-repository" href="#Locks">2.2.6 CVS
locks in the repository</a></li>
+ <li><a name="toc-How-files-are-stored-in-the-CVSROOT-directory"
href="#CVSROOT-storage">2.2.7 How files are stored in the CVSROOT
directory</a></li>
+ </ul></li>
+ <li><a name="toc-How-data-is-stored-in-the-working-directory"
href="#Working-directory-storage">2.3 How data is stored in the working
directory</a></li>
+ <li><a name="toc-The-administrative-files"
href="#Intro-administrative-files">2.4 The administrative files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Editing-administrative-files"
href="#Editing-administrative-files">2.4.1 Editing administrative files</a></li>
+ </ul></li>
+ <li><a name="toc-Multiple-repositories-1"
href="#Multiple-repositories">2.5 Multiple repositories</a></li>
+ <li><a name="toc-Creating-a-repository-1"
href="#Creating-a-repository">2.6 Creating a repository</a></li>
+ <li><a name="toc-Backing-up-a-repository" href="#Backing-up">2.7 Backing
up a repository</a></li>
+ <li><a name="toc-Moving-a-repository-1" href="#Moving-a-repository">2.8
Moving a repository</a></li>
+ <li><a name="toc-Remote-repositories-1" href="#Remote-repositories">2.9
Remote repositories</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Server-requirements-1"
href="#Server-requirements">2.9.1 Server requirements</a></li>
+ <li><a name="toc-Connecting-with-rsh-or-ssh"
href="#Connecting-via-rsh">2.9.2 Connecting with rsh or ssh</a></li>
+ <li><a name="toc-Direct-connection-with-password-authentication"
href="#Password-authenticated">2.9.3 Direct connection with password
authentication</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Setting-up-the-server-for-password-authentication"
href="#Password-authentication-server">2.9.3.1 Setting up the server for
password authentication</a></li>
+ <li><a name="toc-Using-the-client-with-password-authentication"
href="#Password-authentication-client">2.9.3.2 Using the client with password
authentication</a></li>
+ <li><a name="toc-Security-considerations-with-password-authentication"
href="#Password-authentication-security">2.9.3.3 Security considerations with
password authentication</a></li>
+ </ul></li>
+ <li><a name="toc-Direct-connection-with-GSSAPI"
href="#GSSAPI-authenticated">2.9.4 Direct connection with GSSAPI</a></li>
+ <li><a name="toc-Direct-connection-with-Kerberos"
href="#Kerberos-authenticated">2.9.5 Direct connection with Kerberos</a></li>
+ <li><a name="toc-Connecting-with-fork" href="#Connecting-via-fork">2.9.6
Connecting with fork</a></li>
+ </ul></li>
+ <li><a name="toc-Read_002donly-repository-access"
href="#Read_002donly-access">2.10 Read-only repository access</a></li>
+ <li><a name="toc-Temporary-directories-for-the-server"
href="#Server-temporary-directory">2.11 Temporary directories for the
server</a></li>
+ </ul></li>
+ <li><a name="toc-Starting-a-project-with-CVS"
href="#Starting-a-new-project">3 Starting a project with CVS</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Setting-up-the-files-1" href="#Setting-up-the-files">3.1
Setting up the files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Creating-a-directory-tree-from-a-number-of-files"
href="#From-files">3.1.1 Creating a directory tree from a number of
files</a></li>
+ <li><a name="toc-Creating-Files-From-Other-Version-Control-Systems"
href="#From-other-version-control-systems">3.1.2 Creating Files From Other
Version Control Systems</a></li>
+ <li><a name="toc-Creating-a-directory-tree-from-scratch"
href="#From-scratch">3.1.3 Creating a directory tree from scratch</a></li>
+ </ul></li>
+ <li><a name="toc-Defining-the-module-1" href="#Defining-the-module">3.2
Defining the module</a></li>
+ </ul></li>
+ <li><a name="toc-Revisions-1" href="#Revisions">4 Revisions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Revision-numbers-1" href="#Revision-numbers">4.1 Revision
numbers</a></li>
+ <li><a name="toc-Versions_002c-revisions-and-releases"
href="#Versions-revisions-releases">4.2 Versions, revisions and
releases</a></li>
+ <li><a name="toc-Assigning-revisions-1" href="#Assigning-revisions">4.3
Assigning revisions</a></li>
+ <li><a name="toc-Tags_002d_002dSymbolic-revisions" href="#Tags">4.4
Tags–Symbolic revisions</a></li>
+ <li><a name="toc-Specifying-what-to-tag-from-the-working-directory"
href="#Tagging-the-working-directory">4.5 Specifying what to tag from the
working directory</a></li>
+ <li><a name="toc-Specifying-what-to-tag-by-date-or-revision"
href="#Tagging-by-date_002ftag">4.6 Specifying what to tag by date or
revision</a></li>
+ <li><a name="toc-Deleting_002c-moving_002c-and-renaming-tags"
href="#Modifying-tags">4.7 Deleting, moving, and renaming tags</a></li>
+ <li><a name="toc-Tagging-and-adding-and-removing-files"
href="#Tagging-add_002fremove">4.8 Tagging and adding and removing
files</a></li>
+ <li><a name="toc-Sticky-tags-1" href="#Sticky-tags">4.9 Sticky
tags</a></li>
+ </ul></li>
+ <li><a name="toc-Branching-and-merging-1" href="#Branching-and-merging">5
Branching and merging</a>
+ <ul class="no-bullet">
+ <li><a name="toc-What-branches-are-good-for"
href="#Branches-motivation">5.1 What branches are good for</a></li>
+ <li><a name="toc-Creating-a-branch-1" href="#Creating-a-branch">5.2
Creating a branch</a></li>
+ <li><a name="toc-Accessing-branches-1" href="#Accessing-branches">5.3
Accessing branches</a></li>
+ <li><a name="toc-Branches-and-revisions-1"
href="#Branches-and-revisions">5.4 Branches and revisions</a></li>
+ <li><a name="toc-Magic-branch-numbers-1" href="#Magic-branch-numbers">5.5
Magic branch numbers</a></li>
+ <li><a name="toc-Merging-an-entire-branch" href="#Merging-a-branch">5.6
Merging an entire branch</a></li>
+ <li><a name="toc-Merging-from-a-branch-several-times"
href="#Merging-more-than-once">5.7 Merging from a branch several times</a></li>
+ <li><a name="toc-Merging-differences-between-any-two-revisions"
href="#Merging-two-revisions">5.8 Merging differences between any two
revisions</a></li>
+ <li><a name="toc-Merging-can-add-or-remove-files"
href="#Merging-adds-and-removals">5.9 Merging can add or remove files</a></li>
+ <li><a name="toc-Merging-and-keywords-1" href="#Merging-and-keywords">5.10
Merging and keywords</a></li>
+ </ul></li>
+ <li><a name="toc-Recursive-behavior-1" href="#Recursive-behavior">6
Recursive behavior</a></li>
+ <li><a
name="toc-Adding_002c-removing_002c-and-renaming-files-and-directories"
href="#Adding-and-removing">7 Adding, removing, and renaming files and
directories</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Adding-files-to-a-directory" href="#Adding-files">7.1
Adding files to a directory</a></li>
+ <li><a name="toc-Removing-files-1" href="#Removing-files">7.2 Removing
files</a></li>
+ <li><a name="toc-Removing-directories-1" href="#Removing-directories">7.3
Removing directories</a></li>
+ <li><a name="toc-Moving-and-renaming-files" href="#Moving-files">7.4
Moving and renaming files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Normal-way-to-Rename" href="#Outside">7.4.1 The
Normal way to Rename</a></li>
+ <li><a name="toc-Moving-the-history-file" href="#Inside">7.4.2 Moving
the history file</a></li>
+ <li><a name="toc-Copying-the-history-file"
href="#Rename-by-copying">7.4.3 Copying the history file</a></li>
+ </ul></li>
+ <li><a name="toc-Moving-and-renaming-directories"
href="#Moving-directories">7.5 Moving and renaming directories</a></li>
+ </ul></li>
+ <li><a name="toc-History-browsing-1" href="#History-browsing">8 History
browsing</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Log-messages" href="#log-messages">8.1 Log
messages</a></li>
+ <li><a name="toc-The-history-database" href="#history-database">8.2 The
history database</a></li>
+ <li><a name="toc-User_002ddefined-logging"
href="#user_002ddefined-logging">8.3 User-defined logging</a></li>
+ </ul></li>
+ <li><a name="toc-Handling-binary-files" href="#Binary-files">9 Handling
binary files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-issues-with-binary-files" href="#Binary-why">9.1 The
issues with binary files</a></li>
+ <li><a name="toc-How-to-store-binary-files" href="#Binary-howto">9.2 How
to store binary files</a></li>
+ </ul></li>
+ <li><a name="toc-Multiple-developers-1" href="#Multiple-developers">10
Multiple developers</a>
+ <ul class="no-bullet">
+ <li><a name="toc-File-status-1" href="#File-status">10.1 File
status</a></li>
+ <li><a name="toc-Bringing-a-file-up-to-date" href="#Updating-a-file">10.2
Bringing a file up to date</a></li>
+ <li><a name="toc-Conflicts-example-1" href="#Conflicts-example">10.3
Conflicts example</a></li>
+ <li><a name="toc-Informing-others-about-commits"
href="#Informing-others">10.4 Informing others about commits</a></li>
+ <li><a name="toc-Several-developers-simultaneously-attempting-to-run-CVS"
href="#Concurrency">10.5 Several developers simultaneously attempting to run
CVS</a></li>
+ <li><a name="toc-Mechanisms-to-track-who-is-editing-files"
href="#Watches">10.6 Mechanisms to track who is editing files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Telling-CVS-to-watch-certain-files"
href="#Setting-a-watch">10.6.1 Telling CVS to watch certain files</a></li>
+ <li><a name="toc-Telling-CVS-to-notify-you"
href="#Getting-Notified">10.6.2 Telling CVS to notify you</a></li>
+ <li><a name="toc-How-to-edit-a-file-which-is-being-watched"
href="#Editing-files">10.6.3 How to edit a file which is being watched</a></li>
+ <li><a name="toc-Information-about-who-is-watching-and-editing"
href="#Watch-information">10.6.4 Information about who is watching and
editing</a></li>
+ <li><a name="toc-Using-watches-with-old-versions-of-CVS"
href="#Watches-Compatibility">10.6.5 Using watches with old versions of
CVS</a></li>
+ </ul></li>
+ <li><a name="toc-Choosing-between-reserved-or-unreserved-checkouts"
href="#Choosing-a-model">10.7 Choosing between reserved or unreserved
checkouts</a></li>
+ </ul></li>
+ <li><a name="toc-Revision-management-1" href="#Revision-management">11
Revision management</a>
+ <ul class="no-bullet">
+ <li><a name="toc-When-to-commit_003f" href="#When-to-commit">11.1 When to
commit?</a></li>
+ </ul></li>
+ <li><a name="toc-Keyword-substitution-1" href="#Keyword-substitution">12
Keyword substitution</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Keyword-List" href="#Keyword-list">12.1 Keyword
List</a></li>
+ <li><a name="toc-Using-keywords-1" href="#Using-keywords">12.2 Using
keywords</a></li>
+ <li><a name="toc-Avoiding-substitution-1"
href="#Avoiding-substitution">12.3 Avoiding substitution</a></li>
+ <li><a name="toc-Substitution-modes-1" href="#Substitution-modes">12.4
Substitution modes</a></li>
+ <li><a name="toc-Problems-with-the-_0024Log_0024-keyword_002e"
href="#Log-keyword">12.5 Problems with the $<i></i>Log$ keyword.</a></li>
+ </ul></li>
+ <li><a name="toc-Tracking-third_002dparty-sources"
href="#Tracking-sources">13 Tracking third-party sources</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Importing-for-the-first-time" href="#First-import">13.1
Importing for the first time</a></li>
+ <li><a name="toc-Updating-with-the-import-command"
href="#Update-imports">13.2 Updating with the import command</a></li>
+ <li><a name="toc-Reverting-to-the-latest-vendor-release"
href="#Reverting-local-changes">13.3 Reverting to the latest vendor
release</a></li>
+ <li><a name="toc-How-to-handle-binary-files-with-cvs-import"
href="#Binary-files-in-imports">13.4 How to handle binary files with cvs
import</a></li>
+ <li><a name="toc-How-to-handle-keyword-substitution-with-cvs-import"
href="#Keywords-in-imports">13.5 How to handle keyword substitution with cvs
import</a></li>
+ <li><a name="toc-Multiple-vendor-branches-1"
href="#Multiple-vendor-branches">13.6 Multiple vendor branches</a></li>
+ </ul></li>
+ <li><a name="toc-How-your-build-system-interacts-with-CVS" href="#Builds">14
How your build system interacts with CVS</a></li>
+ <li><a name="toc-Special-Files-1" href="#Special-Files">15 Special
Files</a></li>
+ <li><a name="toc-Guide-to-CVS-commands" href="#CVS-commands">Appendix A
Guide to CVS commands</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Overall-structure-of-CVS-commands" href="#Structure">A.1
Overall structure of CVS commands</a></li>
+ <li><a name="toc-CVS_0027s-exit-status" href="#Exit-status">A.2
CVS’s exit status</a></li>
+ <li><a name="toc-Default-options-and-the-_007e_002f_002ecvsrc-file"
href="#g_t_007e_002f_002ecvsrc">A.3 Default options and the ~/.cvsrc
file</a></li>
+ <li><a name="toc-Global-options-1" href="#Global-options">A.4 Global
options</a></li>
+ <li><a name="toc-Common-command-options" href="#Common-options">A.5 Common
command options</a></li>
+ <li><a
name="toc-add_002d_002d_002dAdd-files-and-directories-to-the-repository"
href="#add">A.6 add—Add files and directories to the repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-add-options-1" href="#add-options">A.6.1 add
options</a></li>
+ <li><a name="toc-add-examples-1" href="#add-examples">A.6.2 add
examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Adding-a-directory"
href="#Adding-a-directory">A.6.2.1 Adding a directory</a></li>
+ <li><a name="toc-Adding-a-file" href="#Adding-a-file">A.6.2.2 Adding a
file</a></li>
+ <li><a name="toc-Undoing-a-remove-command"
href="#Undoing-a-remove-command">A.6.2.3 Undoing a <code>remove</code>
command</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-admin_002d_002d_002dAdministration" href="#admin">A.7
admin—Administration</a>
+ <ul class="no-bullet">
+ <li><a name="toc-admin-options-1" href="#admin-options">A.7.1 admin
options</a></li>
+ </ul></li>
+ <li><a
name="toc-annotate_002d_002d_002dWhat-revision-modified-each-line-of-a-file_003f"
href="#annotate">A.8 annotate—What revision modified each line of a
file?</a>
+ <ul class="no-bullet">
+ <li><a name="toc-annotate-options-1" href="#annotate-options">A.8.1
annotate options</a></li>
+ <li><a name="toc-annotate-example-1" href="#annotate-example">A.8.2
annotate example</a></li>
+ </ul></li>
+ <li><a name="toc-checkout_002d_002d_002dCheck-out-sources-for-editing"
href="#checkout">A.9 checkout—Check out sources for editing</a>
+ <ul class="no-bullet">
+ <li><a name="toc-checkout-options-1" href="#checkout-options">A.9.1
checkout options</a></li>
+ <li><a name="toc-checkout-examples-1" href="#checkout-examples">A.9.2
checkout examples</a></li>
+ </ul></li>
+ <li><a name="toc-commit_002d_002d_002dCheck-files-into-the-repository"
href="#commit">A.10 commit—Check files into the repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-commit-options-1" href="#commit-options">A.10.1 commit
options</a></li>
+ <li><a name="toc-commit-examples-1" href="#commit-examples">A.10.2
commit examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Committing-to-a-branch"
href="#Committing-to-a-branch">A.10.2.1 Committing to a branch</a></li>
+ <li><a name="toc-Creating-the-branch-after-editing"
href="#Creating-the-branch-after-editing">A.10.2.2 Creating the branch after
editing</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-diff_002d_002d_002dShow-differences-between-revisions"
href="#diff">A.11 diff—Show differences between revisions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-diff-options-1" href="#diff-options">A.11.1 diff
options</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Line-group-formats-1"
href="#Line-group-formats">A.11.1.1 Line group formats</a></li>
+ <li><a name="toc-Line-formats-1" href="#Line-formats">A.11.1.2 Line
formats</a></li>
+ </ul></li>
+ <li><a name="toc-diff-examples-1" href="#diff-examples">A.11.2 diff
examples</a></li>
+ </ul></li>
+ <li><a
name="toc-export_002d_002d_002dExport-sources-from-CVS_002c-similar-to-checkout"
href="#export">A.12 export—Export sources from CVS, similar to
checkout</a>
+ <ul class="no-bullet">
+ <li><a name="toc-export-options-1" href="#export-options">A.12.1 export
options</a></li>
+ </ul></li>
+ <li><a name="toc-history_002d_002d_002dShow-status-of-files-and-users"
href="#history">A.13 history—Show status of files and users</a>
+ <ul class="no-bullet">
+ <li><a name="toc-history-options-1" href="#history-options">A.13.1
history options</a></li>
+ </ul></li>
+ <li><a
name="toc-import_002d_002d_002dImport-sources-into-CVS_002c-using-vendor-branches"
href="#import">A.14 import—Import sources into CVS, using vendor
branches</a>
+ <ul class="no-bullet">
+ <li><a name="toc-import-options-1" href="#import-options">A.14.1 import
options</a></li>
+ <li><a name="toc-import-output-1" href="#import-output">A.14.2 import
output</a></li>
+ <li><a name="toc-import-examples-1" href="#import-examples">A.14.3
import examples</a></li>
+ </ul></li>
+ <li><a name="toc-log_002d_002d_002dPrint-out-log-information-for-files"
href="#log">A.15 log—Print out log information for files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-log-options-1" href="#log-options">A.15.1 log
options</a></li>
+ <li><a name="toc-log-examples-1" href="#log-examples">A.15.2 log
examples</a></li>
+ </ul></li>
+ <li><a
name="toc-rdiff_002d_002d_002d_0027patch_0027-format-diffs-between-releases"
href="#rdiff">A.16 rdiff—’patch’ format diffs between
releases</a>
+ <ul class="no-bullet">
+ <li><a name="toc-rdiff-options-1" href="#rdiff-options">A.16.1 rdiff
options</a></li>
+ <li><a name="toc-rdiff-examples-1" href="#rdiff-examples">A.16.2 rdiff
examples</a></li>
+ </ul></li>
+ <li><a
name="toc-release_002d_002d_002dIndicate-that-a-Module-is-no-longer-in-use"
href="#release">A.17 release—Indicate that a Module is no longer in
use</a>
+ <ul class="no-bullet">
+ <li><a name="toc-release-options-1" href="#release-options">A.17.1
release options</a></li>
+ <li><a name="toc-release-output-1" href="#release-output">A.17.2 release
output</a></li>
+ <li><a name="toc-release-examples-1" href="#release-examples">A.17.3
release examples</a></li>
+ </ul></li>
+ <li><a name="toc-remove_002d_002d_002dRemove-files-from-active-use"
href="#remove">A.18 remove—Remove files from active use</a>
+ <ul class="no-bullet">
+ <li><a name="toc-remove-options-1" href="#remove-options">A.18.1 remove
options</a></li>
+ <li><a name="toc-remove-examples-1" href="#remove-examples">A.18.2
remove examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Removing-a-file" href="#Removing-a-file">A.18.2.1
Removing a file</a></li>
+ <li><a name="toc-Removing-entire-directories"
href="#Removing-entire-directories">A.18.2.2 Removing entire
directories</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a
name="toc-update_002d_002d_002dBring-work-tree-in-sync-with-repository"
href="#update">A.19 update—Bring work tree in sync with repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-update-options-1" href="#update-options">A.19.1 update
options</a></li>
+ <li><a name="toc-update-output-1" href="#update-output">A.19.2 update
output</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Quick-reference-to-CVS-commands"
href="#Invoking-CVS">Appendix B Quick reference to CVS commands</a></li>
+ <li><a name="toc-Reference-manual-for-Administrative-files"
href="#Administrative-files">Appendix C Reference manual for Administrative
files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-modules-file" href="#modules">C.1 The modules file</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Alias-modules-1" href="#Alias-modules">C.1.1 Alias
modules</a></li>
+ <li><a name="toc-Regular-modules-1" href="#Regular-modules">C.1.2
Regular modules</a></li>
+ <li><a name="toc-Ampersand-modules-1" href="#Ampersand-modules">C.1.3
Ampersand modules</a></li>
+ <li><a name="toc-Excluding-directories-1"
href="#Excluding-directories">C.1.4 Excluding directories</a></li>
+ <li><a name="toc-Module-options-1" href="#Module-options">C.1.5 Module
options</a></li>
+ <li><a
name="toc-How-the-modules-file-_0060_0060program-options_0027_0027-programs-are-run"
href="#Module-program-options">C.1.6 How the modules file “program
options” programs are run</a></li>
+ </ul></li>
+ <li><a name="toc-The-cvswrappers-file" href="#Wrappers">C.2 The
cvswrappers file</a></li>
+ <li><a name="toc-The-Trigger-Scripts" href="#Trigger-Scripts">C.3 The
Trigger Scripts</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-common-syntax" href="#syntax">C.3.1 The common
syntax</a></li>
+ <li><a name="toc-Security-and-the-Trigger-Scripts"
href="#Trigger-Script-Security">C.3.2 Security and the Trigger Scripts</a></li>
+ </ul></li>
+ <li><a name="toc-The-commit-support-files" href="#commit-files">C.4 The
commit support files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Commitinfo" href="#commitinfo">C.4.1 Commitinfo</a></li>
+ <li><a name="toc-Verifying-log-messages" href="#verifymsg">C.4.2
Verifying log messages</a></li>
+ <li><a name="toc-Editinfo" href="#editinfo">C.4.3 Editinfo</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Editinfo-example" href="#editinfo-example">C.4.3.1
Editinfo example</a></li>
+ </ul></li>
+ <li><a name="toc-Loginfo" href="#loginfo">C.4.4 Loginfo</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Loginfo-example" href="#loginfo-example">C.4.4.1
Loginfo example</a></li>
+ <li><a name="toc-Keeping-a-checked-out-copy-1"
href="#Keeping-a-checked-out-copy">C.4.4.2 Keeping a checked out copy</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Rcsinfo" href="#rcsinfo">C.5 Rcsinfo</a></li>
+ <li><a name="toc-Taginfo" href="#taginfo">C.6 Taginfo</a></li>
+ <li><a name="toc-Ignoring-files-via-cvsignore" href="#cvsignore">C.7
Ignoring files via cvsignore</a></li>
+ <li><a name="toc-The-checkoutlist-file" href="#checkoutlist">C.8 The
checkoutlist file</a></li>
+ <li><a name="toc-The-history-file" href="#history-file">C.9 The history
file</a></li>
+ <li><a name="toc-Expansions-in-administrative-files"
href="#Variables">C.10 Expansions in administrative files</a></li>
+ <li><a name="toc-The-CVSROOT_002fconfig-configuration-file"
href="#config">C.11 The CVSROOT/config configuration file</a></li>
+ </ul></li>
+ <li><a name="toc-All-environment-variables-which-affect-CVS"
href="#Environment-variables">Appendix D All environment variables which affect
CVS</a></li>
+ <li><a name="toc-Compatibility-between-CVS-Versions"
href="#Compatibility">Appendix E Compatibility between CVS Versions</a></li>
+ <li><a name="toc-Troubleshooting-1" href="#Troubleshooting">Appendix F
Troubleshooting</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Partial-list-of-error-messages"
href="#Error-messages">F.1 Partial list of error messages</a></li>
+ <li><a name="toc-Trouble-making-a-connection-to-a-CVS-server"
href="#Connection">F.2 Trouble making a connection to a CVS server</a></li>
+ <li><a name="toc-Other-common-problems" href="#Other-problems">F.3 Other
common problems</a></li>
+ </ul></li>
+ <li><a name="toc-Credits-1" href="#Credits">Appendix G Credits</a></li>
+ <li><a name="toc-Dealing-with-bugs-in-CVS-or-this-manual"
href="#BUGS">Appendix H Dealing with bugs in CVS or this manual</a></li>
+ <li><a name="toc-Index-1" href="#Index">Index</a></li>
+</ul>
+</div>
+
+
+
+<a name="Top"></a>
+<div class="header">
+<p>
+Next: <a href="#Overview" accesskey="n" rel="next">Overview</a>, Up: <a
href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="SEC_Top"></a>
+
+<p>This info manual describes how to use and administer
+<small>CVS</small> version 1.11.23.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Overview"
accesskey="1">Overview</a>:</td><td> </td><td align="left"
valign="top">An introduction to CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Repository"
accesskey="2">Repository</a>:</td><td> </td><td align="left"
valign="top">Where all your sources are stored
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Starting-a-new-project"
accesskey="3">Starting a new project</a>:</td><td> </td><td
align="left" valign="top">Starting a project with CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Revisions"
accesskey="4">Revisions</a>:</td><td> </td><td align="left"
valign="top">Numeric and symbolic names for revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Branching-and-merging"
accesskey="5">Branching and merging</a>:</td><td> </td><td
align="left" valign="top">Diverging/rejoining branches of development
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Recursive-behavior"
accesskey="6">Recursive behavior</a>:</td><td> </td><td align="left"
valign="top">CVS descends directories
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Adding-and-removing"
accesskey="7">Adding and removing</a>:</td><td> </td><td
align="left" valign="top">Adding/removing/renaming files/directories
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#History-browsing"
accesskey="8">History browsing</a>:</td><td> </td><td align="left"
valign="top">Viewing the history of files in various ways
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+CVS and the Real World.
+———————–
+</pre></th></tr><tr><td align="left" valign="top">• <a
href="#Binary-files" accesskey="9">Binary
files</a>:</td><td> </td><td align="left" valign="top">CVS can
handle binary files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Multiple-developers">Multiple
developers</a>:</td><td> </td><td align="left" valign="top">How CVS
helps a group of developers
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Revision-management">Revision
management</a>:</td><td> </td><td align="left" valign="top">Policy
questions for revision management
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Keyword-substitution">Keyword
substitution</a>:</td><td> </td><td align="left" valign="top">CVS
can include the revision inside the file
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Tracking-sources">Tracking
sources</a>:</td><td> </td><td align="left" valign="top">Tracking
third-party sources
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Builds">Builds</a>:</td><td> </td><td align="left"
valign="top">Issues related to CVS and builds
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Special-Files">Special
Files</a>:</td><td> </td><td align="left" valign="top">Devices,
links and other non-regular files
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+References.
+———–
+</pre></th></tr><tr><td align="left" valign="top">• <a
href="#CVS-commands">CVS commands</a>:</td><td> </td><td
align="left" valign="top">CVS commands share some things
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Invoking-CVS">Invoking
CVS</a>:</td><td> </td><td align="left" valign="top">Quick reference
to CVS commands
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Administrative-files">Administrative
files</a>:</td><td> </td><td align="left" valign="top">Reference
manual for the Administrative files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Environment-variables">Environment
variables</a>:</td><td> </td><td align="left" valign="top">All
environment variables which affect CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Compatibility">Compatibility</a>:</td><td> </td><td
align="left" valign="top">Upgrading CVS versions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Troubleshooting">Troubleshooting</a>:</td><td> </td><td
align="left" valign="top">Some tips when nothing works
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Credits">Credits</a>:</td><td> </td><td align="left"
valign="top">Some of the contributors to this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#BUGS">BUGS</a>:</td><td> </td><td align="left"
valign="top">Dealing with bugs in CVS or this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Index">Index</a>:</td><td> </td><td align="left"
valign="top">Index
+</td></tr>
+</table>
+
+<hr>
+<a name="Overview"></a>
+<div class="header">
+<p>
+Next: <a href="#Repository" accesskey="n" rel="next">Repository</a>, Previous:
<a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top"
accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Overview-1"></a>
+<h2 class="chapter">1 Overview</h2>
+<a name="index-Overview"></a>
+
+<p>This chapter is for people who have never used
+<small>CVS</small>, and perhaps have never used version control
+software before.
+</p>
+<p>If you are already familiar with <small>CVS</small> and are just
+trying to learn a particular feature or remember a
+certain command, you can probably skip everything here.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#What-is-CVS_003f"
accesskey="1">What is CVS?</a>:</td><td> </td><td align="left"
valign="top">What you can do with <small>CVS</small>
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#What-is-CVS-not_003f"
accesskey="2">What is CVS not?</a>:</td><td> </td><td align="left"
valign="top">Problems <small>CVS</small> doesn’t try to solve
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#A-sample-session"
accesskey="3">A sample session</a>:</td><td> </td><td align="left"
valign="top">A tour of basic <small>CVS</small> usage
+</td></tr>
+</table>
+
+<hr>
+<a name="What-is-CVS_003f"></a>
+<div class="header">
+<p>
+Next: <a href="#What-is-CVS-not_003f" accesskey="n" rel="next">What is CVS
not?</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="What-is-CVS_003f-1"></a>
+<h3 class="section">1.1 What is CVS?</h3>
+<a name="index-What-is-CVS_003f"></a>
+<a name="index-Introduction-to-CVS"></a>
+<a name="index-CVS_002c-introduction-to"></a>
+
+<p><small>CVS</small> is a version control system. Using it, you can
+record the history of your source files.
+</p>
+
+<p>For example, bugs sometimes creep in when
+software is modified, and you might not detect the bug
+until a long time after you make the modification.
+With <small>CVS</small>, you can easily retrieve old versions to see
+exactly which change caused the bug. This can
+sometimes be a big help.
+</p>
+<p>You could of course save every version of every file
+you have ever created. This would
+however waste an enormous amount of disk space. <small>CVS</small>
+stores all the versions of a file in a single file in a
+clever way that only stores the differences between
+versions.
+</p>
+<p><small>CVS</small> also helps you if you are part of a group of people
working
+on the same project. It is all too easy to overwrite
+each others’ changes unless you are extremely careful.
+Some editors, like <small>GNU</small> Emacs, try to make sure that
+two people never modify the same file at the
+same time. Unfortunately, if someone is using another
+editor, that safeguard will not work. <small>CVS</small> solves this problem
+by insulating the different developers from each other. Every
+developer works in his own directory, and <small>CVS</small> merges
+the work when each developer is done.
+</p>
+<a name="index-History-of-CVS"></a>
+<a name="index-CVS_002c-history-of"></a>
+<a name="index-Credits-_0028CVS-program_0029"></a>
+<a name="index-Contributors-_0028CVS-program_0029"></a>
+<p><small>CVS</small> started out as a bunch of shell scripts written by
+Dick Grune, posted to the newsgroup
+<code>comp.sources.unix</code> in the volume 6
+release of July, 1986. While no actual code from
+these shell scripts is present in the current version
+of <small>CVS</small> much of the <small>CVS</small> conflict resolution
algorithms
+come from them.
+</p>
+<p>In April, 1989, Brian Berliner designed and coded <small>CVS</small>.
+Jeff Polk later helped Brian with the design of the <small>CVS</small>
+module and vendor branch support.
+</p>
+<a name="index-Source_002c-getting-CVS-source"></a>
+<p>You can get <small>CVS</small> in a variety of ways, including
+free download from the Internet. For more information
+on downloading <small>CVS</small> and other <small>CVS</small> topics, see:
+</p>
+<div class="example">
+<pre class="example"><a
href="http://cvs.nongnu.org/">http://cvs.nongnu.org/</a>
+</pre></div>
+
+<a name="index-Mailing-list"></a>
+<a name="index-List_002c-mailing-list"></a>
+<a name="index-Newsgroups"></a>
+<p>There is a mailing list, known as <a
href="mailto:address@hidden">address@hidden</a>,
+devoted to <small>CVS</small>. To subscribe or
+unsubscribe
+write to
+<a href="mailto:address@hidden">address@hidden</a>.
+If you prefer a Usenet group, there is a one-way mirror (posts to the email
+list are usually sent to the news group, but not vice versa) of
+<a href="mailto:address@hidden">address@hidden</a> at <a
href="news:gnu.cvs.help">news:gnu.cvs.help</a>. The right
+Usenet group for posts is <a
href="news:comp.software.config-mgmt">news:comp.software.config-mgmt</a> which
is for
+<small>CVS</small> discussions (along with other configuration
+management systems). In the future, it might be
+possible to create a
+<code>comp.software.config-mgmt.cvs</code>, but probably only
+if there is sufficient <small>CVS</small> traffic on
+<a href="news:comp.software.config-mgmt">news:comp.software.config-mgmt</a>.
+</p>
+<p>You can also subscribe to the <a
href="mailto:address@hidden">address@hidden</a> mailing list,
+described in more detail in <a href="#BUGS">BUGS</a>. To subscribe
+send mail to <a href="mailto:address@hidden">address@hidden</a>. There is a
two-way
+Usenet mirror (posts to the Usenet group are usually sent to the email list and
+vice versa) of <a href="mailto:address@hidden">address@hidden</a> named <a
href="news:gnu.cvs.bug">news:gnu.cvs.bug</a>.
+</p>
+<hr>
+<a name="What-is-CVS-not_003f"></a>
+<div class="header">
+<p>
+Next: <a href="#A-sample-session" accesskey="n" rel="next">A sample
session</a>, Previous: <a href="#What-is-CVS_003f" accesskey="p"
rel="prev">What is CVS?</a>, Up: <a href="#Overview" accesskey="u"
rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="What-is-CVS-not_003f-1"></a>
+<h3 class="section">1.2 What is CVS not?</h3>
+<a name="index-What-is-CVS-not_003f"></a>
+
+<p><small>CVS</small> can do a lot of things for you, but it does
+not try to be everything for everyone.
+</p>
+<dl compact="compact">
+<dt><small>CVS</small> is not a build system.</dt>
+<dd>
+<p>Though the structure of your repository and modules
+file interact with your build system
+(e.g. <samp>Makefile</samp>s), they are essentially
+independent.
+</p>
+<p><small>CVS</small> does not dictate how you build anything. It
+merely stores files for retrieval in a tree structure
+you devise.
+</p>
+<p><small>CVS</small> does not dictate how to use disk space in the
+checked out working directories. If you write your
+<samp>Makefile</samp>s or scripts in every directory so they
+have to know the relative positions of everything else,
+you wind up requiring the entire repository to be
+checked out.
+</p>
+<p>If you modularize your work, and construct a build
+system that will share files (via links, mounts,
+<code>VPATH</code> in <samp>Makefile</samp>s, etc.), you can
+arrange your disk usage however you like.
+</p>
+<p>But you have to remember that <em>any</em> such system is
+a lot of work to construct and maintain. <small>CVS</small> does
+not address the issues involved.
+</p>
+<p>Of course, you should place the tools created to
+support such a build system (scripts, <samp>Makefile</samp>s,
+etc.) under <small>CVS</small>.
+</p>
+<p>Figuring out what files need to be rebuilt when
+something changes is, again, something to be handled
+outside the scope of <small>CVS</small>. One traditional
+approach is to use <code>make</code> for building, and use
+some automated tool for generating the dependencies which
+<code>make</code> uses.
+</p>
+<p>See <a href="#Builds">Builds</a>, for more information on doing builds
+in conjunction with <small>CVS</small>.
+</p>
+</dd>
+<dt><small>CVS</small> is not a substitute for management.</dt>
+<dd>
+<p>Your managers and project leaders are expected to talk
+to you frequently enough to make certain you are aware
+of schedules, merge points, branch names and release
+dates. If they don’t, <small>CVS</small> can’t help.
+</p>
+<p><small>CVS</small> is an instrument for making sources dance to
+your tune. But you are the piper and the composer. No
+instrument plays itself or writes its own music.
+</p>
+</dd>
+<dt><small>CVS</small> is not a substitute for developer communication.</dt>
+<dd>
+<p>When faced with conflicts within a single file, most
+developers manage to resolve them without too much
+effort. But a more general definition of “conflict”
+includes problems too difficult to solve without
+communication between developers.
+</p>
+<p><small>CVS</small> cannot determine when simultaneous changes
+within a single file, or across a whole collection of
+files, will logically conflict with one another. Its
+concept of a <em>conflict</em> is purely textual, arising
+when two changes to the same base file are near enough
+to spook the merge (i.e., <code>diff3</code>) command.
+</p>
+<p><small>CVS</small> does not claim to help at all in figuring out
+non-textual or distributed conflicts in program logic.
+</p>
+<p>For example: Say you change the arguments to function
+<code>X</code> defined in file <samp>A</samp>. At the same time,
+someone edits file <samp>B</samp>, adding new calls to
+function <code>X</code> using the old arguments. You are
+outside the realm of <small>CVS</small>’s competence.
+</p>
+<p>Acquire the habit of reading specs and talking to your
+peers.
+</p>
+
+</dd>
+<dt><small>CVS</small> does not have change control</dt>
+<dd>
+<p>Change control refers to a number of things. First of
+all it can mean <em>bug-tracking</em>, that is being able
+to keep a database of reported bugs and the status of
+each one (Is it fixed? In what release? Has the bug
+submitter agreed that it is fixed?). For interfacing
+<small>CVS</small> to an external bug-tracking system, see the
+<samp>rcsinfo</samp> and <samp>verifymsg</samp> files
+(see <a href="#Administrative-files">Administrative files</a>).
+</p>
+<p>Another aspect of change control is keeping track of
+the fact that changes to several files were in fact
+changed together as one logical change. If you check
+in several files in a single <code>cvs commit</code>
+operation, <small>CVS</small> then forgets that those files were
+checked in together, and the fact that they have the
+same log message is the only thing tying them
+together. Keeping a <small>GNU</small> style <samp>ChangeLog</samp>
+can help somewhat.
+</p>
+<p>Another aspect of change control, in some systems, is
+the ability to keep track of the status of each
+change. Some changes have been written by a developer,
+others have been reviewed by a second developer, and so
+on. Generally, the way to do this with <small>CVS</small> is to
+generate a diff (using <code>cvs diff</code> or <code>diff</code>)
+and email it to someone who can then apply it using the
+<code>patch</code> utility. This is very flexible, but
+depends on mechanisms outside <small>CVS</small> to make sure
+nothing falls through the cracks.
+</p>
+</dd>
+<dt><small>CVS</small> is not an automated testing program</dt>
+<dd>
+<p>It should be possible to enforce mandatory use of a
+test suite using the <code>commitinfo</code> file. I haven’t
+heard a lot about projects trying to do that or whether
+there are subtle gotchas, however.
+</p>
+</dd>
+<dt><small>CVS</small> does not have a built-in process model</dt>
+<dd>
+<p>Some systems provide ways to ensure that changes or
+releases go through various steps, with various
+approvals as needed. Generally, one can accomplish
+this with <small>CVS</small> but it might be a little more work.
+In some cases you’ll want to use the <samp>commitinfo</samp>,
+<samp>loginfo</samp>, <samp>rcsinfo</samp>, or <samp>verifymsg</samp>
+files, to require that certain steps be performed
+before cvs will allow a checkin. Also consider whether
+features such as branches and tags can be used to
+perform tasks such as doing work in a development tree
+and then merging certain changes over to a stable tree
+only once they have been proven.
+</p></dd>
+</dl>
+
+<hr>
+<a name="A-sample-session"></a>
+<div class="header">
+<p>
+Previous: <a href="#What-is-CVS-not_003f" accesskey="p" rel="prev">What is CVS
not?</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="A-sample-session-1"></a>
+<h3 class="section">1.3 A sample session</h3>
+<a name="index-Example-of-a-work_002dsession"></a>
+<a name="index-Getting-started"></a>
+<a name="index-Work_002dsession_002c-example-of"></a>
+<a name="index-tc_002c-Trivial-Compiler-_0028example_0029"></a>
+<a name="index-Trivial-Compiler-_0028example_0029"></a>
+
+
+<p>As a way of introducing <small>CVS</small>, we’ll go through a
+typical work-session using <small>CVS</small>. The first thing
+to understand is that <small>CVS</small> stores all files in a
+centralized <em>repository</em> (see <a href="#Repository">Repository</a>);
this
+section assumes that a repository is set up.
+</p>
+<p>Suppose you are working on a simple compiler. The source
+consists of a handful of C files and a <samp>Makefile</samp>.
+The compiler is called ‘<samp>tc</samp>’ (Trivial Compiler),
+and the repository is set up so that there is a module
+called ‘<samp>tc</samp>’.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Getting-the-source"
accesskey="1">Getting the source</a>:</td><td> </td><td align="left"
valign="top">Creating a workspace
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Committing-your-changes"
accesskey="2">Committing your changes</a>:</td><td> </td><td
align="left" valign="top">Making your work available to others
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Cleaning-up"
accesskey="3">Cleaning up</a>:</td><td> </td><td align="left"
valign="top">Cleaning up
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Viewing-differences"
accesskey="4">Viewing differences</a>:</td><td> </td><td
align="left" valign="top">Viewing differences
+</td></tr>
+</table>
+
+<hr>
+<a name="Getting-the-source"></a>
+<div class="header">
+<p>
+Next: <a href="#Committing-your-changes" accesskey="n" rel="next">Committing
your changes</a>, Up: <a href="#A-sample-session" accesskey="u" rel="up">A
sample session</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Getting-the-source-1"></a>
+<h4 class="subsection">1.3.1 Getting the source</h4>
+<a name="index-Getting-the-source"></a>
+<a name="index-Checking-out-source"></a>
+<a name="index-Fetching-source"></a>
+<a name="index-Source_002c-getting-from-CVS"></a>
+<a name="index-Checkout_002c-example"></a>
+
+<p>The first thing you must do is to get your own working copy of the
+source for ‘<samp>tc</samp>’. For this, you use the
<code>checkout</code> command:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout tc
+</pre></div>
+
+<p>This will create a new directory called <samp>tc</samp> and populate it with
+the source files.
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ ls
+CVS Makefile backend.c driver.c frontend.c parser.c
+</pre></div>
+
+<p>The <samp>CVS</samp> directory is used internally by
+<small>CVS</small>. Normally, you should not modify or remove
+any of the files in it.
+</p>
+<p>You start your favorite editor, hack away at <samp>backend.c</samp>, and a
couple
+of hours later you have added an optimization pass to the compiler.
+A note to <small>RCS</small> and <small>SCCS</small> users: There is no need
to lock the files that
+you want to edit. See <a href="#Multiple-developers">Multiple developers</a>,
for an explanation.
+</p>
+<hr>
+<a name="Committing-your-changes"></a>
+<div class="header">
+<p>
+Next: <a href="#Cleaning-up" accesskey="n" rel="next">Cleaning up</a>,
Previous: <a href="#Getting-the-source" accesskey="p" rel="prev">Getting the
source</a>, Up: <a href="#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Committing-your-changes-1"></a>
+<h4 class="subsection">1.3.2 Committing your changes</h4>
+<a name="index-Committing-changes-to-files"></a>
+<a name="index-Log-message-entry"></a>
+
+<p>When you have checked that the compiler is still compilable you decide
+to make a new version of <samp>backend.c</samp>. This will
+store your new <samp>backend.c</samp> in the repository and
+make it available to anyone else who is using that same
+repository.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit backend.c
+</pre></div>
+
+<p><small>CVS</small> starts an editor, to allow you to enter a log
+message. You type in “Added an optimization pass.”,
+save the temporary file, and exit the editor.
+</p>
+<a name="index-CVSEDITOR_002c-environment-variable"></a>
+<a name="index-EDITOR_002c-environment-variable"></a>
+<p>The environment variable <code>$CVSEDITOR</code> determines
+which editor is started. If <code>$CVSEDITOR</code> is not
+set, then if the environment variable <code>$EDITOR</code> is
+set, it will be used. If both <code>$CVSEDITOR</code> and
+<code>$EDITOR</code> are not set then there is a default
+which will vary with your operating system, for example
+<code>vi</code> for unix or <code>notepad</code> for Windows
+NT/95.
+</p>
+<a name="index-VISUAL_002c-environment-variable"></a>
+<p>In addition, <small>CVS</small> checks the <code>$VISUAL</code> environment
+variable. Opinions vary on whether this behavior is desirable and
+whether future releases of <small>CVS</small> should check
<code>$VISUAL</code> or
+ignore it. You will be OK either way if you make sure that
+<code>$VISUAL</code> is either unset or set to the same thing as
+<code>$EDITOR</code>.
+</p>
+<p>When <small>CVS</small> starts the editor, it includes a list of
+files which are modified. For the <small>CVS</small> client,
+this list is based on comparing the modification time
+of the file against the modification time that the file
+had when it was last gotten or updated. Therefore, if
+a file’s modification time has changed but its contents
+have not, it will show up as modified. The simplest
+way to handle this is simply not to worry about it—if
+you proceed with the commit <small>CVS</small> will detect that
+the contents are not modified and treat it as an
+unmodified file. The next <code>update</code> will clue
+<small>CVS</small> in to the fact that the file is unmodified,
+and it will reset its stored timestamp so that the file
+will not show up in future editor sessions.
+</p>
+<p>If you want to avoid
+starting an editor you can specify the log message on
+the command line using the ‘<samp>-m</samp>’ flag instead, like
+this:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Added an optimization pass"
backend.c
+</pre></div>
+
+<hr>
+<a name="Cleaning-up"></a>
+<div class="header">
+<p>
+Next: <a href="#Viewing-differences" accesskey="n" rel="next">Viewing
differences</a>, Previous: <a href="#Committing-your-changes" accesskey="p"
rel="prev">Committing your changes</a>, Up: <a href="#A-sample-session"
accesskey="u" rel="up">A sample session</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Cleaning-up-1"></a>
+<h4 class="subsection">1.3.3 Cleaning up</h4>
+<a name="index-Cleaning-up"></a>
+<a name="index-Working-copy_002c-removing"></a>
+<a name="index-Removing-your-working-copy"></a>
+<a name="index-Releasing-your-working-copy"></a>
+
+<p>Before you turn to other tasks you decide to remove your working copy of
+tc. One acceptable way to do that is of course
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ rm -r tc
+</pre></div>
+
+<p>but a better way is to use the <code>release</code> command (see <a
href="#release">release</a>):
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs release -d tc
+M driver.c
+? tc
+You have [1] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': n
+** `release' aborted by user choice.
+</pre></div>
+
+<p>The <code>release</code> command checks that all your modifications have
been
+committed. If history logging is enabled it also makes a note in the
+history file. See <a href="#history-file">history file</a>.
+</p>
+<p>When you use the ‘<samp>-d</samp>’ flag with
<code>release</code>, it
+also removes your working copy.
+</p>
+<p>In the example above, the <code>release</code> command wrote a couple of
lines
+of output. ‘<samp>? tc</samp>’ means that the file
<samp>tc</samp> is unknown to <small>CVS</small>.
+That is nothing to worry about: <samp>tc</samp> is the executable compiler,
+and it should not be stored in the repository. See <a
href="#cvsignore">cvsignore</a>,
+for information about how to make that warning go away.
+See <a href="#release-output">release output</a>, for a complete explanation of
+all possible output from <code>release</code>.
+</p>
+<p>‘<samp>M driver.c</samp>’ is more serious. It means that the
+file <samp>driver.c</samp> has been modified since it was
+checked out.
+</p>
+<p>The <code>release</code> command always finishes by telling
+you how many modified files you have in your working
+copy of the sources, and then asks you for confirmation
+before deleting any files or making any note in the
+history file.
+</p>
+<p>You decide to play it safe and answer <kbd>n <span
class="key">RET</span></kbd>
+when <code>release</code> asks for confirmation.
+</p>
+<hr>
+<a name="Viewing-differences"></a>
+<div class="header">
+<p>
+Previous: <a href="#Cleaning-up" accesskey="p" rel="prev">Cleaning up</a>, Up:
<a href="#A-sample-session" accesskey="u" rel="up">A sample session</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Viewing-differences-1"></a>
+<h4 class="subsection">1.3.4 Viewing differences</h4>
+<a name="index-Viewing-differences"></a>
+<a name="index-Diff"></a>
+
+<p>You do not remember modifying <samp>driver.c</samp>, so you want to see what
+has happened to that file.
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs diff driver.c
+</pre></div>
+
+<p>This command runs <code>diff</code> to compare the version of
<samp>driver.c</samp>
+that you checked out with your working copy. When you see the output
+you remember that you added a command line option that enabled the
+optimization pass. You check it in, and release the module.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Added an optimization pass"
driver.c
+Checking in driver.c;
+/usr/local/cvsroot/tc/driver.c,v <-- driver.c
+new revision: 1.2; previous revision: 1.1
+done
+$ cd ..
+$ cvs release -d tc
+? tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+</pre></div>
+
+<hr>
+<a name="Repository"></a>
+<div class="header">
+<p>
+Next: <a href="#Starting-a-new-project" accesskey="n" rel="next">Starting a
new project</a>, Previous: <a href="#Overview" accesskey="p"
rel="prev">Overview</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-Repository"></a>
+<h2 class="chapter">2 The Repository</h2>
+<a name="index-Repository-_0028intro_0029"></a>
+<a name="index-Repository_002c-example"></a>
+<a name="index-Layout-of-repository"></a>
+<a name="index-Typical-repository"></a>
+<a name="index-_002fusr_002flocal_002fcvsroot_002c-as-example-repository"></a>
+<a name="index-cvsroot"></a>
+
+<p>The <small>CVS</small> <em>repository</em> stores a complete copy of
+all the files and directories which are under version
+control.
+</p>
+<p>Normally, you never access any of the files in the
+repository directly. Instead, you use <small>CVS</small>
+commands to get your own copy of the files into a
+<em>working directory</em>, and then
+work on that copy. When you’ve finished a set of
+changes, you check (or <em>commit</em>) them back into the
+repository. The repository then contains the changes
+which you have made, as well as recording exactly what
+you changed, when you changed it, and other such
+information. Note that the repository is not a
+subdirectory of the working directory, or vice versa;
+they should be in separate locations.
+</p>
+<a name="index-_003alocal_003a_002c-setting-up"></a>
+<p><small>CVS</small> can access a repository by a variety of
+means. It might be on the local computer, or it might
+be on a computer across the room or across the world.
+To distinguish various ways to access a repository, the
+repository name can start with an <em>access method</em>.
+For example, the access method <code>:local:</code> means to
+access a repository directory, so the repository
+<code>:local:/usr/local/cvsroot</code> means that the
+repository is in <samp>/usr/local/cvsroot</samp> on the
+computer running <small>CVS</small>. For information on other
+access methods, see <a href="#Remote-repositories">Remote repositories</a>.
+</p>
+<p>If the access method is omitted, then if the repository
+starts with ‘<samp>/</samp>’, then <code>:local:</code> is
+assumed. If it does not start with ‘<samp>/</samp>’ then either
+<code>:ext:</code> or <code>:server:</code> is assumed. For
+example, if you have a local repository in
+<samp>/usr/local/cvsroot</samp>, you can use
+<code>/usr/local/cvsroot</code> instead of
+<code>:local:/usr/local/cvsroot</code>. But if (under
+Windows NT, for example) your local repository is
+<samp>c:\src\cvsroot</samp>, then you must specify the access
+method, as in <code>:local:c:/src/cvsroot</code>.
+</p>
+<p>The repository is split in two parts. <samp>$CVSROOT/CVSROOT</samp>
contains
+administrative files for <small>CVS</small>. The other directories contain
the actual
+user-defined modules.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Specifying-a-repository"
accesskey="1">Specifying a repository</a>:</td><td> </td><td
align="left" valign="top">Telling CVS where your repository is
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Repository-storage"
accesskey="2">Repository storage</a>:</td><td> </td><td align="left"
valign="top">The structure of the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Working-directory-storage"
accesskey="3">Working directory storage</a>:</td><td> </td><td
align="left" valign="top">The structure of working directories
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Intro-administrative-files"
accesskey="4">Intro administrative files</a>:</td><td> </td><td
align="left" valign="top">Defining modules
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Multiple-repositories"
accesskey="5">Multiple repositories</a>:</td><td> </td><td
align="left" valign="top">Multiple repositories
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Creating-a-repository"
accesskey="6">Creating a repository</a>:</td><td> </td><td
align="left" valign="top">Creating a repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Backing-up"
accesskey="7">Backing up</a>:</td><td> </td><td align="left"
valign="top">Backing up a repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Moving-a-repository"
accesskey="8">Moving a repository</a>:</td><td> </td><td
align="left" valign="top">Moving a repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Remote-repositories"
accesskey="9">Remote repositories</a>:</td><td> </td><td
align="left" valign="top">Accessing repositories on remote machines
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Read_002donly-access">Read-only access</a>:</td><td> </td><td
align="left" valign="top">Granting read-only access to the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Server-temporary-directory">Server temporary
directory</a>:</td><td> </td><td align="left" valign="top">The
server creates temporary directories
+</td></tr>
+</table>
+
+<hr>
+<a name="Specifying-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="#Repository-storage" accesskey="n" rel="next">Repository
storage</a>, Up: <a href="#Repository" accesskey="u" rel="up">Repository</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Telling-CVS-where-your-repository-is"></a>
+<h3 class="section">2.1 Telling CVS where your repository is</h3>
+
+<p>There are several ways to tell <small>CVS</small>
+where to find the repository. You can name the
+repository on the command line explicitly, with the
+<code>-d</code> (for "directory") option:
+</p>
+<div class="example">
+<pre class="example">cvs -d /usr/local/cvsroot checkout yoyodyne/tc
+</pre></div>
+
+<a name="index-_002eprofile_002c-setting-CVSROOT-in"></a>
+<a name="index-_002ecshrc_002c-setting-CVSROOT-in"></a>
+<a name="index-_002etcshrc_002c-setting-CVSROOT-in"></a>
+<a name="index-_002ebashrc_002c-setting-CVSROOT-in"></a>
+<a name="index-CVSROOT_002c-environment-variable"></a>
+<p>Or you can set the <code>$CVSROOT</code> environment
+variable to an absolute path to the root of the
+repository, <samp>/usr/local/cvsroot</samp> in this example.
+To set <code>$CVSROOT</code>, <code>csh</code> and <code>tcsh</code>
+users should have this line in their <samp>.cshrc</samp> or
+<samp>.tcshrc</samp> files:
+</p>
+<div class="example">
+<pre class="example">setenv CVSROOT /usr/local/cvsroot
+</pre></div>
+
+<p><code>sh</code> and <code>bash</code> users should instead have these lines
in their
+<samp>.profile</samp> or <samp>.bashrc</samp>:
+</p>
+<div class="example">
+<pre class="example">CVSROOT=/usr/local/cvsroot
+export CVSROOT
+</pre></div>
+
+<a name="index-Root-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fRoot-file"></a>
+<p>A repository specified with <code>-d</code> will
+override the <code>$CVSROOT</code> environment variable.
+Once you’ve checked a working copy out from the
+repository, it will remember where its repository is
+(the information is recorded in the
+<samp>CVS/Root</samp> file in the working copy).
+</p>
+<p>The <code>-d</code> option and the <samp>CVS/Root</samp> file both
+override the <code>$CVSROOT</code> environment variable. If
+<code>-d</code> option differs from <samp>CVS/Root</samp>, the
+former is used. Of course, for proper operation they
+should be two ways of referring to the same repository.
+</p>
+<hr>
+<a name="Repository-storage"></a>
+<div class="header">
+<p>
+Next: <a href="#Working-directory-storage" accesskey="n" rel="next">Working
directory storage</a>, Previous: <a href="#Specifying-a-repository"
accesskey="p" rel="prev">Specifying a repository</a>, Up: <a href="#Repository"
accesskey="u" rel="up">Repository</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="How-data-is-stored-in-the-repository"></a>
+<h3 class="section">2.2 How data is stored in the repository</h3>
+<a name="index-Repository_002c-how-data-is-stored"></a>
+
+<p>For most purposes it isn’t important <em>how</em>
+<small>CVS</small> stores information in the repository. In
+fact, the format has changed in the past, and is likely
+to change in the future. Since in almost all cases one
+accesses the repository via <small>CVS</small> commands, such
+changes need not be disruptive.
+</p>
+<p>However, in some cases it may be necessary to
+understand how <small>CVS</small> stores data in the repository,
+for example you might need to track down <small>CVS</small> locks
+(see <a href="#Concurrency">Concurrency</a>) or you might need to deal with
+the file permissions appropriate for the repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Repository-files"
accesskey="1">Repository files</a>:</td><td> </td><td align="left"
valign="top">What files are stored in the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#File-permissions"
accesskey="2">File permissions</a>:</td><td> </td><td align="left"
valign="top">File permissions
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Windows-permissions"
accesskey="3">Windows permissions</a>:</td><td> </td><td
align="left" valign="top">Issues specific to Windows
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Attic"
accesskey="4">Attic</a>:</td><td> </td><td align="left"
valign="top">Some files are stored in the Attic
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#CVS-in-repository"
accesskey="5">CVS in repository</a>:</td><td> </td><td align="left"
valign="top">Additional information in CVS directory
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Locks"
accesskey="6">Locks</a>:</td><td> </td><td align="left"
valign="top">CVS locks control concurrent accesses
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#CVSROOT-storage"
accesskey="7">CVSROOT storage</a>:</td><td> </td><td align="left"
valign="top">A few things about CVSROOT are different
+</td></tr>
+</table>
+
+<hr>
+<a name="Repository-files"></a>
+<div class="header">
+<p>
+Next: <a href="#File-permissions" accesskey="n" rel="next">File
permissions</a>, Up: <a href="#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Where-files-are-stored-within-the-repository"></a>
+<h4 class="subsection">2.2.1 Where files are stored within the repository</h4>
+
+
+<p>The overall structure of the repository is a directory
+tree corresponding to the directories in the working
+directory. For example, supposing the repository is in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot
+</pre></div>
+
+<p>here is a possible directory tree (showing only the
+directories):
+</p>
+<div class="example">
+<pre class="example"><tt>/usr</tt>
+ |
+ +--<tt>local</tt>
+ | |
+ | +--<tt>cvsroot</tt>
+ | | |
+ | | +--<tt>CVSROOT</tt>
+ | (administrative files)
+ |
+ +--<tt>gnu</tt>
+ | |
+ | +--<tt>diff</tt>
+ | | (source code to GNU diff)
+ | |
+ | +--<tt>rcs</tt>
+ | | (source code to RCS)
+ | |
+ | +--<tt>cvs</tt>
+ | (source code to CVS)
+ |
+ +--<tt>yoyodyne</tt>
+ |
+ +--<tt>tc</tt>
+ | |
+ | +--<tt>man</tt>
+ | |
+ | +--<tt>testing</tt>
+ |
+ +--(other Yoyodyne software)
+</pre></div>
+
+<p>With the directories are <em>history files</em> for each file
+under version control. The name of the history file is
+the name of the corresponding file with ‘<samp>,v</samp>’
+appended to the end. Here is what the repository for
+the <samp>yoyodyne/tc</samp> directory might look like:
+</p><div class="example">
+<pre class="example"> <code>$CVSROOT</code>
+ |
+ +--<tt>yoyodyne</tt>
+ | |
+ | +--<tt>tc</tt>
+ | | |
+ +--<tt>Makefile,v</tt>
+ +--<tt>backend.c,v</tt>
+ +--<tt>driver.c,v</tt>
+ +--<tt>frontend.c,v</tt>
+ +--<tt>parser.c,v</tt>
+ +--<tt>man</tt>
+ | |
+ | +--<tt>tc.1,v</tt>
+ |
+ +--<tt>testing</tt>
+ |
+ +--<tt>testpgm.t,v</tt>
+ +--<tt>test2.t,v</tt>
+</pre></div>
+
+<a name="index-History-files"></a>
+<a name="index-RCS-history-files"></a>
+<p>The history files contain, among other things, enough
+information to recreate any revision of the file, a log
+of all commit messages and the user-name of the person
+who committed the revision. The history files are
+known as <em>RCS files</em>, because the first program to
+store files in that format was a version control system
+known as <small>RCS</small>. For a full
+description of the file format, see the <code>man</code> page
+<cite>rcsfile(5)</cite>, distributed with <small>RCS</small>, or the
+file <samp>doc/RCSFILES</samp> in the <small>CVS</small> source
+distribution. This
+file format has become very common—many systems other
+than <small>CVS</small> or <small>RCS</small> can at least import history
+files in this format.
+</p>
+<p>The <small>RCS</small> files used in <small>CVS</small> differ in a few
+ways from the standard format. The biggest difference
+is magic branches; for more information see <a
href="#Magic-branch-numbers">Magic branch numbers</a>. Also in
<small>CVS</small> the valid tag names
+are a subset of what <small>RCS</small> accepts; for <small>CVS</small>’s
+rules see <a href="#Tags">Tags</a>.
+</p>
+<hr>
+<a name="File-permissions"></a>
+<div class="header">
+<p>
+Next: <a href="#Windows-permissions" accesskey="n" rel="next">Windows
permissions</a>, Previous: <a href="#Repository-files" accesskey="p"
rel="prev">Repository files</a>, Up: <a href="#Repository-storage"
accesskey="u" rel="up">Repository storage</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="File-permissions-1"></a>
+<h4 class="subsection">2.2.2 File permissions</h4>
+<a name="index-Security_002c-file-permissions-in-repository"></a>
+<a name="index-File-permissions_002c-general"></a>
+<a name="index-Permissions_002c-general"></a>
+<a name="index-Group_002c-UNIX-file-permissions_002c-in-repository"></a>
+<a name="index-Read_002donly-files_002c-in-repository"></a>
+<p>All ‘<samp>,v</samp>’ files are created read-only, and you
+should not change the permission of those files. The
+directories inside the repository should be writable by
+the persons that have permission to modify the files in
+each directory. This normally means that you must
+create a UNIX group (see group(5)) consisting of the
+persons that are to edit the files in a project, and
+set up the repository so that it is that group that
+owns the directory.
+(On some systems, you also need to set the set-group-ID-on-execution bit
+on the repository directories (see chmod(1)) so that newly-created files
+and directories get the group-ID of the parent directory rather than
+that of the current process.)
+</p>
+
+<p>This means that you can only control access to files on
+a per-directory basis.
+</p>
+<p>Note that users must also have write access to check
+out files, because <small>CVS</small> needs to create lock files
+(see <a href="#Concurrency">Concurrency</a>). You can use LockDir in
CVSROOT/config
+to put the lock files somewhere other than in the repository
+if you want to allow read-only access to some directories
+(see <a href="#config">config</a>).
+</p>
+<a
name="index-CVSROOT_002fval_002dtags-file_002c-and-read_002donly-access-to-projects"></a>
+<a
name="index-val_002dtags-file_002c-and-read_002donly-access-to-projects"></a>
+<p>Also note that users must have write access to the
+<samp>CVSROOT/val-tags</samp> file. <small>CVS</small> uses it to keep
+track of what tags are valid tag names (it is sometimes
+updated when tags are used, as well as when they are
+created).
+</p>
+<p>Each <small>RCS</small> file will be owned by the user who last
+checked it in. This has little significance; what
+really matters is who owns the directories.
+</p>
+<a name="index-CVSUMASK_002c-environment-variable"></a>
+<a name="index-Umask_002c-for-repository-files"></a>
+<p><small>CVS</small> tries to set up reasonable file permissions
+for new directories that are added inside the tree, but
+you must fix the permissions manually when a new
+directory should have different permissions than its
+parent directory. If you set the <code>CVSUMASK</code>
+environment variable, that will control the file
+permissions which <small>CVS</small> uses in creating directories
+and/or files in the repository. <code>CVSUMASK</code> does
+not affect the file permissions in the working
+directory; such files have the permissions which are
+typical for newly created files, except that sometimes
+<small>CVS</small> creates them read-only (see the sections on
+watches, <a href="#Setting-a-watch">Setting a watch</a>; -r, <a
href="#Global-options">Global options</a>; or <code>CVSREAD</code>, <a
href="#Environment-variables">Environment variables</a>).
+</p>
+<p>Note that using the client/server <small>CVS</small>
+(see <a href="#Remote-repositories">Remote repositories</a>), there is no good
way to
+set <code>CVSUMASK</code>; the setting on the client machine
+has no effect. If you are connecting with <code>rsh</code>, you
+can set <code>CVSUMASK</code> in <samp>.bashrc</samp> or <samp>.cshrc</samp>,
as
+described in the documentation for your operating
+system. This behavior might change in future versions
+of <small>CVS</small>; do not rely on the setting of
+<code>CVSUMASK</code> on the client having no effect.
+</p>
+<p>Using pserver, you will generally need stricter
+permissions on the <small>CVSROOT</small> directory and
+directories above it in the tree; see <a
href="#Password-authentication-security">Password authentication security</a>.
+</p>
+<a name="index-Setuid"></a>
+<a name="index-Setgid"></a>
+<a name="index-Security_002c-setuid"></a>
+<a name="index-Installed-images-_0028VMS_0029"></a>
+<p>Some operating systems have features which allow a
+particular program to run with the ability to perform
+operations which the caller of the program could not.
+For example, the set user ID (setuid) or set group ID
+(setgid) features of unix or the installed image
+feature of VMS. <small>CVS</small> was not written to use such
+features and therefore attempting to install <small>CVS</small> in
+this fashion will provide protection against only
+accidental lapses; anyone who is trying to circumvent
+the measure will be able to do so, and depending on how
+you have set it up may gain access to more than just
+<small>CVS</small>. You may wish to instead consider pserver. It
+shares some of the same attributes, in terms of
+possibly providing a false sense of security or opening
+security holes wider than the ones you are trying to
+fix, so read the documentation on pserver security
+carefully if you are considering this option
+(<a href="#Password-authentication-security">Password authentication
security</a>).
+</p>
+<hr>
+<a name="Windows-permissions"></a>
+<div class="header">
+<p>
+Next: <a href="#Attic" accesskey="n" rel="next">Attic</a>, Previous: <a
href="#File-permissions" accesskey="p" rel="prev">File permissions</a>, Up: <a
href="#Repository-storage" accesskey="u" rel="up">Repository storage</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="File-Permission-issues-specific-to-Windows"></a>
+<h4 class="subsection">2.2.3 File Permission issues specific to Windows</h4>
+<a name="index-Windows_002c-and-permissions"></a>
+<a name="index-File-permissions_002c-Windows_002dspecific"></a>
+<a name="index-Permissions_002c-Windows_002dspecific"></a>
+
+<p>Some file permission issues are specific to Windows
+operating systems (Windows 95, Windows NT, and
+presumably future operating systems in this family.
+Some of the following might apply to OS/2 but I’m not
+sure).
+</p>
+<p>If you are using local <small>CVS</small> and the repository is on a
+networked file system which is served by the Samba SMB
+server, some people have reported problems with
+permissions. Enabling WRITE=YES in the samba
+configuration is said to fix/workaround it.
+Disclaimer: I haven’t investigated enough to know the
+implications of enabling that option, nor do I know
+whether there is something which <small>CVS</small> could be doing
+differently in order to avoid the problem. If you find
+something out, please let us know as described in
+<a href="#BUGS">BUGS</a>.
+</p>
+<hr>
+<a name="Attic"></a>
+<div class="header">
+<p>
+Next: <a href="#CVS-in-repository" accesskey="n" rel="next">CVS in
repository</a>, Previous: <a href="#Windows-permissions" accesskey="p"
rel="prev">Windows permissions</a>, Up: <a href="#Repository-storage"
accesskey="u" rel="up">Repository storage</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="The-attic"></a>
+<h4 class="subsection">2.2.4 The attic</h4>
+<a name="index-Attic"></a>
+
+<p>You will notice that sometimes <small>CVS</small> stores an
+<small>RCS</small> file in the <code>Attic</code>. For example, if the
+<small>CVSROOT</small> is <samp>/usr/local/cvsroot</samp> and we are
+talking about the file <samp>backend.c</samp> in the
+directory <samp>yoyodyne/tc</samp>, then the file normally
+would be in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc/backend.c,v
+</pre></div>
+
+<p>but if it goes in the attic, it would be in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v
+</pre></div>
+
+<a name="index-Dead-state"></a>
+<p>instead. It should not matter from a user point of
+view whether a file is in the attic; <small>CVS</small> keeps
+track of this and looks in the attic when it needs to.
+But in case you want to know, the rule is that the RCS
+file is stored in the attic if and only if the head
+revision on the trunk has state <code>dead</code>. A
+<code>dead</code> state means that file has been removed, or
+never added, for that revision. For example, if you
+add a file on a branch, it will have a trunk revision
+in <code>dead</code> state, and a branch revision in a
+non-<code>dead</code> state.
+</p>
+<hr>
+<a name="CVS-in-repository"></a>
+<div class="header">
+<p>
+Next: <a href="#Locks" accesskey="n" rel="next">Locks</a>, Previous: <a
href="#Attic" accesskey="p" rel="prev">Attic</a>, Up: <a
href="#Repository-storage" accesskey="u" rel="up">Repository storage</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-CVS-directory-in-the-repository"></a>
+<h4 class="subsection">2.2.5 The CVS directory in the repository</h4>
+<a name="index-CVS-directory_002c-in-repository"></a>
+
+<p>The <samp>CVS</samp> directory in each repository directory
+contains information such as file attributes (in a file
+called <samp>CVS/fileattr</samp>. In the
+future additional files may be added to this directory,
+so implementations should silently ignore additional
+files.
+</p>
+<p>This behavior is implemented only by <small>CVS</small> 1.7 and
+later; for details see <a href="#Watches-Compatibility">Watches
Compatibility</a>.
+</p>
+<p>The format of the <samp>fileattr</samp> file is a series of entries
+of the following form (where ‘<samp>{</samp>’ and
‘<samp>}</samp>’
+means the text between the braces can be repeated zero
+or more times):
+</p>
+<p><var>ent-type</var> <var>filename</var> <tab> <var>attrname</var> =
<var>attrval</var>
+ {; <var>attrname</var> = <var>attrval</var>} <linefeed>
+</p>
+<p><var>ent-type</var> is ‘<samp>F</samp>’ for a file, in which
case the entry specifies the
+attributes for that file.
+</p>
+<p><var>ent-type</var> is ‘<samp>D</samp>’,
+and <var>filename</var> empty, to specify default attributes
+to be used for newly added files.
+</p>
+<p>Other <var>ent-type</var> are reserved for future expansion.
<small>CVS</small> 1.9 and older
+will delete them any time it writes file attributes.
+<small>CVS</small> 1.10 and later will preserve them.
+</p>
+<p>Note that the order of the lines is not significant;
+a program writing the fileattr file may
+rearrange them at its convenience.
+</p>
+<p>There is currently no way of quoting tabs or line feeds in the
+filename, ‘<samp>=</samp>’ in <var>attrname</var>,
+‘<samp>;</samp>’ in <var>attrval</var>, etc. Note: some
implementations also
+don’t handle a NUL character in any of the fields, but
+implementations are encouraged to allow it.
+</p>
+<p>By convention, <var>attrname</var> starting with
‘<samp>_</samp>’ is for an attribute given
+special meaning by <small>CVS</small>; other <var>attrname</var>s are for
user-defined attributes
+(or will be, once implementations start supporting user-defined attributes).
+</p>
+<p>Built-in attributes:
+</p>
+<dl compact="compact">
+<dt><code>_watched</code></dt>
+<dd><p>Present means the file is watched and should be checked out
+read-only.
+</p>
+</dd>
+<dt><code>_watchers</code></dt>
+<dd><p>Users with watches for this file. Value is
+<var>watcher</var> > <var>type</var> { , <var>watcher</var> >
<var>type</var> }
+where <var>watcher</var> is a username, and <var>type</var>
+is zero or more of edit,unedit,commit separated by
+‘<samp>+</samp>’ (that is, nothing if none; there is no
"none" or "all" keyword).
+</p>
+</dd>
+<dt><code>_editors</code></dt>
+<dd><p>Users editing this file. Value is
+<var>editor</var> > <var>val</var> { , <var>editor</var> >
<var>val</var> }
+where <var>editor</var> is a username, and <var>val</var> is
+<var>time</var>+<var>hostname</var>+<var>pathname</var>, where
+<var>time</var> is when the <code>cvs edit</code> command (or
+equivalent) happened,
+and <var>hostname</var> and <var>pathname</var> are for the working directory.
+</p></dd>
+</dl>
+
+<p>Example:
+</p>
+<div class="example">
+<pre class="example">Ffile1 _watched=;_watchers=joe>edit,mary>commit
+Ffile2 _watched=;_editors=sue>8 Jan 1975+workstn1+/home/sue/cvs
+D _watched=
+</pre></div>
+
+<p>means that the file <samp>file1</samp> should be checked out
+read-only. Furthermore, joe is watching for edits and
+mary is watching for commits. The file <samp>file2</samp>
+should be checked out read-only; sue started editing it
+on 8 Jan 1975 in the directory <samp>/home/sue/cvs</samp> on
+the machine <code>workstn1</code>. Future files which are
+added should be checked out read-only. To represent
+this example here, we have shown a space after
+‘<samp>D</samp>’, ‘<samp>Ffile1</samp>’, and
‘<samp>Ffile2</samp>’, but in fact
+there must be a single tab character there and no spaces.
+</p>
+<hr>
+<a name="Locks"></a>
+<div class="header">
+<p>
+Next: <a href="#CVSROOT-storage" accesskey="n" rel="next">CVSROOT storage</a>,
Previous: <a href="#CVS-in-repository" accesskey="p" rel="prev">CVS in
repository</a>, Up: <a href="#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="CVS-locks-in-the-repository"></a>
+<h4 class="subsection">2.2.6 CVS locks in the repository</h4>
+
+<a name="index-_0023cvs_002erfl_002c-technical-details"></a>
+<a name="index-_0023cvs_002ewfl_002c-technical-details"></a>
+<a name="index-_0023cvs_002elock_002c-technical-details"></a>
+<a name="index-Locks_002c-cvs_002c-technical-details"></a>
+<p>For an introduction to <small>CVS</small> locks focusing on
+user-visible behavior, see <a href="#Concurrency">Concurrency</a>. The
+following section is aimed at people who are writing
+tools which want to access a <small>CVS</small> repository without
+interfering with other tools accessing the same
+repository. If you find yourself confused by concepts
+described here, like <em>read lock</em>, <em>write lock</em>,
+and <em>deadlock</em>, you might consult the literature on
+operating systems or databases.
+</p>
+<a name="index-_0023cvs_002etfl"></a>
+<p>Any file in the repository with a name starting
+with <samp>#cvs.rfl.</samp> is a read lock. Any file in
+the repository with a name starting with
+<samp>#cvs.wfl</samp> is a write lock. Old versions of <small>CVS</small>
+(before <small>CVS</small> 1.5) also created files with names starting
+with <samp>#cvs.tfl</samp>, but they are not discussed here.
+The directory <samp>#cvs.lock</samp> serves as a master
+lock. That is, one must obtain this lock first before
+creating any of the other locks.
+</p>
+<p>To obtain a read lock, first create the <samp>#cvs.lock</samp>
+directory. This operation must be atomic (which should
+be true for creating a directory under most operating
+systems). If it fails because the directory already
+existed, wait for a while and try again. After
+obtaining the <samp>#cvs.lock</samp> lock, create a file
+whose name is <samp>#cvs.rfl.</samp> followed by information
+of your choice (for example, hostname and process
+identification number). Then remove the
+<samp>#cvs.lock</samp> directory to release the master lock.
+Then proceed with reading the repository. When you are
+done, remove the <samp>#cvs.rfl</samp> file to release the
+read lock.
+</p>
+<p>To obtain a write lock, first create the
+<samp>#cvs.lock</samp> directory, as with read locks. Then
+check that there are no files whose names start with
+<samp>#cvs.rfl.</samp>. If there are, remove
+<samp>#cvs.lock</samp>, wait for a while, and try again. If
+there are no readers, then create a file whose name is
+<samp>#cvs.wfl</samp> followed by information of your choice
+(for example, hostname and process identification
+number). Hang on to the <samp>#cvs.lock</samp> lock. Proceed
+with writing the repository. When you are done, first
+remove the <samp>#cvs.wfl</samp> file and then the
+<samp>#cvs.lock</samp> directory. Note that unlike the
+<samp>#cvs.rfl</samp> file, the <samp>#cvs.wfl</samp> file is just
+informational; it has no effect on the locking operation
+beyond what is provided by holding on to the
+<samp>#cvs.lock</samp> lock itself.
+</p>
+<p>Note that each lock (write lock or read lock) only locks
+a single directory in the repository, including
+<samp>Attic</samp> and <samp>CVS</samp> but not including
+subdirectories which represent other directories under
+version control. To lock an entire tree, you need to
+lock each directory (note that if you fail to obtain
+any lock you need, you must release the whole tree
+before waiting and trying again, to avoid deadlocks).
+</p>
+<p>Note also that <small>CVS</small> expects write locks to control
+access to individual <samp>foo,v</samp> files. <small>RCS</small> has
+a scheme where the <samp>,foo,</samp> file serves as a lock,
+but <small>CVS</small> does not implement it and so taking out a
+<small>CVS</small> write lock is recommended. See the comments at
+rcs_internal_lockfile in the <small>CVS</small> source code for
+further discussion/rationale.
+</p>
+<hr>
+<a name="CVSROOT-storage"></a>
+<div class="header">
+<p>
+Previous: <a href="#Locks" accesskey="p" rel="prev">Locks</a>, Up: <a
href="#Repository-storage" accesskey="u" rel="up">Repository storage</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="How-files-are-stored-in-the-CVSROOT-directory"></a>
+<h4 class="subsection">2.2.7 How files are stored in the CVSROOT directory</h4>
+<a name="index-CVSROOT_002c-storage-of-files"></a>
+
+<p>The <samp>$CVSROOT/CVSROOT</samp> directory contains the
+various administrative files. In some ways this
+directory is just like any other directory in the
+repository; it contains <small>RCS</small> files whose names end
+in ‘<samp>,v</samp>’, and many of the <small>CVS</small> commands
operate
+on it the same way. However, there are a few
+differences.
+</p>
+<p>For each administrative file, in addition to the
+<small>RCS</small> file, there is also a checked out copy of the
+file. For example, there is an <small>RCS</small> file
+<samp>loginfo,v</samp> and a file <samp>loginfo</samp> which
+contains the latest revision contained in
+<samp>loginfo,v</samp>. When you check in an administrative
+file, <small>CVS</small> should print
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>and update the checked out copy in
+<samp>$CVSROOT/CVSROOT</samp>. If it does not, there is
+something wrong (see <a href="#BUGS">BUGS</a>). To add your own files
+to the files to be updated in this fashion, you can add
+them to the <samp>checkoutlist</samp> administrative file
+(see <a href="#checkoutlist">checkoutlist</a>).
+</p>
+<a name="index-modules_002edb"></a>
+<a name="index-modules_002epag"></a>
+<a name="index-modules_002edir"></a>
+<p>By default, the <samp>modules</samp> file behaves as
+described above. If the modules file is very large,
+storing it as a flat text file may make looking up
+modules slow (I’m not sure whether this is as much of a
+concern now as when <small>CVS</small> first evolved this
+feature; I haven’t seen benchmarks). Therefore, by
+making appropriate edits to the <small>CVS</small> source code
+one can store the modules file in a database which
+implements the <code>ndbm</code> interface, such as Berkeley
+db or GDBM. If this option is in use, then the modules
+database will be stored in the files <samp>modules.db</samp>,
+<samp>modules.pag</samp>, and/or <samp>modules.dir</samp>.
+</p>
+<p>For information on the meaning of the various
+administrative files, see <a href="#Administrative-files">Administrative
files</a>.
+</p>
+<hr>
+<a name="Working-directory-storage"></a>
+<div class="header">
+<p>
+Next: <a href="#Intro-administrative-files" accesskey="n" rel="next">Intro
administrative files</a>, Previous: <a href="#Repository-storage" accesskey="p"
rel="prev">Repository storage</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="How-data-is-stored-in-the-working-directory"></a>
+<h3 class="section">2.3 How data is stored in the working directory</h3>
+
+
+<a name="index-CVS-directory_002c-in-working-directory"></a>
+<p>While we are discussing <small>CVS</small> internals which may
+become visible from time to time, we might as well talk
+about what <small>CVS</small> puts in the <samp>CVS</samp> directories
+in the working directories. As with the repository,
+<small>CVS</small> handles this information and one can usually
+access it via <small>CVS</small> commands. But in some cases it
+may be useful to look at it, and other programs, such
+as the <code>jCVS</code> graphical user interface or the
+<code>VC</code> package for emacs, may need to look at it.
+Such programs should follow the recommendations in this
+section if they hope to be able to work with other
+programs which use those files, including future
+versions of the programs just mentioned and the
+command-line <small>CVS</small> client.
+</p>
+<p>The <samp>CVS</samp> directory contains several files.
+Programs which are reading this directory should
+silently ignore files which are in the directory but
+which are not documented here, to allow for future
+expansion.
+</p>
+<p>The files are stored according to the text file
+convention for the system in question. This means that
+working directories are not portable between systems
+with differing conventions for storing text files.
+This is intentional, on the theory that the files being
+managed by <small>CVS</small> probably will not be portable between
+such systems either.
+</p>
+<dl compact="compact">
+<dt><samp>Root</samp></dt>
+<dd><p>This file contains the current <small>CVS</small> root, as
+described in <a href="#Specifying-a-repository">Specifying a repository</a>.
+</p>
+<a name="index-Repository-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fRepository-file"></a>
+</dd>
+<dt><samp>Repository</samp></dt>
+<dd><p>This file contains the directory within the repository
+which the current directory corresponds with. It can
+be either an absolute pathname or a relative pathname;
+<small>CVS</small> has had the ability to read either format
+since at least version 1.3 or so. The relative
+pathname is relative to the root, and is the more
+sensible approach, but the absolute pathname is quite
+common and implementations should accept either. For
+example, after the command
+</p>
+<div class="example">
+<pre class="example">cvs -d :local:/usr/local/cvsroot checkout yoyodyne/tc
+</pre></div>
+
+<p><samp>Root</samp> will contain
+</p>
+<div class="example">
+<pre class="example">:local:/usr/local/cvsroot
+</pre></div>
+
+<p>and <samp>Repository</samp> will contain either
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">yoyodyne/tc
+</pre></div>
+
+<p>If the particular working directory does not correspond
+to a directory in the repository, then <samp>Repository</samp>
+should contain <samp>CVSROOT/Emptydir</samp>.
+<a name="index-Emptydir_002c-in-CVSROOT-directory"></a>
+<a name="index-CVSROOT_002fEmptydir-directory"></a>
+</p>
+<a name="index-Entries-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries-file"></a>
+</dd>
+<dt><samp>Entries</samp></dt>
+<dd><p>This file lists the files and directories in the
+working directory.
+The first character of each line indicates what sort of
+line it is. If the character is unrecognized, programs
+reading the file should silently skip that line, to
+allow for future expansion.
+</p>
+<p>If the first character is ‘<samp>/</samp>’, then the format is:
+</p>
+<div class="example">
+<pre
class="example">/<var>name</var>/<var>revision</var>/<var>timestamp</var>[+<var>conflict</var>]/<var>options</var>/<var>tagdate</var>
+</pre></div>
+
+<p>where ‘<samp>[</samp>’ and ‘<samp>]</samp>’ are not
part of the entry,
+but instead indicate that the ‘<samp>+</samp>’ and conflict
+marker are optional. <var>name</var> is the name of the
+file within the directory. <var>revision</var> is the
+revision that the file in the working derives from, or
+‘<samp>0</samp>’ for an added file, or
‘<samp>-</samp>’ followed by a
+revision for a removed file. <var>timestamp</var> is the
+timestamp of the file at the time that <small>CVS</small> created
+it; if the timestamp differs with the actual
+modification time of the file it means the file has
+been modified. It is stored in
+the format used by the ISO C asctime() function (for
+example, ‘<samp>Sun Apr 7 01:29:26 1996</samp>’). One may
+write a string which is not in that format, for
+example, ‘<samp>Result of merge</samp>’, to indicate that the
+file should always be considered to be modified. This
+is not a special case; to see whether a file is
+modified a program should take the timestamp of the file
+and simply do a string compare with <var>timestamp</var>.
+If there was a conflict, <var>conflict</var> can be set to
+the modification time of the file after the file has been
+written with conflict markers (see <a href="#Conflicts-example">Conflicts
example</a>).
+Thus if <var>conflict</var> is subsequently the same as the actual
+modification time of the file it means that the user
+has obviously not resolved the conflict. <var>options</var>
+contains sticky options (for example ‘<samp>-kb</samp>’ for a
+binary file). <var>tagdate</var> contains ‘<samp>T</samp>’
followed
+by a tag name, or ‘<samp>D</samp>’ for a date, followed by a
+sticky tag or date. Note that if <var>timestamp</var>
+contains a pair of timestamps separated by a space,
+rather than a single timestamp, you are dealing with a
+version of <small>CVS</small> earlier than <small>CVS</small> 1.5 (not
+documented here).
+</p>
+<p>The timezone on the timestamp in CVS/Entries (local or
+universal) should be the same as the operating system
+stores for the timestamp of the file itself. For
+example, on Unix the file’s timestamp is in universal
+time (UT), so the timestamp in CVS/Entries should be
+too. On <small>VMS</small>, the file’s timestamp is in local
+time, so <small>CVS</small> on <small>VMS</small> should use local time.
+This rule is so that files do not appear to be modified
+merely because the timezone changed (for example, to or
+from summer time).
+</p>
+<p>If the first character of a line in <samp>Entries</samp> is
+‘<samp>D</samp>’, then it indicates a subdirectory.
‘<samp>D</samp>’
+on a line all by itself indicates that the program
+which wrote the <samp>Entries</samp> file does record
+subdirectories (therefore, if there is such a line and
+no other lines beginning with ‘<samp>D</samp>’, one knows there
+are no subdirectories). Otherwise, the line looks
+like:
+</p>
+<div class="example">
+<pre
class="example">D/<var>name</var>/<var>filler1</var>/<var>filler2</var>/<var>filler3</var>/<var>filler4</var>
+</pre></div>
+
+<p>where <var>name</var> is the name of the subdirectory, and
+all the <var>filler</var> fields should be silently ignored,
+for future expansion. Programs which modify
+<code>Entries</code> files should preserve these fields.
+</p>
+<p>The lines in the <samp>Entries</samp> file can be in any order.
+</p>
+<a name="index-Entries_002eLog-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eLog-file"></a>
+</dd>
+<dt><samp>Entries.Log</samp></dt>
+<dd><p>This file does not record any information beyond that
+in <samp>Entries</samp>, but it does provide a way to update
+the information without having to rewrite the entire
+<samp>Entries</samp> file, including the ability to preserve
+the information even if the program writing
+<samp>Entries</samp> and <samp>Entries.Log</samp> abruptly aborts.
+Programs which are reading the <samp>Entries</samp> file
+should also check for <samp>Entries.Log</samp>. If the latter
+exists, they should read <samp>Entries</samp> and then apply
+the changes mentioned in <samp>Entries.Log</samp>. After
+applying the changes, the recommended practice is to
+rewrite <samp>Entries</samp> and then delete <samp>Entries.Log</samp>.
+The format of a line in <samp>Entries.Log</samp> is a single
+character command followed by a space followed by a
+line in the format specified for a line in
+<samp>Entries</samp>. The single character command is
+‘<samp>A</samp>’ to indicate that the entry is being added,
+‘<samp>R</samp>’ to indicate that the entry is being removed,
+or any other character to indicate that the entire line
+in <samp>Entries.Log</samp> should be silently ignored (for
+future expansion). If the second character of the line
+in <samp>Entries.Log</samp> is not a space, then it was
+written by an older version of <small>CVS</small> (not documented
+here).
+</p>
+<p>Programs which are writing rather than reading can
+safely ignore <samp>Entries.Log</samp> if they so choose.
+</p>
+<a name="index-Entries_002eBackup-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eBackup-file"></a>
+</dd>
+<dt><samp>Entries.Backup</samp></dt>
+<dd><p>This is a temporary file. Recommended usage is to
+write a new entries file to <samp>Entries.Backup</samp>, and
+then to rename it (atomically, where possible) to <samp>Entries</samp>.
+</p>
+<a name="index-Entries_002eStatic-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eStatic-file"></a>
+</dd>
+<dt><samp>Entries.Static</samp></dt>
+<dd><p>The only relevant thing about this file is whether it
+exists or not. If it exists, then it means that only
+part of a directory was gotten and <small>CVS</small> will
+not create additional files in that directory. To
+clear it, use the <code>update</code> command with the
+‘<samp>-d</samp>’ option, which will get the additional files
+and remove <samp>Entries.Static</samp>.
+</p>
+<a name="index-Tag-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fTag-file"></a>
+<a name="index-Sticky-tags_002fdates_002c-per_002ddirectory"></a>
+<a name="index-Per_002ddirectory-sticky-tags_002fdates"></a>
+</dd>
+<dt><samp>Tag</samp></dt>
+<dd><p>This file contains per-directory sticky tags or dates.
+The first character is ‘<samp>T</samp>’ for a branch tag,
+‘<samp>N</samp>’ for a non-branch tag, or
‘<samp>D</samp>’ for a date,
+or another character to mean the file should be
+silently ignored, for future expansion. This character
+is followed by the tag or date. Note that
+per-directory sticky tags or dates are used for things
+like applying to files which are newly added; they
+might not be the same as the sticky tags or dates on
+individual files. For general information on sticky
+tags and dates, see <a href="#Sticky-tags">Sticky tags</a>.
+</p>
+<a name="index-Notify-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fNotify-file"></a>
+</dd>
+<dt><samp>Notify</samp></dt>
+<dd><p>This file stores notifications (for example, for
+<code>edit</code> or <code>unedit</code>) which have not yet been
+sent to the server. Its format is not yet documented
+here.
+</p>
+<a name="index-Notify_002etmp-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fNotify_002etmp-file"></a>
+</dd>
+<dt><samp>Notify.tmp</samp></dt>
+<dd><p>This file is to <samp>Notify</samp> as <samp>Entries.Backup</samp>
+is to <samp>Entries</samp>. That is, to write <samp>Notify</samp>,
+first write the new contents to <samp>Notify.tmp</samp> and
+then (atomically where possible), rename it to
+<samp>Notify</samp>.
+</p>
+<a name="index-Base-directory_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBase-directory"></a>
+</dd>
+<dt><samp>Base</samp></dt>
+<dd><p>If watches are in use, then an <code>edit</code> command
+stores the original copy of the file in the <samp>Base</samp>
+directory. This allows the <code>unedit</code> command to
+operate even if it is unable to communicate with the
+server.
+</p>
+<a name="index-Baserev-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBaserev-file"></a>
+</dd>
+<dt><samp>Baserev</samp></dt>
+<dd><p>The file lists the revision for each of the files in
+the <samp>Base</samp> directory. The format is:
+</p>
+<div class="example">
+<pre class="example">B<var>name</var>/<var>rev</var>/<var>expansion</var>
+</pre></div>
+
+<p>where <var>expansion</var> should be ignored, to allow for
+future expansion.
+</p>
+<a name="index-Baserev_002etmp-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBaserev_002etmp-file"></a>
+</dd>
+<dt><samp>Baserev.tmp</samp></dt>
+<dd><p>This file is to <samp>Baserev</samp> as <samp>Entries.Backup</samp>
+is to <samp>Entries</samp>. That is, to write <samp>Baserev</samp>,
+first write the new contents to <samp>Baserev.tmp</samp> and
+then (atomically where possible), rename it to
+<samp>Baserev</samp>.
+</p>
+<a name="index-Template-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fTemplate-file"></a>
+</dd>
+<dt><samp>Template</samp></dt>
+<dd><p>This file contains the template specified by the
+<samp>rcsinfo</samp> file (see <a href="#rcsinfo">rcsinfo</a>). It is only
used
+by the client; the non-client/server <small>CVS</small> consults
+<samp>rcsinfo</samp> directly.
+</p></dd>
+</dl>
+
+<hr>
+<a name="Intro-administrative-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Multiple-repositories" accesskey="n" rel="next">Multiple
repositories</a>, Previous: <a href="#Working-directory-storage" accesskey="p"
rel="prev">Working directory storage</a>, Up: <a href="#Repository"
accesskey="u" rel="up">Repository</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="The-administrative-files"></a>
+<h3 class="section">2.4 The administrative files</h3>
+<a name="index-Administrative-files-_0028intro_0029"></a>
+<a name="index-Modules-file"></a>
+<a name="index-CVSROOT_002c-module-name"></a>
+<a name="index-Defining-modules-_0028intro_0029"></a>
+
+
+<p>The directory <samp>$CVSROOT/CVSROOT</samp> contains some <em>administrative
+files</em>. See <a href="#Administrative-files">Administrative files</a>, for
a complete description.
+You can use <small>CVS</small> without any of these files, but
+some commands work better when at least the
+<samp>modules</samp> file is properly set up.
+</p>
+<p>The most important of these files is the <samp>modules</samp>
+file. It defines all modules in the repository. This
+is a sample <samp>modules</samp> file.
+</p>
+<div class="example">
+<pre class="example">CVSROOT CVSROOT
+modules CVSROOT modules
+cvs gnu/cvs
+rcs gnu/rcs
+diff gnu/diff
+tc yoyodyne/tc
+</pre></div>
+
+<p>The <samp>modules</samp> file is line oriented. In its
+simplest form each line contains the name of the
+module, whitespace, and the directory where the module
+resides. The directory is a path relative to
+<code>$CVSROOT</code>. The last four lines in the example
+above are examples of such lines.
+</p>
+
+<p>The line that defines the module called ‘<samp>modules</samp>’
+uses features that are not explained here.
+See <a href="#modules">modules</a>, for a full explanation of all the
+available features.
+</p>
+<a name="Editing-administrative-files"></a>
+<h4 class="subsection">2.4.1 Editing administrative files</h4>
+<a name="index-Editing-administrative-files"></a>
+<a name="index-Administrative-files_002c-editing-them"></a>
+
+<p>You edit the administrative files in the same way that you would edit
+any other module. Use ‘<samp>cvs checkout CVSROOT</samp>’ to get
a working
+copy, edit it, and commit your changes in the normal way.
+</p>
+<p>It is possible to commit an erroneous administrative
+file. You can often fix the error and check in a new
+revision, but sometimes a particularly bad error in the
+administrative file makes it impossible to commit new
+revisions. If and when this happens, you can correct
+the problem by temporarily copying a corrected administrative file
+directly into the <code>$CVSROOT/CVSROOT</code> repository directory,
+then committing the same correction via a checkout of the <samp>CVSROOT</samp>
+module. It is important that the correction also be made via the
+checked out copy, or the next checkout and commit to the
+<code>CVSROOT</code> module will overwrite the correction that was
+copied directly into the repository, possibly breaking things in such
+a way as to prevent commits again.
+</p>
+<hr>
+<a name="Multiple-repositories"></a>
+<div class="header">
+<p>
+Next: <a href="#Creating-a-repository" accesskey="n" rel="next">Creating a
repository</a>, Previous: <a href="#Intro-administrative-files" accesskey="p"
rel="prev">Intro administrative files</a>, Up: <a href="#Repository"
accesskey="u" rel="up">Repository</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Multiple-repositories-1"></a>
+<h3 class="section">2.5 Multiple repositories</h3>
+<a name="index-Multiple-repositories"></a>
+<a name="index-Repositories_002c-multiple"></a>
+<a name="index-Many-repositories"></a>
+<a name="index-Parallel-repositories"></a>
+<a name="index-Disjoint-repositories"></a>
+<a name="index-CVSROOT_002c-multiple-repositories"></a>
+
+<p>In some situations it is a good idea to have more than
+one repository, for instance if you have two
+development groups that work on separate projects
+without sharing any code. All you have to do to have
+several repositories is to specify the appropriate
+repository, using the <code>CVSROOT</code> environment
+variable, the ‘<samp>-d</samp>’ option to <small>CVS</small>, or
(once
+you have checked out a working directory) by simply
+allowing <small>CVS</small> to use the repository that was used
+to check out the working directory
+(see <a href="#Specifying-a-repository">Specifying a repository</a>).
+</p>
+<p>The big advantage of having multiple repositories is
+that they can reside on different servers. With <small>CVS</small>
+version 1.10, a single command cannot recurse into
+directories from different repositories. With development
+versions of <small>CVS</small>, you can check out code from multiple
+servers into your working directory. <small>CVS</small> will
+recurse and handle all the details of making
+connections to as many server machines as necessary to
+perform the requested command. Here is an example of
+how to set up a working directory:
+</p>
+<div class="example">
+<pre class="example">cvs -d server1:/cvs co dir1
+cd dir1
+cvs -d server2:/root co sdir
+cvs update
+</pre></div>
+
+<p>The <code>cvs co</code> commands set up the working
+directory, and then the <code>cvs update</code> command will
+contact server2, to update the dir1/sdir subdirectory,
+and server1, to update everything else.
+</p>
+
+<hr>
+<a name="Creating-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="#Backing-up" accesskey="n" rel="next">Backing up</a>, Previous:
<a href="#Multiple-repositories" accesskey="p" rel="prev">Multiple
repositories</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Creating-a-repository-1"></a>
+<h3 class="section">2.6 Creating a repository</h3>
+
+<a name="index-Repository_002c-setting-up"></a>
+<a name="index-Creating-a-repository"></a>
+<a name="index-Setting-up-a-repository"></a>
+
+<p>This section describes how to set up a <small>CVS</small> repository for any
+sort of access method. After completing the setup described in this
+section, you should be able to access your <small>CVS</small> repository
immediately
+via the local access method and several remote access methods. For
+more information on setting up remote access to the repository you create
+in this section, please read the section on See <a
href="#Remote-repositories">Remote repositories</a>.
+</p>
+<p>To set up a <small>CVS</small> repository, first choose the
+machine and disk on which you want to store the
+revision history of the source files. CPU and memory
+requirements are modest, so most machines should be
+adequate. For details see <a href="#Server-requirements">Server
requirements</a>.
+</p>
+<p>To estimate disk space
+requirements, if you are importing RCS files from
+another system, the size of those files is the
+approximate initial size of your repository, or if you
+are starting without any version history, a rule of
+thumb is to allow for the server approximately three
+times the size of the code to be under <small>CVS</small> for the
+repository (you will eventually outgrow this, but not
+for a while). On the machines on which the developers
+will be working, you’ll want disk space for
+approximately one working directory for each developer
+(either the entire tree or a portion of it, depending
+on what each developer uses).
+</p>
+<p>The repository should be accessible
+(directly or via a networked file system) from all
+machines which want to use <small>CVS</small> in server or local
+mode; the client machines need not have any access to
+it other than via the <small>CVS</small> protocol. It is not
+possible to use <small>CVS</small> to read from a repository
+which one only has read access to; <small>CVS</small> needs to be
+able to create lock files (see <a href="#Concurrency">Concurrency</a>).
+</p>
+<a name="index-init-_0028subcommand_0029"></a>
+<p>To create a repository, run the <code>cvs init</code>
+command. It will set up an empty repository in the
+<small>CVS</small> root specified in the usual way
+(see <a href="#Repository">Repository</a>). For example,
+</p>
+<div class="example">
+<pre class="example">cvs -d /usr/local/cvsroot init
+</pre></div>
+
+<p><code>cvs init</code> is careful to never overwrite any
+existing files in the repository, so no harm is done if
+you run <code>cvs init</code> on an already set-up
+repository.
+</p>
+<p><code>cvs init</code> will enable history logging; if you
+don’t want that, remove the history file after running
+<code>cvs init</code>. See <a href="#history-file">history file</a>.
+</p>
+<hr>
+<a name="Backing-up"></a>
+<div class="header">
+<p>
+Next: <a href="#Moving-a-repository" accesskey="n" rel="next">Moving a
repository</a>, Previous: <a href="#Creating-a-repository" accesskey="p"
rel="prev">Creating a repository</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Backing-up-a-repository"></a>
+<h3 class="section">2.7 Backing up a repository</h3>
+<a name="index-Repository_002c-backing-up"></a>
+<a name="index-Backing-up_002c-repository"></a>
+
+<p>There is nothing particularly magical about the files
+in the repository; for the most part it is possible to
+back them up just like any other files. However, there
+are a few issues to consider.
+</p>
+<a name="index-Locks_002c-cvs_002c-and-backups"></a>
+<a name="index-_0023cvs_002erfl_002c-and-backups"></a>
+<p>The first is that to be paranoid, one should either not
+use <small>CVS</small> during the backup, or have the backup
+program lock <small>CVS</small> while doing the backup. To not
+use <small>CVS</small>, you might forbid logins to machines which
+can access the repository, turn off your <small>CVS</small>
+server, or similar mechanisms. The details would
+depend on your operating system and how you have
+<small>CVS</small> set up. To lock <small>CVS</small>, you would create
+<samp>#cvs.rfl</samp> locks in each repository directory.
+See <a href="#Concurrency">Concurrency</a>, for more on <small>CVS</small>
locks.
+Having said all this, if you just back up without any
+of these precautions, the results are unlikely to be
+particularly dire. Restoring from backup, the
+repository might be in an inconsistent state, but this
+would not be particularly hard to fix manually.
+</p>
+<p>When you restore a repository from backup, assuming
+that changes in the repository were made after the time
+of the backup, working directories which were not
+affected by the failure may refer to revisions which no
+longer exist in the repository. Trying to run <small>CVS</small>
+in such directories will typically produce an error
+message. One way to get those changes back into the
+repository is as follows:
+</p>
+<ul>
+<li> Get a new working directory.
+
+</li><li> Copy the files from the working directory from before
+the failure over to the new working directory (do not
+copy the contents of the <samp>CVS</samp> directories, of
+course).
+
+</li><li> Working in the new working directory, use commands such
+as <code>cvs update</code> and <code>cvs diff</code> to figure out
+what has changed, and then when you are ready, commit
+the changes into the repository.
+</li></ul>
+
+<hr>
+<a name="Moving-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="#Remote-repositories" accesskey="n" rel="next">Remote
repositories</a>, Previous: <a href="#Backing-up" accesskey="p"
rel="prev">Backing up</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Moving-a-repository-1"></a>
+<h3 class="section">2.8 Moving a repository</h3>
+<a name="index-Repository_002c-moving"></a>
+<a name="index-Moving-a-repository"></a>
+<a name="index-Copying-a-repository"></a>
+
+<p>Just as backing up the files in the repository is
+pretty much like backing up any other files, if you
+need to move a repository from one place to another it
+is also pretty much like just moving any other
+collection of files.
+</p>
+<p>The main thing to consider is that working directories
+point to the repository. The simplest way to deal with
+a moved repository is to just get a fresh working
+directory after the move. Of course, you’ll want to
+make sure that the old working directory had been
+checked in before the move, or you figured out some
+other way to make sure that you don’t lose any
+changes. If you really do want to reuse the existing
+working directory, it should be possible with manual
+surgery on the <samp>CVS/Repository</samp> files. You can
+see <a href="#Working-directory-storage">Working directory storage</a>, for
information on
+the <samp>CVS/Repository</samp> and <samp>CVS/Root</samp> files, but
+unless you are sure you want to bother, it probably
+isn’t worth it.
+</p>
+<hr>
+<a name="Remote-repositories"></a>
+<div class="header">
+<p>
+Next: <a href="#Read_002donly-access" accesskey="n" rel="next">Read-only
access</a>, Previous: <a href="#Moving-a-repository" accesskey="p"
rel="prev">Moving a repository</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Remote-repositories-1"></a>
+<h3 class="section">2.9 Remote repositories</h3>
+<a name="index-Repositories_002c-remote"></a>
+<a name="index-Remote-repositories"></a>
+<a name="index-Client_002fServer-Operation"></a>
+<a name="index-Server_002c-CVS"></a>
+<a name="index-Remote-repositories_002c-port-specification"></a>
+<a name="index-Repositories_002c-remote_002c-port-specification"></a>
+<a name="index-Client_002fServer-Operation_002c-port-specification"></a>
+<a
name="index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a
name="index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a
name="index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a name="index-port_002c-specifying-for-remote-repositories"></a>
+
+<p>Your working copy of the sources can be on a
+different machine than the repository. Using <small>CVS</small>
+in this manner is known as <em>client/server</em>
+operation. You run <small>CVS</small> on a machine which can
+mount your working directory, known as the
+<em>client</em>, and tell it to communicate to a machine
+which can mount the repository, known as the
+<em>server</em>. Generally, using a remote
+repository is just like using a local one, except that
+the format of the repository name is:
+</p>
+<div class="example">
+<pre
class="example">[:<var>method</var>:][[<var>user</var>][:<var>password</var>address@hidden<var>hostname</var>[:[<var>port</var>]]/path/to/repository
+</pre></div>
+
+<p>Specifying a password in the repository name is not recommended during
+checkout, since this will cause <small>CVS</small> to store a cleartext copy
of the
+password in each created directory. <code>cvs login</code> first instead
+(see <a href="#Password-authentication-client">Password authentication
client</a>).
+</p>
+<p>The details of exactly what needs to be set up depend
+on how you are connecting to the server.
+</p>
+<p>If <var>method</var> is not specified, and the repository
+name contains ‘<samp>:</samp>’, then the default is
<code>ext</code>
+or <code>server</code>, depending on your platform; both are
+described in <a href="#Connecting-via-rsh">Connecting via rsh</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Server-requirements"
accesskey="1">Server requirements</a>:</td><td> </td><td
align="left" valign="top">Memory and other resources for servers
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Connecting-via-rsh"
accesskey="2">Connecting via rsh</a>:</td><td> </td><td align="left"
valign="top">Using the <code>rsh</code> program to connect
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Password-authenticated"
accesskey="3">Password authenticated</a>:</td><td> </td><td
align="left" valign="top">Direct connections using passwords
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#GSSAPI-authenticated"
accesskey="4">GSSAPI authenticated</a>:</td><td> </td><td
align="left" valign="top">Direct connections using GSSAPI
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Kerberos-authenticated"
accesskey="5">Kerberos authenticated</a>:</td><td> </td><td
align="left" valign="top">Direct connections with Kerberos
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Connecting-via-fork"
accesskey="6">Connecting via fork</a>:</td><td> </td><td
align="left" valign="top">Using a forked <code>cvs server</code> to connect
+</td></tr>
+</table>
+
+<hr>
+<a name="Server-requirements"></a>
+<div class="header">
+<p>
+Next: <a href="#Connecting-via-rsh" accesskey="n" rel="next">Connecting via
rsh</a>, Up: <a href="#Remote-repositories" accesskey="u" rel="up">Remote
repositories</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Server-requirements-1"></a>
+<h4 class="subsection">2.9.1 Server requirements</h4>
+
+<p>The quick answer to what sort of machine is suitable as
+a server is that requirements are modest—a server
+with 32M of memory or even less can handle a fairly
+large source tree with a fair amount of activity.
+</p>
+<p>The real answer, of course, is more complicated.
+Estimating the known areas of large memory consumption
+should be sufficient to estimate memory requirements.
+There are two such areas documented here; other memory
+consumption should be small by comparison (if you find
+that is not the case, let us know, as described in
+<a href="#BUGS">BUGS</a>, so we can update this documentation).
+</p>
+<p>The first area of big memory consumption is large
+checkouts, when using the <small>CVS</small> server. The server
+consists of two processes for each client that it is
+serving. Memory consumption on the child process
+should remain fairly small. Memory consumption on the
+parent process, particularly if the network connection
+to the client is slow, can be expected to grow to
+slightly more than the size of the sources in a single
+directory, or two megabytes, whichever is larger.
+</p>
+<p>Multiplying the size of each <small>CVS</small> server by the
+number of servers which you expect to have active at
+one time should give an idea of memory requirements for
+the server. For the most part, the memory consumed by
+the parent process probably can be swap space rather
+than physical memory.
+</p>
+
+<p>The second area of large memory consumption is
+<code>diff</code>, when checking in large files. This is
+required even for binary files. The rule of thumb is
+to allow about ten times the size of the largest file
+you will want to check in, although five times may be
+adequate. For example, if you want to check in a file
+which is 10 megabytes, you should have 100 megabytes of
+memory on the machine doing the checkin (the server
+machine for client/server, or the machine running
+<small>CVS</small> for non-client/server). This can be swap
+space rather than physical memory. Because the memory
+is only required briefly, there is no particular need
+to allow memory for more than one such checkin at a
+time.
+</p>
+<p>Resource consumption for the client is even more
+modest—any machine with enough capacity to run the
+operating system in question should have little
+trouble.
+</p>
+<p>For information on disk space requirements, see
+<a href="#Creating-a-repository">Creating a repository</a>.
+</p>
+<hr>
+<a name="Connecting-via-rsh"></a>
+<div class="header">
+<p>
+Next: <a href="#Password-authenticated" accesskey="n" rel="next">Password
authenticated</a>, Previous: <a href="#Server-requirements" accesskey="p"
rel="prev">Server requirements</a>, Up: <a href="#Remote-repositories"
accesskey="u" rel="up">Remote repositories</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Connecting-with-rsh-or-ssh"></a>
+<h4 class="subsection">2.9.2 Connecting with rsh or ssh</h4>
+
+<a name="index-ssh"></a>
+<p><small>CVS</small> may use the ‘<samp>ssh</samp>’ protocol to
perform
+these operations, so the remote user host needs to have
+a either an agent like <code>ssh-agent</code> to hold
+credentials or a <samp>.shosts</samp> file which grants
+access to the local user. Note that the program that
+<small>CVS</small> uses for this purpose may be specified using
+the <samp>--with-ssh</samp> flag to configure.
+</p>
+<a name="index-rsh"></a>
+<p><small>CVS</small> uses the ‘<samp>rsh</samp>’ protocol to
perform these
+operations, so the remote user host needs to have a
+<samp>.rhosts</samp> file which grants access to the local
+user. Note that the program that <small>CVS</small> uses for this
+purpose may be specified using the <samp>--with-rsh</samp>
+flag to configure.
+</p>
+<p>For example, suppose you are the user ‘<samp>mozart</samp>’ on
+the local machine ‘<samp>toe.example.com</samp>’, and the
+server machine is ‘<samp>faun.example.org</samp>’. On
+faun, put the following line into the file
+<samp>.rhosts</samp> in ‘<samp>bach</samp>’’s home directory:
+</p>
+<div class="example">
+<pre class="example">toe.example.com mozart
+</pre></div>
+
+<p>Then test that ‘<samp>rsh</samp>’ is working with
+</p>
+<div class="example">
+<pre class="example">rsh -l bach faun.example.org 'echo $PATH'
+</pre></div>
+
+<p>To test that ‘<samp>ssh</samp>’ is working use
+</p>
+<div class="example">
+<pre class="example">ssh -l bach faun.example.org 'echo $PATH'
+</pre></div>
+
+<a name="index-CVS_005fSERVER_002c-environment-variable"></a>
+<p>Next you have to make sure that <code>rsh</code> will be able
+to find the server. Make sure that the path which
+<code>rsh</code> printed in the above example includes the
+directory containing a program named <code>cvs</code> which
+is the server. You need to set the path in
+<samp>.bashrc</samp>, <samp>.cshrc</samp>, etc., not <samp>.login</samp>
+or <samp>.profile</samp>. Alternately, you can set the
+environment variable <code>CVS_SERVER</code> on the client
+machine to the filename of the server you want to use,
+for example <samp>/usr/local/bin/cvs-1.6</samp>.
+</p>
+<p>There is no need to edit <samp>inetd.conf</samp> or start a
+<small>CVS</small> server daemon.
+</p>
+<a name="index-_003aserver_003a_002c-setting-up"></a>
+<a name="index-_003aext_003a_002c-setting-up"></a>
+<a name="index-_003aextssh_003a_002c-setting-up"></a>
+<a name="index-Kerberos_002c-using-kerberized-rsh"></a>
+<a name="index-SSH-_0028rsh-replacement_0029"></a>
+<a name="index-rsh-replacements-_0028Kerberized_002c-SSH_002c-_0026c_0029"></a>
+<p>There are three access methods that you use in <code>CVSROOT</code>
+for rsh or ssh. <code>:server:</code> specifies an internal rsh
+client, which is supported only by some <small>CVS</small> ports.
+<code>:extssh:</code> specifies an external ssh program. By
+default this is <code>ssh</code> (unless otherwise specified
+by the <samp>--with-ssh</samp> flag to configure) but you may set the
+<code>CVS_SSH</code> environment variable to invoke another
+program or wrapper script.
+<code>:ext:</code> specifies an external rsh program. By
+default this is <code>rsh</code> (unless otherwise specified
+by the <samp>--with-rsh</samp> flag to configure) but you may set the
+<code>CVS_RSH</code> environment variable to invoke another
+program which can access the remote server (for
+example, <code>remsh</code> on HP-UX 9 because <code>rsh</code> is
+something different). It must be a program which can
+transmit data to and from the server without modifying
+it; for example the Windows NT <code>rsh</code> is not
+suitable since it by default translates between CRLF
+and LF. The OS/2 <small>CVS</small> port has a hack to pass
‘<samp>-b</samp>’
+to <code>rsh</code> to get around this, but since this could
+potentially cause problems for programs other than the
+standard <code>rsh</code>, it may change in the future. If
+you set <code>CVS_RSH</code> to <code>SSH</code> or some other rsh
+replacement, the instructions in the rest of this
+section concerning <samp>.rhosts</samp> and so on are likely
+to be inapplicable; consult the documentation for your rsh
+replacement.
+</p>
+<p>Continuing our example, supposing you want to access
+the module <samp>foo</samp> in the repository
+<samp>/usr/local/cvsroot/</samp>, on machine
+<samp>faun.example.org</samp>, you are ready to go:
+</p>
+<div class="example">
+<pre class="example">cvs -d :ext:address@hidden:/usr/local/cvsroot checkout foo
+</pre></div>
+
+<p>(The <samp>bach@</samp> can be omitted if the username is
+the same on both the local and remote hosts.)
+</p>
+
+<hr>
+<a name="Password-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="#GSSAPI-authenticated" accesskey="n" rel="next">GSSAPI
authenticated</a>, Previous: <a href="#Connecting-via-rsh" accesskey="p"
rel="prev">Connecting via rsh</a>, Up: <a href="#Remote-repositories"
accesskey="u" rel="up">Remote repositories</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Direct-connection-with-password-authentication"></a>
+<h4 class="subsection">2.9.3 Direct connection with password
authentication</h4>
+
+<p>The <small>CVS</small> client can also connect to the server
+using a password protocol. This is particularly useful
+if using <code>rsh</code> is not feasible (for example,
+the server is behind a firewall), and Kerberos also is
+not available.
+</p>
+<p>To use this method, it is necessary to make
+some adjustments on both the server and client sides.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="#Password-authentication-server" accesskey="1">Password authentication
server</a>:</td><td> </td><td align="left" valign="top">Setting up
the server
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Password-authentication-client" accesskey="2">Password authentication
client</a>:</td><td> </td><td align="left" valign="top">Using the
client
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Password-authentication-security" accesskey="3">Password authentication
security</a>:</td><td> </td><td align="left" valign="top">What this
method does and does not do
+</td></tr>
+</table>
+
+<hr>
+<a name="Password-authentication-server"></a>
+<div class="header">
+<p>
+Next: <a href="#Password-authentication-client" accesskey="n"
rel="next">Password authentication client</a>, Up: <a
href="#Password-authenticated" accesskey="u" rel="up">Password
authenticated</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Setting-up-the-server-for-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.1 Setting up the server for password
authentication</h4>
+
+<p>First of all, you probably want to tighten the
+permissions on the <samp>$CVSROOT</samp> and
+<samp>$CVSROOT/CVSROOT</samp> directories. See <a
href="#Password-authentication-security">Password authentication security</a>,
for more details.
+</p>
+<a name="index-pserver-_0028subcommand_0029"></a>
+<a name="index-Remote-repositories_002c-port-specification-1"></a>
+<a name="index-Repositories_002c-remote_002c-port-specification-1"></a>
+<a name="index-Client_002fServer-Operation_002c-port-specification-1"></a>
+<a
name="index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a
name="index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a
name="index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a name="index-port_002c-specifying-for-remote-repositories-1"></a>
+<a name="index-Password-server_002c-setting-up"></a>
+<a name="index-Authenticating-server_002c-setting-up"></a>
+<a name="index-inetd_002c-configuring-for-pserver"></a>
+<a name="index-xinetd_002c-configuring-for-pserver"></a>
+<p>On the server side, the file <samp>/etc/inetd.conf</samp>
+needs to be edited so <code>inetd</code> knows to run the
+command <code>cvs pserver</code> when it receives a
+connection on the right port. By default, the port
+number is 2401; it would be different if your client
+were compiled with <code>CVS_AUTH_PORT</code> defined to
+something else, though. This can also be specified in the CVSROOT variable
+(see <a href="#Remote-repositories">Remote repositories</a>) or overridden
with the CVS_CLIENT_PORT
+environment variable (see <a href="#Environment-variables">Environment
variables</a>).
+</p>
+<p>If your <code>inetd</code> allows raw port numbers in
+<samp>/etc/inetd.conf</samp>, then the following (all on a
+single line in <samp>inetd.conf</samp>) should be sufficient:
+</p>
+<div class="example">
+<pre class="example">2401 stream tcp nowait root /usr/local/bin/cvs
+cvs -f --allow-root=/usr/cvsroot pserver
+</pre></div>
+
+<p>(You could also use the
+‘<samp>-T</samp>’ option to specify a temporary directory.)
+</p>
+<p>The ‘<samp>--allow-root</samp>’ option specifies the allowable
+<small>CVSROOT</small> directory. Clients which attempt to use a
+different <small>CVSROOT</small> directory will not be allowed to
+connect. If there is more than one <small>CVSROOT</small>
+directory which you want to allow, repeat the option.
+Unfortunately, many versions of <code>inetd</code> have very small
+limits on the number of arguments and/or the total length
+of the command. The usual solution to this problem is
+to have <code>inetd</code> run a shell script which then invokes
+<small>CVS</small> with the necessary arguments:
+</p>
+<div class="example">
+<pre class="example">#! /bin/sh
+exec /usr/local/bin/cvs -f \
+ --allow-root=/repo1 \
+ --allow-root=/repo2 \
+ ...
+ --allow-root=/repo<var>N</var> \
+ pserver
+</pre></div>
+
+<p>If your <code>inetd</code> wants a symbolic service
+name instead of a raw port number, then put this in
+<samp>/etc/services</samp>:
+</p>
+<div class="example">
+<pre class="example">cvspserver 2401/tcp
+</pre></div>
+
+<p>and put <code>cvspserver</code> instead of <code>2401</code> in
<samp>inetd.conf</samp>.
+</p>
+<p>If your system uses <code>xinetd</code> instead of <code>inetd</code>,
+the procedure is slightly different.
+Create a file called <samp>/etc/xinetd.d/cvspserver</samp> containing the
following:
+</p>
+<div class="example">
+<pre class="example">service cvspserver
+{
+ port = 2401
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ user = root
+ passenv = PATH
+ server = /usr/local/bin/cvs
+ server_args = -f --allow-root=/usr/cvsroot pserver
+}
+</pre></div>
+
+<p>(If <code>cvspserver</code> is defined in <samp>/etc/services</samp>, you
can omit
+the <code>port</code> line.)
+</p>
+<p>Once the above is taken care of, restart your
+<code>inetd</code>, or do whatever is necessary to force it
+to reread its initialization files.
+</p>
+<p>If you are having trouble setting this up, see
+<a href="#Connection">Connection</a>.
+</p>
+<a name="index-CVS-passwd-file"></a>
+<a name="index-passwd-_0028admin-file_0029"></a>
+<p>Because the client stores and transmits passwords in
+cleartext (almost—see <a
href="#Password-authentication-security">Password authentication security</a>,
for details), a separate <small>CVS</small> password
+file is generally used, so people don’t compromise
+their regular passwords when they access the
+repository. This file is
+<samp>$CVSROOT/CVSROOT/passwd</samp> (see <a
href="#Intro-administrative-files">Intro administrative files</a>). It uses a
colon-separated
+format, similar to <samp>/etc/passwd</samp> on Unix systems,
+except that it has fewer fields: <small>CVS</small> username,
+optional password, and an optional system username for
+<small>CVS</small> to run as if authentication succeeds. Here is
+an example <samp>passwd</samp> file with five entries:
+</p>
+<div class="example">
+<pre class="example">anonymous:
+bach:ULtgRLXo7NRxs
+spwang:1sOp854gDF3DY
+melissa:tGX1fS8sun6rY:pubcvs
+qproj:XR4EZcEs0szik:pubcvs
+</pre></div>
+
+<p>(The passwords are encrypted according to the standard
+Unix <code>crypt()</code> function, so it is possible to
+paste in passwords directly from regular Unix
+<samp>/etc/passwd</samp> files.)
+</p>
+<p>The first line in the example will grant access to any
+<small>CVS</small> client attempting to authenticate as user
+<code>anonymous</code>, no matter what password they use,
+including an empty password. (This is typical for
+sites granting anonymous read-only access; for
+information on how to do the "read-only" part, see
+<a href="#Read_002donly-access">Read-only access</a>.)
+</p>
+<p>The second and third lines will grant access to
+<code>bach</code> and <code>spwang</code> if they supply their
+respective plaintext passwords.
+</p>
+<a name="index-User-aliases"></a>
+<p>The fourth line will grant access to <code>melissa</code>, if
+she supplies the correct password, but her <small>CVS</small>
+operations will actually run on the server side under
+the system user <code>pubcvs</code>. Thus, there need not be
+any system user named <code>melissa</code>, but there
+<em>must</em> be one named <code>pubcvs</code>.
+</p>
+<p>The fifth line shows that system user identities can be
+shared: any client who successfully authenticates as
+<code>qproj</code> will actually run as <code>pubcvs</code>, just
+as <code>melissa</code> does. That way you could create a
+single, shared system user for each project in your
+repository, and give each developer their own line in
+the <samp>$CVSROOT/CVSROOT/passwd</samp> file. The <small>CVS</small>
+username on each line would be different, but the
+system username would be the same. The reason to have
+different <small>CVS</small> usernames is that <small>CVS</small> will log
their
+actions under those names: when <code>melissa</code> commits
+a change to a project, the checkin is recorded in the
+project’s history under the name <code>melissa</code>, not
+<code>pubcvs</code>. And the reason to have them share a
+system username is so that you can arrange permissions
+in the relevant area of the repository such that only
+that account has write-permission there.
+</p>
+<p>If the system-user field is present, all
+password-authenticated <small>CVS</small> commands run as that
+user; if no system user is specified, <small>CVS</small> simply
+takes the <small>CVS</small> username as the system username and
+runs commands as that user. In either case, if there
+is no such user on the system, then the <small>CVS</small>
+operation will fail (regardless of whether the client
+supplied a valid password).
+</p>
+<p>The password and system-user fields can both be omitted
+(and if the system-user field is omitted, then also
+omit the colon that would have separated it from the
+encrypted password). For example, this would be a
+valid <samp>$CVSROOT/CVSROOT/passwd</samp> file:
+</p>
+<div class="example">
+<pre class="example">anonymous::pubcvs
+fish:rKa5jzULzmhOo:kfogel
+sussman:1sOp854gDF3DY
+</pre></div>
+
+<p>When the password field is omitted or empty, then the
+client’s authentication attempt will succeed with any
+password, including the empty string. However, the
+colon after the <small>CVS</small> username is always necessary,
+even if the password is empty.
+</p>
+<p><small>CVS</small> can also fall back to use system authentication.
+When authenticating a password, the server first checks
+for the user in the <samp>$CVSROOT/CVSROOT/passwd</samp>
+file. If it finds the user, it will use that entry for
+authentication as described above. But if it does not
+find the user, or if the <small>CVS</small> <samp>passwd</samp> file
+does not exist, then the server can try to authenticate
+the username and password using the operating system’s
+user-lookup routines (this "fallback" behavior can be
+disabled by setting <code>SystemAuth=no</code> in the
+<small>CVS</small> <samp>config</samp> file, see <a
href="#config">config</a>). Be
+aware, however, that falling back to system
+authentication might be a security risk: <small>CVS</small>
+operations would then be authenticated with that user’s
+regular login password, and the password flies across
+the network in plaintext. See <a
href="#Password-authentication-security">Password authentication security</a>
for more on this.
+</p>
+<p>Right now, the only way to put a password in the
+<small>CVS</small> <samp>passwd</samp> file is to paste it there from
+somewhere else. Someday, there may be a <code>cvs
+passwd</code> command.
+</p>
+<p>Unlike many of the files in <samp>$CVSROOT/CVSROOT</samp>, it
+is normal to edit the <samp>passwd</samp> file in-place,
+rather than via <small>CVS</small>. This is because of the
+possible security risks of having the <samp>passwd</samp>
+file checked out to people’s working copies. If you do
+want to include the <samp>passwd</samp> file in checkouts of
+<samp>$CVSROOT/CVSROOT</samp>, see <a href="#checkoutlist">checkoutlist</a>.
+</p>
+
+<hr>
+<a name="Password-authentication-client"></a>
+<div class="header">
+<p>
+Next: <a href="#Password-authentication-security" accesskey="n"
rel="next">Password authentication security</a>, Previous: <a
href="#Password-authentication-server" accesskey="p" rel="prev">Password
authentication server</a>, Up: <a href="#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Using-the-client-with-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.2 Using the client with password
authentication</h4>
+<a name="index-Login-_0028subcommand_0029"></a>
+<a name="index-Password-client_002c-using"></a>
+<a name="index-Authenticated-client_002c-using"></a>
+<a name="index-_003apserver_003a_002c-setting-up"></a>
+<p>To run a <small>CVS</small> command on a remote repository via
+the password-authenticating server, one specifies the
+<code>pserver</code> protocol, optional username, repository host, an
+optional port number, and path to the repository. For example:
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:faun.example.org:/usr/local/cvsroot
checkout someproj
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">CVSROOT=:pserver:address@hidden:2401/usr/local/cvsroot
+cvs checkout someproj
+</pre></div>
+
+<p>However, unless you’re connecting to a public-access
+repository (i.e., one where that username doesn’t
+require a password), you’ll need to supply a password or <em>log in</em>
first.
+Logging in verifies your password with the repository and stores it in a file.
+It’s done with the <code>login</code> command, which will
+prompt you interactively for the password if you didn’t supply one as
part of
+<var>$CVSROOT</var>:
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:address@hidden:/usr/local/cvsroot login
+CVS password:
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:bach:address@hidden:/usr/local/cvsroot
login
+</pre></div>
+
+<p>After you enter the password, <small>CVS</small> verifies it with
+the server. If the verification succeeds, then that
+combination of username, host, repository, and password
+is permanently recorded, so future transactions with
+that repository won’t require you to run <code>cvs
+login</code>. (If verification fails, <small>CVS</small> will exit
+complaining that the password was incorrect, and
+nothing will be recorded.)
+</p>
+<p>The records are stored, by default, in the file
+<samp>$HOME/.cvspass</samp>. That file’s format is
+human-readable, and to a degree human-editable, but
+note that the passwords are not stored in
+cleartext—they are trivially encoded to protect them
+from "innocent" compromise (i.e., inadvertent viewing
+by a system administrator or other non-malicious
+person).
+</p>
+<a name="index-CVS_005fPASSFILE_002c-environment-variable"></a>
+<p>You can change the default location of this file by
+setting the <code>CVS_PASSFILE</code> environment variable.
+If you use this variable, make sure you set it
+<em>before</em> <code>cvs login</code> is run. If you were to
+set it after running <code>cvs login</code>, then later
+<small>CVS</small> commands would be unable to look up the
+password for transmission to the server.
+</p>
+<p>Once you have logged in, all <small>CVS</small> commands using
+that remote repository and username will authenticate
+with the stored password. So, for example
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:address@hidden:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<p>should just work (unless the password changes on the
+server side, in which case you’ll have to re-run
+<code>cvs login</code>).
+</p>
+<p>Note that if the ‘<samp>:pserver:</samp>’ were not present in
+the repository specification, <small>CVS</small> would assume it
+should use <code>rsh</code> to connect with the server
+instead (see <a href="#Connecting-via-rsh">Connecting via rsh</a>).
+</p>
+<p>Of course, once you have a working copy checked out and
+are running <small>CVS</small> commands from within it, there is
+no longer any need to specify the repository
+explicitly, because <small>CVS</small> can deduce the repository
+from the working copy’s <samp>CVS</samp> subdirectory.
+</p>
+<a name="index-Logout-_0028subcommand_0029"></a>
+<p>The password for a given remote repository can be
+removed from the <code>CVS_PASSFILE</code> by using the
+<code>cvs logout</code> command.
+</p>
+<hr>
+<a name="Password-authentication-security"></a>
+<div class="header">
+<p>
+Previous: <a href="#Password-authentication-client" accesskey="p"
rel="prev">Password authentication client</a>, Up: <a
href="#Password-authenticated" accesskey="u" rel="up">Password
authenticated</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Security-considerations-with-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.3 Security considerations with password
authentication</h4>
+
+<a name="index-Security_002c-of-pserver"></a>
+<p>The passwords are stored on the client side in a
+trivial encoding of the cleartext, and transmitted in
+the same encoding. The encoding is done only to
+prevent inadvertent password compromises (i.e., a
+system administrator accidentally looking at the file),
+and will not prevent even a naive attacker from gaining
+the password.
+</p>
+<p>The separate <small>CVS</small> password file (see <a
href="#Password-authentication-server">Password authentication server</a>)
allows people
+to use a different password for repository access than
+for login access. On the other hand, once a user has
+non-read-only
+access to the repository, she can execute programs on
+the server system through a variety of means. Thus, repository
+access implies fairly broad system access as well. It
+might be possible to modify <small>CVS</small> to prevent that,
+but no one has done so as of this writing.
+</p>
+<p>Note that because the <samp>$CVSROOT/CVSROOT</samp> directory
+contains <samp>passwd</samp> and other files which are used
+to check security, you must control the permissions on
+this directory as tightly as the permissions on
+<samp>/etc</samp>. The same applies to the <samp>$CVSROOT</samp>
+directory itself and any directory
+above it in the tree. Anyone who has write access to
+such a directory will have the ability to become any
+user on the system. Note that these permissions are
+typically tighter than you would use if you are not
+using pserver.
+</p>
+<p>In summary, anyone who gets the password gets
+repository access (which may imply some measure of general system
+access as well). The password is available to anyone
+who can sniff network packets or read a protected
+(i.e., user read-only) file. If you want real
+security, get Kerberos.
+</p>
+<hr>
+<a name="GSSAPI-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="#Kerberos-authenticated" accesskey="n" rel="next">Kerberos
authenticated</a>, Previous: <a href="#Password-authenticated" accesskey="p"
rel="prev">Password authenticated</a>, Up: <a href="#Remote-repositories"
accesskey="u" rel="up">Remote repositories</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Direct-connection-with-GSSAPI"></a>
+<h4 class="subsection">2.9.4 Direct connection with GSSAPI</h4>
+
+<a name="index-GSSAPI"></a>
+<a name="index-Security_002c-GSSAPI"></a>
+<a name="index-_003agserver_003a_002c-setting-up"></a>
+<a name="index-Kerberos_002c-using-_003agserver_003a"></a>
+<p>GSSAPI is a generic interface to network security
+systems such as Kerberos 5.
+If you have a working GSSAPI library, you can have
+<small>CVS</small> connect via a direct <small>TCP</small> connection,
+authenticating with GSSAPI.
+</p>
+<p>To do this, <small>CVS</small> needs to be compiled with GSSAPI
+support; when configuring <small>CVS</small> it tries to detect
+whether GSSAPI libraries using Kerberos version 5 are
+present. You can also use the <samp>--with-gssapi</samp>
+flag to configure.
+</p>
+<p>The connection is authenticated using GSSAPI, but the
+message stream is <em>not</em> authenticated by default.
+You must use the <code>-a</code> global option to request
+stream authentication.
+</p>
+<p>The data transmitted is <em>not</em> encrypted by
+default. Encryption support must be compiled into both
+the client and the server; use the
+<samp>--enable-encrypt</samp> configure option to turn it on.
+You must then use the <code>-x</code> global option to
+request encryption.
+</p>
+<p>GSSAPI connections are handled on the server side by
+the same server which handles the password
+authentication server; see <a href="#Password-authentication-server">Password
authentication server</a>. If you are using a GSSAPI mechanism such as
+Kerberos which provides for strong authentication, you
+will probably want to disable the ability to
+authenticate via cleartext passwords. To do so, create
+an empty <samp>CVSROOT/passwd</samp> password file, and set
+<code>SystemAuth=no</code> in the config file
+(see <a href="#config">config</a>).
+</p>
+<p>The GSSAPI server uses a principal name of
+cvs/<var>hostname</var>, where <var>hostname</var> is the
+canonical name of the server host. You will have to
+set this up as required by your GSSAPI mechanism.
+</p>
+<p>To connect using GSSAPI, use the ‘<samp>:gserver:</samp>’
method. For
+example,
+</p>
+<div class="example">
+<pre class="example">cvs -d :gserver:faun.example.org:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<hr>
+<a name="Kerberos-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="#Connecting-via-fork" accesskey="n" rel="next">Connecting via
fork</a>, Previous: <a href="#GSSAPI-authenticated" accesskey="p"
rel="prev">GSSAPI authenticated</a>, Up: <a href="#Remote-repositories"
accesskey="u" rel="up">Remote repositories</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Direct-connection-with-Kerberos"></a>
+<h4 class="subsection">2.9.5 Direct connection with Kerberos</h4>
+
+<a name="index-Kerberos_002c-using-_003akserver_003a"></a>
+<a name="index-Security_002c-Kerberos"></a>
+<a name="index-_003akserver_003a_002c-setting-up"></a>
+<p>The easiest way to use Kerberos is to use the Kerberos
+<code>rsh</code>, as described in <a href="#Connecting-via-rsh">Connecting via
rsh</a>.
+The main disadvantage of using rsh is that all the data
+needs to pass through additional programs, so it may be
+slower. So if you have Kerberos installed you can
+connect via a direct <small>TCP</small> connection,
+authenticating with Kerberos.
+</p>
+<p>This section concerns the Kerberos network security
+system, version 4. Kerberos version 5 is supported via
+the GSSAPI generic network security interface, as
+described in the previous section.
+</p>
+<p>To do this, <small>CVS</small> needs to be compiled with Kerberos
+support; when configuring <small>CVS</small> it tries to detect
+whether Kerberos is present or you can use the
+<samp>--with-krb4</samp> flag to configure.
+</p>
+<p>The data transmitted is <em>not</em> encrypted by
+default. Encryption support must be compiled into both
+the client and server; use the
+<samp>--enable-encryption</samp> configure option to turn it
+on. You must then use the <code>-x</code> global option to
+request encryption.
+</p>
+<a name="index-CVS_005fCLIENT_005fPORT"></a>
+<p>You need to edit <samp>inetd.conf</samp> on the server
+machine to run <code>cvs kserver</code>. The client uses
+port 1999 by default; if you want to use another port
+specify it in the <code>CVSROOT</code> (see <a
href="#Remote-repositories">Remote repositories</a>)
+or the <code>CVS_CLIENT_PORT</code> environment variable
+(see <a href="#Environment-variables">Environment variables</a>) on the client.
+</p>
+<a name="index-kinit"></a>
+<p>When you want to use <small>CVS</small>, get a ticket in the
+usual way (generally <code>kinit</code>); it must be a ticket
+which allows you to log into the server machine. Then
+you are ready to go:
+</p>
+<div class="example">
+<pre class="example">cvs -d :kserver:faun.example.org:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<p>Previous versions of <small>CVS</small> would fall back to a
+connection via rsh; this version will not do so.
+</p>
+<hr>
+<a name="Connecting-via-fork"></a>
+<div class="header">
+<p>
+Previous: <a href="#Kerberos-authenticated" accesskey="p" rel="prev">Kerberos
authenticated</a>, Up: <a href="#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Connecting-with-fork"></a>
+<h4 class="subsection">2.9.6 Connecting with fork</h4>
+
+<a name="index-fork_002c-access-method"></a>
+<a name="index-_003afork_003a_002c-setting-up"></a>
+<p>This access method allows you to connect to a
+repository on your local disk via the remote protocol.
+In other words it does pretty much the same thing as
+<code>:local:</code>, but various quirks, bugs and the like are
+those of the remote <small>CVS</small> rather than the local
+<small>CVS</small>.
+</p>
+<p>For day-to-day operations you might prefer either
+<code>:local:</code> or <code>:fork:</code>, depending on your
+preferences. Of course <code>:fork:</code> comes in
+particularly handy in testing or
+debugging <code>cvs</code> and the remote protocol.
+Specifically, we avoid all of the network-related
+setup/configuration, timeouts, and authentication
+inherent in the other remote access methods but still
+create a connection which uses the remote protocol.
+</p>
+<p>To connect using the <code>fork</code> method, use
+‘<samp>:fork:</samp>’ and the pathname to your local
+repository. For example:
+</p>
+<div class="example">
+<pre class="example">cvs -d :fork:/usr/local/cvsroot checkout foo
+</pre></div>
+
+<a name="index-CVS_005fSERVER_002c-and-_003afork_003a"></a>
+<p>As with <code>:ext:</code>, the server is called
‘<samp>cvs</samp>’
+by default, or the value of the <code>CVS_SERVER</code>
+environment variable.
+</p>
+<hr>
+<a name="Read_002donly-access"></a>
+<div class="header">
+<p>
+Next: <a href="#Server-temporary-directory" accesskey="n" rel="next">Server
temporary directory</a>, Previous: <a href="#Remote-repositories" accesskey="p"
rel="prev">Remote repositories</a>, Up: <a href="#Repository" accesskey="u"
rel="up">Repository</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Read_002donly-repository-access"></a>
+<h3 class="section">2.10 Read-only repository access</h3>
+<a name="index-Read_002donly-repository-access"></a>
+<a name="index-readers-_0028admin-file_0029"></a>
+<a name="index-writers-_0028admin-file_0029"></a>
+
+<p>It is possible to grant read-only repository
+access to people using the password-authenticated
+server (see <a href="#Password-authenticated">Password authenticated</a>).
(The
+other access methods do not have explicit support for
+read-only users because those methods all assume login
+access to the repository machine anyway, and therefore
+the user can do whatever local file permissions allow
+her to do.)
+</p>
+<p>A user who has read-only access can do only
+those <small>CVS</small> operations which do not modify the
+repository, except for certain “administrative” files
+(such as lock files and the history file). It may be
+desirable to use this feature in conjunction with
+user-aliasing (see <a href="#Password-authentication-server">Password
authentication server</a>).
+</p>
+<p>Unlike with previous versions of <small>CVS</small>, read-only
+users should be able merely to read the repository, and
+not to execute programs on the server or otherwise gain
+unexpected levels of access. Or to be more accurate,
+the <em>known</em> holes have been plugged. Because this
+feature is new and has not received a comprehensive
+security audit, you should use whatever level of
+caution seems warranted given your attitude concerning
+security.
+</p>
+<p>There are two ways to specify read-only access
+for a user: by inclusion, and by exclusion.
+</p>
+<p>"Inclusion" means listing that user
+specifically in the <samp>$CVSROOT/CVSROOT/readers</samp>
+file, which is simply a newline-separated list of
+users. Here is a sample <samp>readers</samp> file:
+</p>
+<div class="example">
+<pre class="example">melissa
+splotnik
+jrandom
+</pre></div>
+
+<p>(Don’t forget the newline after the last user.)
+</p>
+<p>"Exclusion" means explicitly listing everyone
+who has <em>write</em> access—if the file
+</p>
+<div class="example">
+<pre class="example">$CVSROOT/CVSROOT/writers
+</pre></div>
+
+<p>exists, then only
+those users listed in it have write access, and
+everyone else has read-only access (of course, even the
+read-only users still need to be listed in the
+<small>CVS</small> <samp>passwd</samp> file). The
+<samp>writers</samp> file has the same format as the
+<samp>readers</samp> file.
+</p>
+<p>Note: if your <small>CVS</small> <samp>passwd</samp>
+file maps cvs users onto system users (see <a
href="#Password-authentication-server">Password authentication server</a>),
make sure you deny or grant
+read-only access using the <em>cvs</em> usernames, not
+the system usernames. That is, the <samp>readers</samp> and
+<samp>writers</samp> files contain cvs usernames, which may
+or may not be the same as system usernames.
+</p>
+<p>Here is a complete description of the server’s
+behavior in deciding whether to grant read-only or
+read-write access:
+</p>
+<p>If <samp>readers</samp> exists, and this user is
+listed in it, then she gets read-only access. Or if
+<samp>writers</samp> exists, and this user is NOT listed in
+it, then she also gets read-only access (this is true
+even if <samp>readers</samp> exists but she is not listed
+there). Otherwise, she gets full read-write access.
+</p>
+<p>Of course there is a conflict if the user is
+listed in both files. This is resolved in the more
+conservative way, it being better to protect the
+repository too much than too little: such a user gets
+read-only access.
+</p>
+<hr>
+<a name="Server-temporary-directory"></a>
+<div class="header">
+<p>
+Previous: <a href="#Read_002donly-access" accesskey="p" rel="prev">Read-only
access</a>, Up: <a href="#Repository" accesskey="u" rel="up">Repository</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Temporary-directories-for-the-server"></a>
+<h3 class="section">2.11 Temporary directories for the server</h3>
+<a name="index-Temporary-directories_002c-and-server"></a>
+<a name="index-Server_002c-temporary-directories"></a>
+
+<p>While running, the <small>CVS</small> server creates temporary
+directories. They are named
+</p>
+<div class="example">
+<pre class="example">cvs-serv<var>pid</var>
+</pre></div>
+
+<p>where <var>pid</var> is the process identification number of
+the server.
+They are located in the directory specified by
+the ‘<samp>-T</samp>’ global option (see <a
href="#Global-options">Global options</a>),
+the <code>TMPDIR</code> environment variable (see <a
href="#Environment-variables">Environment variables</a>),
+or, failing that, <samp>/tmp</samp>.
+</p>
+<p>In most cases the server will remove the temporary
+directory when it is done, whether it finishes normally
+or abnormally. However, there are a few cases in which
+the server does not or cannot remove the temporary
+directory, for example:
+</p>
+<ul>
+<li> If the server aborts due to an internal server error,
+it may preserve the directory to aid in debugging
+
+</li><li> If the server is killed in a way that it has no way of
+cleaning up (most notably, ‘<samp>kill -KILL</samp>’ on unix).
+
+</li><li> If the system shuts down without an orderly shutdown,
+which tells the server to clean up.
+</li></ul>
+
+<p>In cases such as this, you will need to manually remove
+the <samp>cvs-serv<var>pid</var></samp> directories. As long as
+there is no server running with process identification
+number <var>pid</var>, it is safe to do so.
+</p>
+<hr>
+<a name="Starting-a-new-project"></a>
+<div class="header">
+<p>
+Next: <a href="#Revisions" accesskey="n" rel="next">Revisions</a>, Previous:
<a href="#Repository" accesskey="p" rel="prev">Repository</a>, Up: <a
href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Starting-a-project-with-CVS"></a>
+<h2 class="chapter">3 Starting a project with CVS</h2>
+<a name="index-Starting-a-project-with-CVS"></a>
+<a name="index-Creating-a-project"></a>
+
+<p>Because renaming files and moving them between
+directories is somewhat inconvenient, the first thing
+you do when you start a new project should be to think
+through your file organization. It is not impossible
+to rename or move files, but it does increase the
+potential for confusion and <small>CVS</small> does have some
+quirks particularly in the area of renaming
+directories. See <a href="#Moving-files">Moving files</a>.
+</p>
+<p>What to do next depends on the situation at hand.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Setting-up-the-files"
accesskey="1">Setting up the files</a>:</td><td> </td><td
align="left" valign="top">Getting the files into the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Defining-the-module"
accesskey="2">Defining the module</a>:</td><td> </td><td
align="left" valign="top">How to make a module of the files
+</td></tr>
+</table>
+
+<hr>
+<a name="Setting-up-the-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Defining-the-module" accesskey="n" rel="next">Defining the
module</a>, Up: <a href="#Starting-a-new-project" accesskey="u"
rel="up">Starting a new project</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Setting-up-the-files-1"></a>
+<h3 class="section">3.1 Setting up the files</h3>
+
+<p>The first step is to create the files inside the repository. This can
+be done in a couple of different ways.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#From-files"
accesskey="1">From files</a>:</td><td> </td><td align="left"
valign="top">This method is useful with old projects
+ where files already exists.
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#From-other-version-control-systems" accesskey="2">From other version
control systems</a>:</td><td> </td><td align="left" valign="top">Old
projects where you want to
+ preserve history from another system.
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#From-scratch"
accesskey="3">From scratch</a>:</td><td> </td><td align="left"
valign="top">Creating a directory tree from scratch.
+</td></tr>
+</table>
+
+<hr>
+<a name="From-files"></a>
+<div class="header">
+<p>
+Next: <a href="#From-other-version-control-systems" accesskey="n"
rel="next">From other version control systems</a>, Up: <a
href="#Setting-up-the-files" accesskey="u" rel="up">Setting up the files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Creating-a-directory-tree-from-a-number-of-files"></a>
+<h4 class="subsection">3.1.1 Creating a directory tree from a number of
files</h4>
+<a name="index-Importing-files"></a>
+
+<p>When you begin using <small>CVS</small>, you will probably already have
several
+projects that can be
+put under <small>CVS</small> control. In these cases the easiest way is to
use the
+<code>import</code> command. An example is probably the easiest way to
+explain how to use it. If the files you want to install in
+<small>CVS</small> reside in <samp><var>wdir</var></samp>, and you want them
to appear in the
+repository as <samp>$CVSROOT/yoyodyne/<var>rdir</var></samp>, you can do this:
+</p>
+<div class="example">
+<pre class="example">$ cd <var>wdir</var>
+$ cvs import -m "Imported sources" yoyodyne/<var>rdir</var> yoyo
start
+</pre></div>
+
+<p>Unless you supply a log message with the ‘<samp>-m</samp>’
+flag, <small>CVS</small> starts an editor and prompts for a
+message. The string ‘<samp>yoyo</samp>’ is a <em>vendor tag</em>,
+and ‘<samp>start</samp>’ is a <em>release tag</em>. They may fill
+no purpose in this context, but since <small>CVS</small> requires
+them they must be present. See <a href="#Tracking-sources">Tracking
sources</a>, for
+more information about them.
+</p>
+<p>You can now verify that it worked, and remove your
+original source directory.
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs checkout yoyodyne/<var>rdir</var> # <span
class="roman">Explanation below</span>
+$ diff -r <var>wdir</var> yoyodyne/<var>rdir</var>
+$ rm -r <var>wdir</var>
+</pre></div>
+
+<p>Erasing the original sources is a good idea, to make sure that you do
+not accidentally edit them in <var>wdir</var>, bypassing <small>CVS</small>.
+Of course, it would be wise to make sure that you have
+a backup of the sources before you remove them.
+</p>
+<p>The <code>checkout</code> command can either take a module
+name as argument (as it has done in all previous
+examples) or a path name relative to <code>$CVSROOT</code>,
+as it did in the example above.
+</p>
+<p>It is a good idea to check that the permissions
+<small>CVS</small> sets on the directories inside <code>$CVSROOT</code>
+are reasonable, and that they belong to the proper
+groups. See <a href="#File-permissions">File permissions</a>.
+</p>
+<p>If some of the files you want to import are binary, you
+may want to use the wrappers features to specify which
+files are binary and which are not. See <a href="#Wrappers">Wrappers</a>.
+</p>
+<hr>
+<a name="From-other-version-control-systems"></a>
+<div class="header">
+<p>
+Next: <a href="#From-scratch" accesskey="n" rel="next">From scratch</a>,
Previous: <a href="#From-files" accesskey="p" rel="prev">From files</a>, Up: <a
href="#Setting-up-the-files" accesskey="u" rel="up">Setting up the files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Creating-Files-From-Other-Version-Control-Systems"></a>
+<h4 class="subsection">3.1.2 Creating Files From Other Version Control
Systems</h4>
+<a name="index-Importing-files_002c-from-other-version-control-systems"></a>
+
+<p>If you have a project which you are maintaining with
+another version control system, such as <small>RCS</small>, you
+may wish to put the files from that project into
+<small>CVS</small>, and preserve the revision history of the
+files.
+</p>
+<dl compact="compact">
+<dd><a name="index-RCS_002c-importing-files-from"></a>
+</dd>
+<dt>From RCS</dt>
+<dd><p>If you have been using <small>RCS</small>, find the <small>RCS</small>
+files—usually a file named <samp>foo.c</samp> will have its
+<small>RCS</small> file in <samp>RCS/foo.c,v</samp> (but it could be
+other places; consult the <small>RCS</small> documentation for
+details). Then create the appropriate directories in
+<small>CVS</small> if they do not already exist. Then copy the
+files into the appropriate directories in the <small>CVS</small>
+repository (the name in the repository must be the name
+of the source file with ‘<samp>,v</samp>’ added; the files go
+directly in the appropriate directory of the repository,
+not in an <samp>RCS</samp> subdirectory). This is one of the
+few times when it is a good idea to access the <small>CVS</small>
+repository directly, rather than using <small>CVS</small>
+commands. Then you are ready to check out a new
+working directory.
+</p>
+<p>The <small>RCS</small> file should not be locked when you move it
+into <small>CVS</small>; if it is, <small>CVS</small> will have trouble
+letting you operate on it.
+</p>
+</dd>
+<dt>From another version control system</dt>
+<dd><p>Many version control systems have the ability to export
+<small>RCS</small> files in the standard format. If yours does,
+export the <small>RCS</small> files and then follow the above
+instructions.
+</p>
+<p>Failing that, probably your best bet is to write a
+script that will check out the files one revision at a
+time using the command line interface to the other
+system, and then check the revisions into <small>CVS</small>.
+The <samp>sccs2rcs</samp> script mentioned below may be a
+useful example to follow.
+</p>
+<a name="index-SCCS_002c-importing-files-from"></a>
+</dd>
+<dt>From SCCS</dt>
+<dd><p>There is a script in the <samp>contrib</samp> directory of
+the <small>CVS</small> source distribution called <samp>sccs2rcs</samp>
+which converts <small>SCCS</small> files to <small>RCS</small> files.
+Note: you must run it on a machine which has both
+<small>SCCS</small> and <small>RCS</small> installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary).
+</p>
+<a name="index-PVCS_002c-importing-files-from"></a>
+</dd>
+<dt>From PVCS</dt>
+<dd><p>There is a script in the <samp>contrib</samp> directory of
+the <small>CVS</small> source distribution called <samp>pvcs_to_rcs</samp>
+which converts <small>PVCS</small> archives to <small>RCS</small> files.
+You must run it on a machine which has both
+<small>PVCS</small> and <small>RCS</small> installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary). See the comments in the script for details.
+</p></dd>
+</dl>
+
+<hr>
+<a name="From-scratch"></a>
+<div class="header">
+<p>
+Previous: <a href="#From-other-version-control-systems" accesskey="p"
rel="prev">From other version control systems</a>, Up: <a
href="#Setting-up-the-files" accesskey="u" rel="up">Setting up the files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Creating-a-directory-tree-from-scratch"></a>
+<h4 class="subsection">3.1.3 Creating a directory tree from scratch</h4>
+
+<p>For a new project, the easiest thing to do is probably
+to create an empty directory structure, like this:
+</p>
+<div class="example">
+<pre class="example">$ mkdir tc
+$ mkdir tc/man
+$ mkdir tc/testing
+</pre></div>
+
+<p>After that, you use the <code>import</code> command to create
+the corresponding (empty) directory structure inside
+the repository:
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs import -m "Created directory structure"
yoyodyne/<var>dir</var> yoyo start
+</pre></div>
+
+<p>This will add yoyodyne/<var>dir</var> as a directory under
+<code>$CVSROOT</code>.
+</p>
+<p>Use <code>checkout</code> to get the new project. Then, use
<code>add</code>
+to add files (and new directories) as needed.
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs co yoyodyne/<var>dir</var>
+</pre></div>
+
+<p>Check that the permissions <small>CVS</small> sets on the
+directories inside <code>$CVSROOT</code> are reasonable.
+</p>
+<hr>
+<a name="Defining-the-module"></a>
+<div class="header">
+<p>
+Previous: <a href="#Setting-up-the-files" accesskey="p" rel="prev">Setting up
the files</a>, Up: <a href="#Starting-a-new-project" accesskey="u"
rel="up">Starting a new project</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Defining-the-module-1"></a>
+<h3 class="section">3.2 Defining the module</h3>
+<a name="index-Defining-a-module"></a>
+<a name="index-Editing-the-modules-file"></a>
+<a name="index-Module_002c-defining"></a>
+<a name="index-Modules-file_002c-changing"></a>
+
+<p>The next step is to define the module in the
+<samp>modules</samp> file. This is not strictly necessary,
+but modules can be convenient in grouping together
+related files and directories.
+</p>
+<p>In simple cases these steps are sufficient to define a module.
+</p>
+<ol>
+<li> Get a working copy of the modules file.
+
+<div class="example">
+<pre class="example">$ cvs checkout CVSROOT/modules
+$ cd CVSROOT
+</pre></div>
+
+</li><li> Edit the file and insert a line that defines the module. See <a
href="#Intro-administrative-files">Intro administrative files</a>, for an
introduction. See <a href="#modules">modules</a>, for a full
+description of the modules file. You can use the
+following line to define the module ‘<samp>tc</samp>’:
+
+<div class="example">
+<pre class="example">tc yoyodyne/tc
+</pre></div>
+
+</li><li> Commit your changes to the modules file.
+
+<div class="example">
+<pre class="example">$ cvs commit -m "Added the tc module." modules
+</pre></div>
+
+</li><li> Release the modules module.
+
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs release -d CVSROOT
+</pre></div>
+</li></ol>
+
+<hr>
+<a name="Revisions"></a>
+<div class="header">
+<p>
+Next: <a href="#Branching-and-merging" accesskey="n" rel="next">Branching and
merging</a>, Previous: <a href="#Starting-a-new-project" accesskey="p"
rel="prev">Starting a new project</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Revisions-1"></a>
+<h2 class="chapter">4 Revisions</h2>
+
+<p>For many uses of <small>CVS</small>, one doesn’t need to worry
+too much about revision numbers; <small>CVS</small> assigns
+numbers such as <code>1.1</code>, <code>1.2</code>, and so on, and
+that is all one needs to know. However, some people
+prefer to have more knowledge and control concerning
+how <small>CVS</small> assigns revision numbers.
+</p>
+<p>If one wants to keep track of a set of revisions
+involving more than one file, such as which revisions
+went into a particular release, one uses a <em>tag</em>,
+which is a symbolic revision which can be assigned to a
+numeric revision in each file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Revision-numbers"
accesskey="1">Revision numbers</a>:</td><td> </td><td align="left"
valign="top">The meaning of a revision number
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Versions-revisions-releases" accesskey="2">Versions revisions
releases</a>:</td><td> </td><td align="left"
valign="top">Terminology used in this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Assigning-revisions"
accesskey="3">Assigning revisions</a>:</td><td> </td><td
align="left" valign="top">Assigning revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Tags"
accesskey="4">Tags</a>:</td><td> </td><td align="left"
valign="top">Tags–Symbolic revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Tagging-the-working-directory" accesskey="5">Tagging the working
directory</a>:</td><td> </td><td align="left" valign="top">The cvs
tag command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Tagging-by-date_002ftag"
accesskey="6">Tagging by date/tag</a>:</td><td> </td><td
align="left" valign="top">The cvs rtag command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Modifying-tags"
accesskey="7">Modifying tags</a>:</td><td> </td><td align="left"
valign="top">Adding, renaming, and deleting tags
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Tagging-add_002fremove"
accesskey="8">Tagging add/remove</a>:</td><td> </td><td align="left"
valign="top">Tags with adding and removing files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Sticky-tags"
accesskey="9">Sticky tags</a>:</td><td> </td><td align="left"
valign="top">Certain tags are persistent
+</td></tr>
+</table>
+
+<hr>
+<a name="Revision-numbers"></a>
+<div class="header">
+<p>
+Next: <a href="#Versions-revisions-releases" accesskey="n" rel="next">Versions
revisions releases</a>, Up: <a href="#Revisions" accesskey="u"
rel="up">Revisions</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Revision-numbers-1"></a>
+<h3 class="section">4.1 Revision numbers</h3>
+<a name="index-Revision-numbers"></a>
+<a name="index-Revision-tree"></a>
+<a name="index-Linear-development"></a>
+<a name="index-Number_002c-revision_002d"></a>
+<a name="index-Decimal-revision-number"></a>
+<a name="index-Branch-number"></a>
+<a name="index-Number_002c-branch"></a>
+
+<p>Each version of a file has a unique <em>revision
+number</em>. Revision numbers look like ‘<samp>1.1</samp>’,
+‘<samp>1.2</samp>’, ‘<samp>1.3.2.2</samp>’ or even
‘<samp>1.3.2.2.4.5</samp>’.
+A revision number always has an even number of
+period-separated decimal integers. By default revision
+1.1 is the first revision of a file. Each successive
+revision is given a new number by increasing the
+rightmost number by one. The following figure displays
+a few revisions, with newer revisions to the right.
+</p>
+<div class="example">
+<pre class="example"> +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+</pre></div>
+
+<p>It is also possible to end up with numbers containing
+more than one period, for example ‘<samp>1.3.2.2</samp>’. Such
+revisions represent revisions on branches
+(see <a href="#Branching-and-merging">Branching and merging</a>); such
revision numbers
+are explained in detail in <a href="#Branches-and-revisions">Branches and
revisions</a>.
+</p>
+<hr>
+<a name="Versions-revisions-releases"></a>
+<div class="header">
+<p>
+Next: <a href="#Assigning-revisions" accesskey="n" rel="next">Assigning
revisions</a>, Previous: <a href="#Revision-numbers" accesskey="p"
rel="prev">Revision numbers</a>, Up: <a href="#Revisions" accesskey="u"
rel="up">Revisions</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Versions_002c-revisions-and-releases"></a>
+<h3 class="section">4.2 Versions, revisions and releases</h3>
+<a name="index-Revisions_002c-versions-and-releases"></a>
+<a name="index-Versions_002c-revisions-and-releases"></a>
+<a name="index-Releases_002c-revisions-and-versions"></a>
+
+<p>A file can have several versions, as described above.
+Likewise, a software product can have several versions.
+A software product is often given a version number such
+as ‘<samp>4.1.1</samp>’.
+</p>
+<p>Versions in the first sense are called <em>revisions</em>
+in this document, and versions in the second sense are
+called <em>releases</em>. To avoid confusion, the word
+<em>version</em> is almost never used in this document.
+</p>
+<hr>
+<a name="Assigning-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="#Tags" accesskey="n" rel="next">Tags</a>, Previous: <a
href="#Versions-revisions-releases" accesskey="p" rel="prev">Versions revisions
releases</a>, Up: <a href="#Revisions" accesskey="u" rel="up">Revisions</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Assigning-revisions-1"></a>
+<h3 class="section">4.3 Assigning revisions</h3>
+
+<p>By default, <small>CVS</small> will assign numeric revisions by
+leaving the first number the same and incrementing the
+second number. For example, <code>1.1</code>, <code>1.2</code>,
+<code>1.3</code>, etc.
+</p>
+<p>When adding a new file, the second number will always
+be one and the first number will equal the highest
+first number of any file in that directory. For
+example, the current directory contains files whose
+highest numbered revisions are <code>1.7</code>, <code>3.1</code>,
+and <code>4.12</code>, then an added file will be given the
+numeric revision <code>4.1</code>.
+(When using client/server <small>CVS</small>,
+only files that are actually sent to the server are considered.)
+</p>
+<p>Normally there is no reason to care
+about the revision numbers—it is easier to treat them
+as internal numbers that <small>CVS</small> maintains, and tags
+provide a better way to distinguish between things like
+release 1 versus release 2 of your product
+(see <a href="#Tags">Tags</a>). However, if you want to set the
+numeric revisions, the ‘<samp>-r</samp>’ option to <code>cvs
+commit</code> can do that. The ‘<samp>-r</samp>’ option implies
the
+‘<samp>-f</samp>’ option, in the sense that it causes the
+files to be committed even if they are not modified.
+</p>
+<p>For example, to bring all your files up to
+revision 3.0 (including those that haven’t changed),
+you might invoke:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -r 3.0
+</pre></div>
+
+<p>Note that the number you specify with ‘<samp>-r</samp>’ must be
+larger than any existing revision number. That is, if
+revision 3.0 exists, you cannot ‘<samp>cvs commit
+-r 1.3</samp>’. If you want to maintain several releases in
+parallel, you need to use a branch (see <a
href="#Branching-and-merging">Branching and merging</a>).
+</p>
+<hr>
+<a name="Tags"></a>
+<div class="header">
+<p>
+Next: <a href="#Tagging-the-working-directory" accesskey="n"
rel="next">Tagging the working directory</a>, Previous: <a
href="#Assigning-revisions" accesskey="p" rel="prev">Assigning revisions</a>,
Up: <a href="#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Tags_002d_002dSymbolic-revisions"></a>
+<h3 class="section">4.4 Tags–Symbolic revisions</h3>
+<a name="index-Tags"></a>
+
+<p>The revision numbers live a life of their own. They
+need not have anything at all to do with the release
+numbers of your software product. Depending
+on how you use <small>CVS</small> the revision numbers might change several
times
+between two releases. As an example, some of the
+source files that make up <small>RCS</small> 5.6 have the following
+revision numbers:
+<a name="index-RCS-revision-numbers"></a>
+</p>
+<div class="example">
+<pre class="example">ci.c 5.21
+co.c 5.9
+ident.c 5.3
+rcs.c 5.12
+rcsbase.h 5.11
+rcsdiff.c 5.10
+rcsedit.c 5.11
+rcsfcmp.c 5.9
+rcsgen.c 5.10
+rcslex.c 5.11
+rcsmap.c 5.2
+rcsutil.c 5.10
+</pre></div>
+
+<a name="index-tag_002c-command_002c-introduction"></a>
+<a name="index-Tag_002c-symbolic-name"></a>
+<a name="index-Symbolic-name-_0028tag_0029"></a>
+<a name="index-Name_002c-symbolic-_0028tag_0029"></a>
+<a name="index-HEAD_002c-as-reserved-tag-name"></a>
+<a name="index-BASE_002c-as-reserved-tag-name"></a>
+<p>You can use the <code>tag</code> command to give a symbolic name to a
+certain revision of a file. You can use the ‘<samp>-v</samp>’
flag to the
+<code>status</code> command to see all tags that a file has, and
+which revision numbers they represent. Tag names must
+start with an uppercase or lowercase letter and can
+contain uppercase and lowercase letters, digits,
+‘<samp>-</samp>’, and ‘<samp>_</samp>’. The two tag
names <code>BASE</code>
+and <code>HEAD</code> are reserved for use by <small>CVS</small>. It
+is expected that future names which are special to
+<small>CVS</small> will be specially named, for example by
+starting with ‘<samp>.</samp>’, rather than being named
analogously to
+<code>BASE</code> and <code>HEAD</code>, to avoid conflicts with
+actual tag names.
+</p>
+<p>You’ll want to choose some convention for naming tags,
+based on information such as the name of the program
+and the version number of the release. For example,
+one might take the name of the program, immediately
+followed by the version number with ‘<samp>.</samp>’ changed to
+‘<samp>-</samp>’, so that <small>CVS</small> 1.9 would be tagged
with the name
+<code>cvs1-9</code>. If you choose a consistent convention,
+then you won’t constantly be guessing whether a tag is
+<code>cvs-1-9</code> or <code>cvs1_9</code> or what. You might
+even want to consider enforcing your convention in the
+<samp>taginfo</samp> file (see <a href="#taginfo">taginfo</a>).
+</p>
+<a name="index-Adding-a-tag"></a>
+<a name="index-Tag_002c-example"></a>
+<p>The following example shows how you can add a tag to a
+file. The commands must be issued inside your working
+directory. That is, you should issue the
+command in the directory where <samp>backend.c</samp>
+resides.
+</p>
+<div class="example">
+<pre class="example">$ cvs tag rel-0-4 backend.c
+T backend.c
+$ cvs status -v backend.c
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-0-4 (revision: 1.4)
+
+</pre></div>
+
+<p>For a complete summary of the syntax of <code>cvs tag</code>,
+including the various options, see <a href="#Invoking-CVS">Invoking CVS</a>.
+</p>
+<p>There is seldom reason to tag a file in isolation. A more common use is
+to tag all the files that constitute a module with the same tag at
+strategic points in the development life-cycle, such as when a release
+is made.
+</p>
+<div class="example">
+<pre class="example">$ cvs tag rel-1-0 .
+cvs tag: Tagging .
+T Makefile
+T backend.c
+T driver.c
+T frontend.c
+T parser.c
+</pre></div>
+
+<p>(When you give <small>CVS</small> a directory as argument, it generally
applies the
+operation to all the files in that directory, and (recursively), to any
+subdirectories that it may contain. See <a
href="#Recursive-behavior">Recursive behavior</a>.)
+</p>
+<a name="index-Retrieving-an-old-revision-using-tags"></a>
+<a name="index-Tag_002c-retrieving-old-revisions"></a>
+<p>The <code>checkout</code> command has a flag,
‘<samp>-r</samp>’, that lets you check out
+a certain revision of a module. This flag makes it easy to
+retrieve the sources that make up release 1.0 of the module
‘<samp>tc</samp>’ at
+any time in the future:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r rel-1-0 tc
+</pre></div>
+
+<p>This is useful, for instance, if someone claims that there is a bug in
+that release, but you cannot find the bug in the current working copy.
+</p>
+<p>You can also check out a module as it was at any given date.
+See <a href="#checkout-options">checkout options</a>. When specifying
‘<samp>-r</samp>’ to
+any of these commands, you will need beware of sticky
+tags; see <a href="#Sticky-tags">Sticky tags</a>.
+</p>
+<p>When you tag more than one file with the same tag you
+can think about the tag as "a curve drawn through a
+matrix of filename vs. revision number." Say we have 5
+files with the following revisions:
+</p>
+<div class="example">
+<pre class="example"> file1 file2 file3 file4 file5
+
+ 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
+ 1.2*- 1.2 1.2 -1.2*-
+ 1.3 \- 1.3*- 1.3 / 1.3
+ 1.4 \ 1.4 / 1.4
+ \-1.5*- 1.5
+ 1.6
+</pre></div>
+
+<p>At some time in the past, the <code>*</code> versions were tagged.
+You can think of the tag as a handle attached to the curve
+drawn through the tagged revisions. When you pull on
+the handle, you get all the tagged revisions. Another
+way to look at it is that you "sight" through a set of
+revisions that is "flat" along the tagged revisions,
+like this:
+</p>
+<div class="example">
+<pre class="example"> file1 file2 file3 file4 file5
+
+ 1.1
+ 1.2
+ 1.1 1.3 _
+ 1.1 1.2 1.4 1.1 /
+ 1.2*----1.3*----1.5*----1.2*----1.1 (--- <--- Look here
+ 1.3 1.6 1.3 \_
+ 1.4 1.4
+ 1.5
+</pre></div>
+
+<hr>
+<a name="Tagging-the-working-directory"></a>
+<div class="header">
+<p>
+Next: <a href="#Tagging-by-date_002ftag" accesskey="n" rel="next">Tagging by
date/tag</a>, Previous: <a href="#Tags" accesskey="p" rel="prev">Tags</a>, Up:
<a href="#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Specifying-what-to-tag-from-the-working-directory"></a>
+<h3 class="section">4.5 Specifying what to tag from the working directory</h3>
+
+<a name="index-tag-_0028subcommand_0029"></a>
+<p>The example in the previous section demonstrates one of
+the most common ways to choose which revisions to tag.
+Namely, running the <code>cvs tag</code> command without
+arguments causes <small>CVS</small> to select the revisions which
+are checked out in the current working directory. For
+example, if the copy of <samp>backend.c</samp> in working
+directory was checked out from revision 1.4, then
+<small>CVS</small> will tag revision 1.4. Note that the tag is
+applied immediately to revision 1.4 in the repository;
+tagging is not like modifying a file, or other
+operations in which one first modifies the working
+directory and then runs <code>cvs commit</code> to transfer
+that modification to the repository.
+</p>
+<p>One potentially surprising aspect of the fact that
+<code>cvs tag</code> operates on the repository is that you
+are tagging the checked-in revisions, which may differ
+from locally modified files in your working directory.
+If you want to avoid doing this by mistake, specify the
+‘<samp>-c</samp>’ option to <code>cvs tag</code>. If there are any
+locally modified files, <small>CVS</small> will abort with an
+error before it tags any files:
+</p>
+<div class="example">
+<pre class="example">$ cvs tag -c rel-0-4
+cvs tag: backend.c is locally modified
+cvs [tag aborted]: correct the above errors first!
+</pre></div>
+
+<hr>
+<a name="Tagging-by-date_002ftag"></a>
+<div class="header">
+<p>
+Next: <a href="#Modifying-tags" accesskey="n" rel="next">Modifying tags</a>,
Previous: <a href="#Tagging-the-working-directory" accesskey="p"
rel="prev">Tagging the working directory</a>, Up: <a href="#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Specifying-what-to-tag-by-date-or-revision"></a>
+<h3 class="section">4.6 Specifying what to tag by date or revision</h3>
+<a name="index-rtag-_0028subcommand_0029"></a>
+
+<p>The <code>cvs rtag</code> command tags the repository as of a
+certain date or time (or can be used to tag the latest
+revision). <code>rtag</code> works directly on the
+repository contents (it requires no prior checkout and
+does not look for a working directory).
+</p>
+<p>The following options specify which date or revision to
+tag. See <a href="#Common-options">Common options</a>, for a complete
+description of them.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r <var>tag</var></samp>’
+flags. If no matching revision is found, use the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Only tag those files that contain existing tag <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>The <code>cvs tag</code> command also allows one to specify
+files by revision or date, using the same ‘<samp>-r</samp>’,
+‘<samp>-D</samp>’, and ‘<samp>-f</samp>’ options.
However, this
+feature is probably not what you want. The reason is
+that <code>cvs tag</code> chooses which files to tag based on
+the files that exist in the working directory, rather
+than the files which existed as of the given tag/date.
+Therefore, you are generally better off using <code>cvs
+rtag</code>. The exceptions might be cases like:
+</p>
+<div class="example">
+<pre class="example">cvs tag -r 1.4 backend.c
+</pre></div>
+
+<hr>
+<a name="Modifying-tags"></a>
+<div class="header">
+<p>
+Next: <a href="#Tagging-add_002fremove" accesskey="n" rel="next">Tagging
add/remove</a>, Previous: <a href="#Tagging-by-date_002ftag" accesskey="p"
rel="prev">Tagging by date/tag</a>, Up: <a href="#Revisions" accesskey="u"
rel="up">Revisions</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Deleting_002c-moving_002c-and-renaming-tags"></a>
+<h3 class="section">4.7 Deleting, moving, and renaming tags</h3>
+
+
+<p>Normally one does not modify tags. They exist in order
+to record the history of the repository and so deleting
+them or changing their meaning would, generally, not be
+what you want.
+</p>
+<p>However, there might be cases in which one uses a tag
+temporarily or accidentally puts one in the wrong
+place. Therefore, one might delete, move, or rename a
+tag.
+</p>
+<p><strong>WARNING: The commands in this section are
+dangerous; they permanently discard historical
+information and it can be difficult or impossible to
+recover from errors. If you are a <small>CVS</small>
+administrator, you may consider restricting these
+commands with the <samp>taginfo</samp> file (see <a
href="#taginfo">taginfo</a>).</strong>
+</p>
+<a name="index-Deleting-tags"></a>
+<a name="index-Deleting-branch-tags"></a>
+<a name="index-Removing-tags"></a>
+<a name="index-Removing-branch-tags"></a>
+<a name="index-Tags_002c-deleting"></a>
+<a name="index-Branch-tags_002c-deleting"></a>
+<p>To delete a tag, specify the ‘<samp>-d</samp>’ option to either
+<code>cvs tag</code> or <code>cvs rtag</code>. For example:
+</p>
+<div class="example">
+<pre class="example">cvs rtag -d rel-0-4 tc
+</pre></div>
+
+<p>deletes the non-branch tag <code>rel-0-4</code> from the module
<code>tc</code>.
+In the event that branch tags are encountered within the repository
+with the given name, a warning message will be issued and the branch
+tag will not be deleted. If you are absolutely certain you know what
+you are doing, the <code>-B</code> option may be specified to allow deletion
+of branch tags. In that case, any non-branch tags encountered will
+trigger warnings and will not be deleted.
+</p>
+<p><strong>WARNING: Moving branch tags is very dangerous! If you think
+you need the <code>-B</code> option, think again and ask your
<small>CVS</small>
+administrator about it (if that isn’t you). There is almost certainly
+another way to accomplish what you want to accomplish.</strong>
+</p>
+<a name="index-Moving-tags"></a>
+<a name="index-Moving-branch-tags"></a>
+<a name="index-Tags_002c-moving"></a>
+<a name="index-Branch-tags_002c-moving"></a>
+<p>When we say <em>move</em> a tag, we mean to make the same
+name point to different revisions. For example, the
+<code>stable</code> tag may currently point to revision 1.4
+of <samp>backend.c</samp> and perhaps we want to make it
+point to revision 1.6. To move a non-branch tag, specify the
+‘<samp>-F</samp>’ option to either <code>cvs tag</code> or
<code>cvs
+rtag</code>. For example, the task just mentioned might be
+accomplished as:
+</p>
+<div class="example">
+<pre class="example">cvs tag -r 1.6 -F stable backend.c
+</pre></div>
+
+<p>If any branch tags are encountered in the repository
+with the given name, a warning is issued and the branch
+tag is not disturbed. If you are absolutely certain you
+wish to move the branch tag, the <code>-B</code> option may be specified.
+In that case, non-branch tags encountered with the given
+name are ignored with a warning message.
+</p>
+<p><strong>WARNING: Moving branch tags is very dangerous! If you think you
+need the <code>-B</code> option, think again and ask your <small>CVS</small>
+administrator about it (if that isn’t you). There is almost certainly
+another way to accomplish what you want to accomplish.</strong>
+</p>
+<a name="index-Renaming-tags"></a>
+<a name="index-Tags_002c-renaming"></a>
+<p>When we say <em>rename</em> a tag, we mean to make a
+different name point to the same revisions as the old
+tag. For example, one may have misspelled the tag name
+and want to correct it (hopefully before others are
+relying on the old spelling). To rename a tag, first
+create a new tag using the ‘<samp>-r</samp>’ option to
+<code>cvs rtag</code>, and then delete the old name. (Caution:
+this method will not work with branch tags.)
+This leaves the new tag on exactly the
+same files as the old tag. For example:
+</p>
+<div class="example">
+<pre class="example">cvs rtag -r old-name-0-4 rel-0-4 tc
+cvs rtag -d old-name-0-4 tc
+</pre></div>
+
+<hr>
+<a name="Tagging-add_002fremove"></a>
+<div class="header">
+<p>
+Next: <a href="#Sticky-tags" accesskey="n" rel="next">Sticky tags</a>,
Previous: <a href="#Modifying-tags" accesskey="p" rel="prev">Modifying
tags</a>, Up: <a href="#Revisions" accesskey="u" rel="up">Revisions</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Tagging-and-adding-and-removing-files"></a>
+<h3 class="section">4.8 Tagging and adding and removing files</h3>
+
+<p>The subject of exactly how tagging interacts with
+adding and removing files is somewhat obscure; for the
+most part <small>CVS</small> will keep track of whether files
+exist or not without too much fussing. By default,
+tags are applied to only files which have a revision
+corresponding to what is being tagged. Files which did
+not exist yet, or which were already removed, simply
+omit the tag, and <small>CVS</small> knows to treat the absence
+of a tag as meaning that the file didn’t exist as of
+that tag.
+</p>
+<p>However, this can lose a small amount of information.
+For example, suppose a file was added and then removed.
+Then, if the tag is missing for that file, there is no
+way to know whether the tag refers to the time before
+the file was added, or the time after it was removed.
+If you specify the ‘<samp>-r</samp>’ option to <code>cvs
rtag</code>,
+then <small>CVS</small> tags the files which have been removed,
+and thereby avoids this problem. For example, one
+might specify <code>-r HEAD</code> to tag the head.
+</p>
+<p>On the subject of adding and removing files, the
+<code>cvs rtag</code> command has a ‘<samp>-a</samp>’ option which
+means to clear the tag from removed files that would
+not otherwise be tagged. For example, one might
+specify this option in conjunction with ‘<samp>-F</samp>’ when
+moving a tag. If one moved a tag without ‘<samp>-a</samp>’,
+then the tag in the removed files might still refer to
+the old revision, rather than reflecting the fact that
+the file had been removed. I don’t think this is
+necessary if ‘<samp>-r</samp>’ is specified, as noted above.
+</p>
+<hr>
+<a name="Sticky-tags"></a>
+<div class="header">
+<p>
+Previous: <a href="#Tagging-add_002fremove" accesskey="p" rel="prev">Tagging
add/remove</a>, Up: <a href="#Revisions" accesskey="u" rel="up">Revisions</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Sticky-tags-1"></a>
+<h3 class="section">4.9 Sticky tags</h3>
+<a name="index-Sticky-tags"></a>
+<a name="index-Tags_002c-sticky"></a>
+
+
+<p>Sometimes a working copy’s revision has extra data
+associated with it, for example it might be on a branch
+(see <a href="#Branching-and-merging">Branching and merging</a>), or
restricted to
+versions prior to a certain date by ‘<samp>checkout -D</samp>’
+or ‘<samp>update -D</samp>’. Because this data persists –
+that is, it applies to subsequent commands in the
+working copy – we refer to it as <em>sticky</em>.
+</p>
+<p>Most of the time, stickiness is an obscure aspect of
+<small>CVS</small> that you don’t need to think about. However,
+even if you don’t want to use the feature, you may need
+to know <em>something</em> about sticky tags (for
+example, how to avoid them!).
+</p>
+<p>You can use the <code>status</code> command to see if any
+sticky tags or dates are set:
+</p>
+<div class="example">
+<pre class="example">$ cvs status driver.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7.2.1 Sat Dec 5 19:35:03 1992
+ RCS Version: 1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+</pre></div>
+
+<a name="index-Resetting-sticky-tags"></a>
+<a name="index-Sticky-tags_002c-resetting"></a>
+<a name="index-Deleting-sticky-tags"></a>
+<p>The sticky tags will remain on your working files until
+you delete them with ‘<samp>cvs update -A</samp>’. The
+‘<samp>-A</samp>’ option merges local changes into the version of
the
+file from the head of the trunk, removing any sticky tags,
+dates, or options (other than sticky ‘<samp>-k</samp>’ options on
locally
+modified files). See <a href="#update">update</a> for more on the operation
+of <code>cvs update</code>.
+</p>
+<a name="index-Sticky-date"></a>
+<p>The most common use of sticky tags is to identify which
+branch one is working on, as described in
+<a href="#Accessing-branches">Accessing branches</a>. However, non-branch
+sticky tags have uses as well. For example,
+suppose that you want to avoid updating your working
+directory, to isolate yourself from possibly
+destabilizing changes other people are making. You
+can, of course, just refrain from running <code>cvs
+update</code>. But if you want to avoid updating only a
+portion of a larger tree, then sticky tags can help.
+If you check out a certain revision (such as 1.4) it
+will become sticky. Subsequent <code>cvs update</code>
+commands will
+not retrieve the latest revision until you reset the
+tag with <code>cvs update -A</code>. Likewise, use of the
+‘<samp>-D</samp>’ option to <code>update</code> or
<code>checkout</code>
+sets a <em>sticky date</em>, which, similarly, causes that
+date to be used for future retrievals.
+</p>
+<p>People often want to retrieve an old version of
+a file without setting a sticky tag. This can
+be done with the ‘<samp>-p</samp>’ option to <code>checkout</code>
or
+<code>update</code>, which sends the contents of the file to
+standard output. For example:
+</p><div class="example">
+<pre class="example">$ cvs update -p -r 1.1 file1 >file1
+===================================================================
+Checking out file1
+RCS: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+VERS: 1.1
+***************
+$
+</pre></div>
+
+<p>However, this isn’t the easiest way, if you are asking
+how to undo a previous checkin (in this example, put
+<samp>file1</samp> back to the way it was as of revision
+1.1). In that case you are better off using the
+‘<samp>-j</samp>’ option to <code>update</code>; for further
+discussion see <a href="#Merging-two-revisions">Merging two revisions</a>.
+</p>
+<hr>
+<a name="Branching-and-merging"></a>
+<div class="header">
+<p>
+Next: <a href="#Recursive-behavior" accesskey="n" rel="next">Recursive
behavior</a>, Previous: <a href="#Revisions" accesskey="p"
rel="prev">Revisions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Branching-and-merging-1"></a>
+<h2 class="chapter">5 Branching and merging</h2>
+<a name="index-Branching"></a>
+<a name="index-Merging"></a>
+<a name="index-Copying-changes"></a>
+<a name="index-Main-trunk-and-branches"></a>
+<a name="index-Revision-tree_002c-making-branches"></a>
+<a name="index-Branches_002c-copying-changes-between"></a>
+<a name="index-Changes_002c-copying-between-branches"></a>
+<a name="index-Modifications_002c-copying-between-branches"></a>
+
+<p><small>CVS</small> allows you to isolate changes onto a separate
+line of development, known as a <em>branch</em>. When you
+change files on a branch, those changes do not appear
+on the main trunk or other branches.
+</p>
+<p>Later you can move changes from one branch to another
+branch (or the main trunk) by <em>merging</em>. Merging
+involves first running <code>cvs update -j</code>, to merge
+the changes into the working directory.
+You can then commit that revision, and thus effectively
+copy the changes onto another branch.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Branches-motivation"
accesskey="1">Branches motivation</a>:</td><td> </td><td
align="left" valign="top">What branches are good for
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Creating-a-branch"
accesskey="2">Creating a branch</a>:</td><td> </td><td align="left"
valign="top">Creating a branch
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Accessing-branches"
accesskey="3">Accessing branches</a>:</td><td> </td><td align="left"
valign="top">Checking out and updating branches
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Branches-and-revisions"
accesskey="4">Branches and revisions</a>:</td><td> </td><td
align="left" valign="top">Branches are reflected in revision numbers
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Magic-branch-numbers"
accesskey="5">Magic branch numbers</a>:</td><td> </td><td
align="left" valign="top">Magic branch numbers
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Merging-a-branch"
accesskey="6">Merging a branch</a>:</td><td> </td><td align="left"
valign="top">Merging an entire branch
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Merging-more-than-once"
accesskey="7">Merging more than once</a>:</td><td> </td><td
align="left" valign="top">Merging from a branch several times
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Merging-two-revisions"
accesskey="8">Merging two revisions</a>:</td><td> </td><td
align="left" valign="top">Merging differences between two revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Merging-adds-and-removals"
accesskey="9">Merging adds and removals</a>:</td><td> </td><td
align="left" valign="top">What if files are added or removed?
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Merging-and-keywords">Merging and
keywords</a>:</td><td> </td><td align="left" valign="top">Avoiding
conflicts due to keyword substitution
+</td></tr>
+</table>
+
+<hr>
+<a name="Branches-motivation"></a>
+<div class="header">
+<p>
+Next: <a href="#Creating-a-branch" accesskey="n" rel="next">Creating a
branch</a>, Up: <a href="#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="What-branches-are-good-for"></a>
+<h3 class="section">5.1 What branches are good for</h3>
+<a name="index-Branches-motivation"></a>
+<a name="index-What-branches-are-good-for"></a>
+<a name="index-Motivation-for-branches"></a>
+
+<p>Suppose that release 1.0 of tc has been made. You are continuing to
+develop tc, planning to create release 1.1 in a couple of months. After a
+while your customers start to complain about a fatal bug. You check
+out release 1.0 (see <a href="#Tags">Tags</a>) and find the bug
+(which turns out to have a trivial fix). However, the current revision
+of the sources are in a state of flux and are not expected to be stable
+for at least another month. There is no way to make a
+bug fix release based on the newest sources.
+</p>
+<p>The thing to do in a situation like this is to create a <em>branch</em> on
+the revision trees for all the files that make up
+release 1.0 of tc. You can then make
+modifications to the branch without disturbing the main trunk. When the
+modifications are finished you can elect to either incorporate them on
+the main trunk, or leave them on the branch.
+</p>
+<hr>
+<a name="Creating-a-branch"></a>
+<div class="header">
+<p>
+Next: <a href="#Accessing-branches" accesskey="n" rel="next">Accessing
branches</a>, Previous: <a href="#Branches-motivation" accesskey="p"
rel="prev">Branches motivation</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Creating-a-branch-1"></a>
+<h3 class="section">5.2 Creating a branch</h3>
+<a name="index-Creating-a-branch"></a>
+<a name="index-Branch_002c-creating-a"></a>
+<a name="index-tag_002c-creating-a-branch-using"></a>
+<a name="index-rtag_002c-creating-a-branch-using"></a>
+
+<p>You can create a branch with <code>tag -b</code>; for
+example, assuming you’re in a working copy:
+</p>
+<div class="example">
+<pre class="example">$ cvs tag -b rel-1-0-patches
+</pre></div>
+
+
+<p>This splits off a branch based on the current revisions
+in the working copy, assigning that branch the name
+‘<samp>rel-1-0-patches</samp>’.
+</p>
+<p>It is important to understand that branches get created
+in the repository, not in the working copy. Creating a
+branch based on current revisions, as the above example
+does, will <em>not</em> automatically switch the working
+copy to be on the new branch. For information on how
+to do that, see <a href="#Accessing-branches">Accessing branches</a>.
+</p>
+<p>You can also create a branch without reference to any
+working copy, by using <code>rtag</code>:
+</p>
+<div class="example">
+<pre class="example">$ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
+</pre></div>
+
+<p>‘<samp>-r rel-1-0</samp>’ says that this branch should be
+rooted at the revision that
+corresponds to the tag ‘<samp>rel-1-0</samp>’. It need not
+be the most recent revision – it’s often useful to
+split a branch off an old revision (for example, when
+fixing a bug in a past release otherwise known to be
+stable).
+</p>
+<p>As with ‘<samp>tag</samp>’, the ‘<samp>-b</samp>’
flag tells
+<code>rtag</code> to create a branch (rather than just a
+symbolic revision name). Note that the numeric
+revision number that matches ‘<samp>rel-1-0</samp>’ will
+probably be different from file to file.
+</p>
+<p>So, the full effect of the command is to create a new
+branch – named ‘<samp>rel-1-0-patches</samp>’ – in
module
+‘<samp>tc</samp>’, rooted in the revision tree at the point tagged
+by ‘<samp>rel-1-0</samp>’.
+</p>
+<hr>
+<a name="Accessing-branches"></a>
+<div class="header">
+<p>
+Next: <a href="#Branches-and-revisions" accesskey="n" rel="next">Branches and
revisions</a>, Previous: <a href="#Creating-a-branch" accesskey="p"
rel="prev">Creating a branch</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Accessing-branches-1"></a>
+<h3 class="section">5.3 Accessing branches</h3>
+<a name="index-Check-out-a-branch"></a>
+<a name="index-Retrieve-a-branch"></a>
+<a name="index-Access-a-branch"></a>
+<a name="index-Identifying-a-branch"></a>
+<a name="index-Branch_002c-check-out"></a>
+<a name="index-Branch_002c-retrieving"></a>
+<a name="index-Branch_002c-accessing"></a>
+<a name="index-Branch_002c-identifying"></a>
+
+<p>You can retrieve a branch in one of two ways: by
+checking it out fresh from the repository, or by
+switching an existing working copy over to the branch.
+</p>
+<p>To check out a branch from the repository, invoke
+‘<samp>checkout</samp>’ with the ‘<samp>-r</samp>’
flag, followed by
+the tag name of the branch (see <a href="#Creating-a-branch">Creating a
branch</a>):
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r rel-1-0-patches tc
+</pre></div>
+
+<p>Or, if you already have a working copy, you can switch
+it to a given branch with ‘<samp>update -r</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs update -r rel-1-0-patches tc
+</pre></div>
+
+<p>or equivalently:
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs update -r rel-1-0-patches
+</pre></div>
+
+<p>It does not matter if the working copy was originally
+on the main trunk or on some other branch – the above
+command will switch it to the named branch. And
+similarly to a regular ‘<samp>update</samp>’ command,
+‘<samp>update -r</samp>’ merges any changes you have made,
+notifying you of conflicts where they occur.
+</p>
+<p>Once you have a working copy tied to a particular
+branch, it remains there until you tell it otherwise.
+This means that changes checked in from the working
+copy will add new revisions on that branch, while
+leaving the main trunk and other branches unaffected.
+</p>
+<a name="index-Branches_002c-sticky"></a>
+<p>To find out what branch a working copy is on, you can
+use the ‘<samp>status</samp>’ command. In its output, look for
+the field named ‘<samp>Sticky tag</samp>’ (see <a
href="#Sticky-tags">Sticky tags</a>)
+– that’s <small>CVS</small>’s way of telling you the branch,
if
+any, of the current working files:
+</p>
+<div class="example">
+<pre class="example">$ cvs status -v driver.c backend.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7 Sat Dec 5 18:25:54 1992
+ RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.7.2)
+ rel-1-0 (revision: 1.7)
+
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.4.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.4.2)
+ rel-1-0 (revision: 1.4)
+ rel-0-4 (revision: 1.4)
+
+</pre></div>
+
+<p>Don’t be confused by the fact that the branch numbers
+for each file are different (‘<samp>1.7.2</samp>’ and
+‘<samp>1.4.2</samp>’ respectively). The branch tag is the
+same, ‘<samp>rel-1-0-patches</samp>’, and the files are
+indeed on the same branch. The numbers simply reflect
+the point in each file’s revision history at which the
+branch was made. In the above example, one can deduce
+that ‘<samp>driver.c</samp>’ had been through more changes than
+‘<samp>backend.c</samp>’ before this branch was created.
+</p>
+<p>See <a href="#Branches-and-revisions">Branches and revisions</a> for
details about how
+branch numbers are constructed.
+</p>
+<hr>
+<a name="Branches-and-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="#Magic-branch-numbers" accesskey="n" rel="next">Magic branch
numbers</a>, Previous: <a href="#Accessing-branches" accesskey="p"
rel="prev">Accessing branches</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Branches-and-revisions-1"></a>
+<h3 class="section">5.4 Branches and revisions</h3>
+<a name="index-Branch-number-1"></a>
+<a name="index-Number_002c-branch-1"></a>
+<a name="index-Revision-numbers-_0028branches_0029"></a>
+
+<p>Ordinarily, a file’s revision history is a linear
+series of increments (see <a href="#Revision-numbers">Revision numbers</a>):
+</p>
+<div class="example">
+<pre class="example"> +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+</pre></div>
+
+<p>However, <small>CVS</small> is not limited to linear development. The
+<em>revision tree</em> can be split into <em>branches</em>,
+where each branch is a self-maintained line of
+development. Changes made on one branch can easily be
+moved back to the main trunk.
+</p>
+<p>Each branch has a <em>branch number</em>, consisting of an
+odd number of period-separated decimal integers. The
+branch number is created by appending an integer to the
+revision number where the corresponding branch forked
+off. Having branch numbers allows more than one branch
+to be forked off from a certain revision.
+</p>
+<p>All revisions on a branch have revision numbers formed
+by appending an ordinal number to the branch number.
+The following figure illustrates branching with an
+example.
+</p>
+<div class="example">
+<pre class="example">
+-------------+
+ Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
+ / +-------------+
+ /
+ /
+ +---------+ +---------+ +---------+
+Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ / +---------+ +---------+ +---------+
+ /
+ /
++-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+ +---------+
+Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+ +---------+ +---------+ +---------+
+
+</pre></div>
+
+
+
+<p>The exact details of how the branch number is
+constructed is not something you normally need to be
+concerned about, but here is how it works: When
+<small>CVS</small> creates a branch number it picks the first
+unused even integer, starting with 2. So when you want
+to create a branch from revision 6.4 it will be
+numbered 6.4.2. All branch numbers ending in a zero
+(such as 6.4.0) are used internally by <small>CVS</small>
+(see <a href="#Magic-branch-numbers">Magic branch numbers</a>). The branch
1.1.1 has a
+special meaning. See <a href="#Tracking-sources">Tracking sources</a>.
+</p>
+<hr>
+<a name="Magic-branch-numbers"></a>
+<div class="header">
+<p>
+Next: <a href="#Merging-a-branch" accesskey="n" rel="next">Merging a
branch</a>, Previous: <a href="#Branches-and-revisions" accesskey="p"
rel="prev">Branches and revisions</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Magic-branch-numbers-1"></a>
+<h3 class="section">5.5 Magic branch numbers</h3>
+
+
+<p>This section describes a <small>CVS</small> feature called
+<em>magic branches</em>. For most purposes, you need not
+worry about magic branches; <small>CVS</small> handles them for
+you. However, they are visible to you in certain
+circumstances, so it may be useful to have some idea of
+how it works.
+</p>
+<p>Externally, branch numbers consist of an odd number of
+dot-separated decimal integers. See <a href="#Revision-numbers">Revision
numbers</a>. That is not the whole truth, however. For
+efficiency reasons <small>CVS</small> sometimes inserts an extra 0
+in the second rightmost position (1.2.4 becomes
+1.2.0.4, 8.9.10.11.12 becomes 8.9.10.11.0.12 and so
+on).
+</p>
+<p><small>CVS</small> does a pretty good job at hiding these so
+called magic branches, but in a few places the hiding
+is incomplete:
+</p>
+<ul>
+<li> The magic branch number appears in the output from
+<code>cvs log</code>.
+
+</li><li> You cannot specify a symbolic branch name to <code>cvs
+admin</code>.
+
+</li></ul>
+
+<p>You can use the <code>admin</code> command to reassign a
+symbolic name to a branch the way <small>RCS</small> expects it
+to be. If <code>R4patches</code> is assigned to the branch
+1.4.2 (magic branch number 1.4.0.2) in file
+<samp>numbers.c</samp> you can do this:
+</p>
+<div class="example">
+<pre class="example">$ cvs admin -NR4patches:1.4.2 numbers.c
+</pre></div>
+
+<p>It only works if at least one revision is already
+committed on the branch. Be very careful so that you
+do not assign the tag to the wrong number. (There is
+no way to see how the tag was assigned yesterday).
+</p>
+<hr>
+<a name="Merging-a-branch"></a>
+<div class="header">
+<p>
+Next: <a href="#Merging-more-than-once" accesskey="n" rel="next">Merging more
than once</a>, Previous: <a href="#Magic-branch-numbers" accesskey="p"
rel="prev">Magic branch numbers</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Merging-an-entire-branch"></a>
+<h3 class="section">5.6 Merging an entire branch</h3>
+<a name="index-Merging-a-branch"></a>
+<a name="index-_002dj-_0028merging-branches_0029"></a>
+
+<p>You can merge changes made on a branch into your working copy by giving
+the ‘<samp>-j <var>branchname</var></samp>’ flag to the
<code>update</code> subcommand. With one
+‘<samp>-j <var>branchname</var></samp>’ option it merges the
changes made between the
+greatest common ancestor (GCA) of the branch and the destination revision (in
+the simple case below the GCA is the point where the branch forked) and the
+newest revision on that branch into your working copy.
+</p>
+<a name="index-Join"></a>
+<p>The ‘<samp>-j</samp>’ stands for “join”.
+</p>
+<a name="index-Branch-merge-example"></a>
+<a name="index-Example_002c-branch-merge"></a>
+<a name="index-Merge_002c-branch-example"></a>
+<p>Consider this revision tree:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+</pre></div>
+
+<p>The branch 1.2.2 has been given the tag (symbolic name)
‘<samp>R1fix</samp>’. The
+following example assumes that the module ‘<samp>mod</samp>’
contains only one
+file, <samp>m.c</samp>.
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout mod # <span
class="roman">Retrieve the latest revision, 1.4</span>
+
+$ cvs update -j R1fix m.c # <span class="roman">Merge all changes made
on the branch,</span>
+ # <span class="roman">i.e. the changes
between revision 1.2</span>
+ # <span class="roman">and 1.2.2.2, into your
working copy</span>
+ # <span class="roman">of the file.</span>
+
+$ cvs commit -m "Included R1fix" # <span class="roman">Create
revision 1.5.</span>
+</pre></div>
+
+<p>A conflict can result from a merge operation. If that
+happens, you should resolve it before committing the
+new revision. See <a href="#Conflicts-example">Conflicts example</a>.
+</p>
+<p>If your source files contain keywords (see <a
href="#Keyword-substitution">Keyword substitution</a>),
+you might be getting more conflicts than strictly necessary. See
+<a href="#Merging-and-keywords">Merging and keywords</a>, for information on
how to avoid this.
+</p>
+<p>The <code>checkout</code> command also supports the ‘<samp>-j
<var>branchname</var></samp>’ flag. The
+same effect as above could be achieved with this:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -j R1fix mod
+$ cvs commit -m "Included R1fix"
+</pre></div>
+
+<p>It should be noted that <code>update -j <var>tagname</var></code> will also
work but may
+not produce the desired result. See <a
href="#Merging-adds-and-removals">Merging adds and removals</a>, for more.
+</p>
+<hr>
+<a name="Merging-more-than-once"></a>
+<div class="header">
+<p>
+Next: <a href="#Merging-two-revisions" accesskey="n" rel="next">Merging two
revisions</a>, Previous: <a href="#Merging-a-branch" accesskey="p"
rel="prev">Merging a branch</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Merging-from-a-branch-several-times"></a>
+<h3 class="section">5.7 Merging from a branch several times</h3>
+
+<p>Continuing our example, the revision tree now looks
+like this:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+</pre></div>
+
+<p>where the starred line represents the merge from the
+‘<samp>R1fix</samp>’ branch to the main trunk, as just
+discussed.
+</p>
+<p>Now suppose that development continues on the
+‘<samp>R1fix</samp>’ branch:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ +---------+ +---------+ +---------+
+</pre></div>
+
+<p>and then you want to merge those new changes onto the
+main trunk. If you just use the <code>cvs update -j
+R1fix m.c</code> command again, <small>CVS</small> will attempt to
+merge again the changes which you have already merged,
+which can have undesirable side effects.
+</p>
+<p>So instead you need to specify that you only want to
+merge the changes on the branch which have not yet been
+merged into the trunk. To do that you specify two
+‘<samp>-j</samp>’ options, and <small>CVS</small> merges the
changes from
+the first revision to the second revision. For
+example, in this case the simplest way would be
+</p>
+<div class="example">
+<pre class="example">cvs update -j 1.2.2.2 -j R1fix m.c # <span
class="roman">Merge changes from 1.2.2.2 to the</span>
+ # <span class="roman">head of the R1fix
branch</span>
+</pre></div>
+
+<p>The problem with this is that you need to specify the
+1.2.2.2 revision manually. A slightly better approach
+might be to use the date the last merge was done:
+</p>
+<div class="example">
+<pre class="example">cvs update -j R1fix:yesterday -j R1fix m.c
+</pre></div>
+
+<p>Better yet, tag the R1fix branch after every merge into
+the trunk, and then use that tag for subsequent merges:
+</p>
+<div class="example">
+<pre class="example">cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
+</pre></div>
+
+<hr>
+<a name="Merging-two-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="#Merging-adds-and-removals" accesskey="n" rel="next">Merging
adds and removals</a>, Previous: <a href="#Merging-more-than-once"
accesskey="p" rel="prev">Merging more than once</a>, Up: <a
href="#Branching-and-merging" accesskey="u" rel="up">Branching and merging</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Merging-differences-between-any-two-revisions"></a>
+<h3 class="section">5.8 Merging differences between any two revisions</h3>
+<a name="index-Merging-two-revisions"></a>
+<a name="index-Revisions_002c-merging-differences-between"></a>
+<a name="index-Differences_002c-merging"></a>
+
+<p>With two ‘<samp>-j <var>revision</var></samp>’ flags, the
<code>update</code>
+(and <code>checkout</code>) command can merge the differences
+between any two revisions into your working file.
+</p>
+<a name="index-Undoing-a-change"></a>
+<a name="index-Removing-a-change"></a>
+<div class="example">
+<pre class="example">$ cvs update -j 1.5 -j 1.3 backend.c
+</pre></div>
+
+<p>will undo all changes made between revision
+1.3 and 1.5. Note the order of the revisions!
+</p>
+<p>If you try to use this option when operating on
+multiple files, remember that the numeric revisions will
+probably be very different between the various files.
+You almost always use symbolic
+tags rather than revision numbers when operating on
+multiple files.
+</p>
+<a name="index-Restoring-old-version-of-removed-file"></a>
+<a name="index-Resurrecting-old-version-of-dead-file"></a>
+<p>Specifying two ‘<samp>-j</samp>’ options can also undo file
+removals or additions. For example, suppose you have
+a file
+named <samp>file1</samp> which existed as revision 1.1, and
+you then removed it (thus adding a dead revision 1.2).
+Now suppose you want to add it again, with the same
+contents it had previously. Here is how to do it:
+</p>
+<div class="example">
+<pre class="example">$ cvs update -j 1.2 -j 1.1 file1
+U file1
+$ cvs commit -m test
+Checking in file1;
+/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+new revision: 1.3; previous revision: 1.2
+done
+$
+</pre></div>
+
+<hr>
+<a name="Merging-adds-and-removals"></a>
+<div class="header">
+<p>
+Next: <a href="#Merging-and-keywords" accesskey="n" rel="next">Merging and
keywords</a>, Previous: <a href="#Merging-two-revisions" accesskey="p"
rel="prev">Merging two revisions</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Merging-can-add-or-remove-files"></a>
+<h3 class="section">5.9 Merging can add or remove files</h3>
+
+<p>If the changes which you are merging involve removing
+or adding some files, <code>update -j</code> will reflect
+such additions or removals.
+</p>
+<p>For example:
+</p><div class="example">
+<pre class="example">cvs update -A
+touch a b c
+cvs add a b c ; cvs ci -m "added" a b c
+cvs tag -b branchtag
+cvs update -r branchtag
+touch d ; cvs add d
+rm a ; cvs rm a
+cvs ci -m "added d, removed a"
+cvs update -A
+cvs update -jbranchtag
+</pre></div>
+
+<p>After these commands are executed and a ‘<samp>cvs
commit</samp>’ is done,
+file <samp>a</samp> will be removed and file <samp>d</samp> added in the main
branch.
+</p>
+<p>Note that using a single static tag (‘<samp>-j
<var>tagname</var></samp>’)
+rather than a dynamic tag (‘<samp>-j
<var>branchname</var></samp>’) to merge
+changes from a branch will usually not remove files which were removed on the
+branch since <small>CVS</small> does not automatically add static tags to dead
revisions.
+The exception to this rule occurs when
+a static tag has been attached to a dead revision manually. Use the branch tag
+to merge all changes from the branch or use two static tags as merge endpoints
+to be sure that all intended changes are propagated in the merge.
+</p>
+<hr>
+<a name="Merging-and-keywords"></a>
+<div class="header">
+<p>
+Previous: <a href="#Merging-adds-and-removals" accesskey="p"
rel="prev">Merging adds and removals</a>, Up: <a href="#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Merging-and-keywords-1"></a>
+<h3 class="section">5.10 Merging and keywords</h3>
+<a name="index-Merging_002c-and-keyword-substitution"></a>
+<a name="index-Keyword-substitution_002c-and-merging"></a>
+<a
name="index-_002dj-_0028merging-branches_0029_002c-and-keyword-substitution"></a>
+<a name="index-_002dkk_002c-to-avoid-conflicts-during-a-merge"></a>
+
+<p>If you merge files containing keywords (see <a
href="#Keyword-substitution">Keyword substitution</a>), you will normally get
numerous
+conflicts during the merge, because the keywords are
+expanded differently in the revisions which you are
+merging.
+</p>
+<p>Therefore, you will often want to specify the
+‘<samp>-kk</samp>’ (see <a href="#Substitution-modes">Substitution
modes</a>) switch to the
+merge command line. By substituting just the name of
+the keyword, not the expanded value of that keyword,
+this option ensures that the revisions which you are
+merging will be the same as each other, and avoid
+spurious conflicts.
+</p>
+<p>For example, suppose you have a file like this:
+</p>
+<div class="example">
+<pre class="example"> +---------+
+ _! 1.1.2.1 ! <- br1
+ / +---------+
+ /
+ /
++-----+ +-----+
+! 1.1 !----! 1.2 !
++-----+ +-----+
+</pre></div>
+
+<p>and your working directory is currently on the trunk
+(revision 1.2). Then you might get the following
+results from a merge:
+</p>
+<div class="example">
+<pre class="example">$ cat file1
+key $<i></i>Revision: 1.2 $
+. . .
+$ cvs update -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+rcsmerge: warning: conflicts during merge
+$ cat file1
+<<<<<<< file1
+key $<i></i>Revision: 1.2 $
+=======
+key $<i></i>Revision: 1.1.2.1 $
+>>>>>>> 1.1.2.1
+. . .
+</pre></div>
+
+<p>What happened was that the merge tried to merge the
+differences between 1.1 and 1.1.2.1 into your working
+directory. So, since the keyword changed from
+<code>Revision: 1.1</code> to <code>Revision: 1.1.2.1</code>,
+<small>CVS</small> tried to merge that change into your working
+directory, which conflicted with the fact that your
+working directory had contained <code>Revision: 1.2</code>.
+</p>
+<p>Here is what happens if you had used ‘<samp>-kk</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cat file1
+key $<i></i>Revision: 1.2 $
+. . .
+$ cvs update -kk -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+$ cat file1
+key $<i></i>Revision$
+. . .
+</pre></div>
+
+<p>What is going on here is that revision 1.1 and 1.1.2.1
+both expand as plain <code>Revision</code>, and therefore
+merging the changes between them into the working
+directory need not change anything. Therefore, there
+is no conflict.
+</p>
+<p>There is, however, one major caveat with using
+‘<samp>-kk</samp>’ on merges. Namely, it overrides whatever
+keyword expansion mode <small>CVS</small> would normally have
+used. In particular, this is a problem if the mode had
+been ‘<samp>-kb</samp>’ for a binary file. Therefore, if your
+repository contains binary files, you will need to deal
+with the conflicts rather than using ‘<samp>-kk</samp>’.
+</p>
+
+<p>As a result of using ‘<samp>-kk</samp>’ during the merge, each
file examined by the
+update will have ‘<samp>-kk</samp>’ set as sticky options.
Running <code>update -A</code>
+will clear the sticky options on unmodified files, but it will not clear
+the sticky options on modified files. To get back to the default keyword
+substitution for modified files, you must commit the results of the merge
+and then run <code>update -A</code>.
+</p>
+<hr>
+<a name="Recursive-behavior"></a>
+<div class="header">
+<p>
+Next: <a href="#Adding-and-removing" accesskey="n" rel="next">Adding and
removing</a>, Previous: <a href="#Branching-and-merging" accesskey="p"
rel="prev">Branching and merging</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Recursive-behavior-1"></a>
+<h2 class="chapter">6 Recursive behavior</h2>
+<a name="index-Recursive-_0028directory-descending_0029"></a>
+<a name="index-Directory_002c-descending"></a>
+<a name="index-Descending-directories"></a>
+<a name="index-Subdirectories"></a>
+
+<p>Almost all of the subcommands of <small>CVS</small> work
+recursively when you specify a directory as an
+argument. For instance, consider this directory
+structure:
+</p>
+<div class="example">
+<pre class="example"> <code>$HOME</code>
+ |
+ +--<tt>tc</tt>
+ | |
+ +--<tt>CVS</tt>
+ | (internal CVS files)
+ +--<tt>Makefile</tt>
+ +--<tt>backend.c</tt>
+ +--<tt>driver.c</tt>
+ +--<tt>frontend.c</tt>
+ +--<tt>parser.c</tt>
+ +--<tt>man</tt>
+ | |
+ | +--<tt>CVS</tt>
+ | | (internal CVS files)
+ | +--<tt>tc.1</tt>
+ |
+ +--<tt>testing</tt>
+ |
+ +--<tt>CVS</tt>
+ | (internal CVS files)
+ +--<tt>testpgm.t</tt>
+ +--<tt>test2.t</tt>
+</pre></div>
+
+<p>If <samp>tc</samp> is the current working directory, the
+following is true:
+</p>
+<ul>
+<li> ‘<samp>cvs update testing</samp>’ is equivalent to
+
+<div class="example">
+<pre class="example">cvs update testing/testpgm.t testing/test2.t
+</pre></div>
+
+</li><li> ‘<samp>cvs update testing man</samp>’ updates all files
in the
+subdirectories
+
+</li><li> ‘<samp>cvs update .</samp>’ or just ‘<samp>cvs
update</samp>’ updates
+all files in the <code>tc</code> directory
+</li></ul>
+
+<p>If no arguments are given to <code>update</code> it will
+update all files in the current working directory and
+all its subdirectories. In other words, <samp>.</samp> is a
+default argument to <code>update</code>. This is also true
+for most of the <small>CVS</small> subcommands, not only the
+<code>update</code> command.
+</p>
+<p>The recursive behavior of the <small>CVS</small> subcommands can be
+turned off with the ‘<samp>-l</samp>’ option.
+Conversely, the ‘<samp>-R</samp>’ option can be used to force
recursion if
+‘<samp>-l</samp>’ is specified in <samp>~/.cvsrc</samp> (see <a
href="#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<div class="example">
+<pre class="example">$ cvs update -l # <span class="roman">Don’t
update files in subdirectories</span>
+</pre></div>
+
+<hr>
+<a name="Adding-and-removing"></a>
+<div class="header">
+<p>
+Next: <a href="#History-browsing" accesskey="n" rel="next">History
browsing</a>, Previous: <a href="#Recursive-behavior" accesskey="p"
rel="prev">Recursive behavior</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Adding_002c-removing_002c-and-renaming-files-and-directories"></a>
+<h2 class="chapter">7 Adding, removing, and renaming files and directories</h2>
+
+<p>In the course of a project, one will often add new
+files. Likewise with removing or renaming, or with
+directories. The general concept to keep in mind in
+all these cases is that instead of making an
+irreversible change you want <small>CVS</small> to record the
+fact that a change has taken place, just as with
+modifying an existing file. The exact mechanisms to do
+this in <small>CVS</small> vary depending on the situation.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Adding-files"
accesskey="1">Adding files</a>:</td><td> </td><td align="left"
valign="top">Adding files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Removing-files"
accesskey="2">Removing files</a>:</td><td> </td><td align="left"
valign="top">Removing files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Removing-directories"
accesskey="3">Removing directories</a>:</td><td> </td><td
align="left" valign="top">Removing directories
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Moving-files"
accesskey="4">Moving files</a>:</td><td> </td><td align="left"
valign="top">Moving and renaming files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Moving-directories"
accesskey="5">Moving directories</a>:</td><td> </td><td align="left"
valign="top">Moving and renaming directories
+</td></tr>
+</table>
+
+<hr>
+<a name="Adding-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Removing-files" accesskey="n" rel="next">Removing files</a>,
Up: <a href="#Adding-and-removing" accesskey="u" rel="up">Adding and
removing</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Adding-files-to-a-directory"></a>
+<h3 class="section">7.1 Adding files to a directory</h3>
+<a name="index-Adding-files"></a>
+
+<p>To add a new file to a directory, follow these steps.
+</p>
+<ul>
+<li> You must have a working copy of the directory.
+See <a href="#Getting-the-source">Getting the source</a>.
+
+</li><li> Create the new file inside your working copy of the directory.
+
+</li><li> Use ‘<samp>cvs add <var>filename</var></samp>’ to tell
<small>CVS</small> that you
+want to version control the file. If the file contains
+binary data, specify ‘<samp>-kb</samp>’ (see <a
href="#Binary-files">Binary files</a>).
+
+</li><li> Use ‘<samp>cvs commit <var>filename</var></samp>’ to
actually check
+in the file into the repository. Other developers
+cannot see the file until you perform this step.
+</li></ul>
+
+<p>You can also use the <code>add</code> command to add a new
+directory.
+</p>
+<p>Unlike most other commands, the <code>add</code> command is
+not recursive. You have to explicitly name files and
+directories that you wish to add to the repository.
+However, each directory will need to be added
+separately before you will be able to add new files
+to those directories.
+</p>
+<div class="example">
+<pre class="example">$ mkdir -p foo/bar
+$ cp ~/myfile foo/bar/myfile
+$ cvs add foo foo/bar
+$ cvs add foo/bar/myfile
+</pre></div>
+
+<a name="index-add-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-add"></a>Command: <strong>cvs add</strong>
<em>[<code>-k</code> kflag] [<code>-m</code> message] files …</em></dt>
+<dd>
+<p>Schedule <var>files</var> to be added to the repository.
+The files or directories specified with <code>add</code> must
+already exist in the current directory. To add a whole
+new directory hierarchy to the source repository (for
+example, files received from a third-party vendor), use
+the <code>import</code> command instead. See <a href="#import">import</a>.
+</p>
+<p>The added files are not placed in the source repository
+until you use <code>commit</code> to make the change
+permanent. Doing an <code>add</code> on a file that was
+removed with the <code>remove</code> command will undo the
+effect of the <code>remove</code>, unless a <code>commit</code>
+command intervened. See <a href="#Removing-files">Removing files</a>, for an
+example.
+</p>
+<p>The ‘<samp>-k</samp>’ option specifies the default way that
+this file will be checked out; for more information see
+<a href="#Substitution-modes">Substitution modes</a>.
+</p>
+<p>The ‘<samp>-m</samp>’ option specifies a description for the
+file. This description appears in the history log (if
+it is enabled, see <a href="#history-file">history file</a>). It will also be
+saved in the version history inside the repository when
+the file is committed. The <code>log</code> command displays
+this description. The description can be changed using
+‘<samp>admin -t</samp>’. See <a href="#admin">admin</a>. If you
omit the
+‘<samp>-m <var>description</var></samp>’ flag, an empty string will
+be used. You will not be prompted for a description.
+</p></dd></dl>
+
+<p>For example, the following commands add the file
+<samp>backend.c</samp> to the repository:
+</p>
+<div class="example">
+<pre class="example">$ cvs add backend.c
+$ cvs commit -m "Early version. Not yet compilable." backend.c
+</pre></div>
+
+<p>When you add a file it is added only on the branch
+which you are working on (see <a href="#Branching-and-merging">Branching and
merging</a>). You can
+later merge the additions to another branch if you want
+(see <a href="#Merging-adds-and-removals">Merging adds and removals</a>).
+</p>
+<hr>
+<a name="Removing-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Removing-directories" accesskey="n" rel="next">Removing
directories</a>, Previous: <a href="#Adding-files" accesskey="p"
rel="prev">Adding files</a>, Up: <a href="#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Removing-files-1"></a>
+<h3 class="section">7.2 Removing files</h3>
+<a name="index-Removing-files"></a>
+<a name="index-Deleting-files"></a>
+
+<p>Directories change. New files are added, and old files
+disappear. Still, you want to be able to retrieve an
+exact copy of old releases.
+</p>
+<p>Here is what you can do to remove a file,
+but remain able to retrieve old revisions:
+</p>
+<ul>
+<li> Make sure that you have not made any uncommitted
+modifications to the file. See <a href="#Viewing-differences">Viewing
differences</a>,
+for one way to do that. You can also use the
+<code>status</code> or <code>update</code> command. If you remove
+the file without committing your changes, you will of
+course not be able to retrieve the file as it was
+immediately before you deleted it.
+
+</li><li> Remove the file from your working copy of the directory.
+You can for instance use <code>rm</code>.
+
+</li><li> Use ‘<samp>cvs remove <var>filename</var></samp>’ to
tell <small>CVS</small> that
+you really want to delete the file.
+
+</li><li> Use ‘<samp>cvs commit <var>filename</var></samp>’ to
actually
+perform the removal of the file from the repository.
+</li></ul>
+
+<p>When you commit the removal of the file, <small>CVS</small>
+records the fact that the file no longer exists. It is
+possible for a file to exist on only some branches and
+not on others, or to re-add another file with the same
+name later. <small>CVS</small> will correctly create or not create
+the file, based on the ‘<samp>-r</samp>’ and
‘<samp>-D</samp>’ options
+specified to <code>checkout</code> or <code>update</code>.
+</p>
+<a name="index-Remove-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-remove"></a>Command: <strong>cvs remove</strong>
<em>[options] files …</em></dt>
+<dd>
+<p>Schedule file(s) to be removed from the repository
+(files which have not already been removed from the
+working directory are not processed). This command
+does not actually remove the file from the repository
+until you commit the removal. For a full list of
+options, see <a href="#Invoking-CVS">Invoking CVS</a>.
+</p></dd></dl>
+
+<p>Here is an example of removing several files:
+</p>
+<div class="example">
+<pre class="example">$ cd test
+$ rm *.c
+$ cvs remove
+cvs remove: Removing .
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+</pre></div>
+
+<p>As a convenience you can remove the file and <code>cvs
+remove</code> it in one step, by specifying the ‘<samp>-f</samp>’
+option. For example, the above example could also be
+done like this:
+</p>
+<div class="example">
+<pre class="example">$ cd test
+$ cvs remove -f *.c
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+</pre></div>
+
+<p>If you execute <code>remove</code> for a file, and then
+change your mind before you commit, you can undo the
+<code>remove</code> with an <code>add</code> command.
+</p>
+
+<div class="example">
+<pre class="example">$ ls
+CVS ja.h oj.c
+$ rm oj.c
+$ cvs remove oj.c
+cvs remove: scheduling oj.c for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+$ cvs add oj.c
+U oj.c
+cvs add: oj.c, version 1.1.1.1, resurrected
+</pre></div>
+
+<p>If you realize your mistake before you run the
+<code>remove</code> command you can use <code>update</code> to
+resurrect the file:
+</p>
+<div class="example">
+<pre class="example">$ rm oj.c
+$ cvs update oj.c
+cvs update: warning: oj.c was lost
+U oj.c
+</pre></div>
+
+<p>When you remove a file it is removed only on the branch
+which you are working on (see <a href="#Branching-and-merging">Branching and
merging</a>). You can
+later merge the removals to another branch if you want
+(see <a href="#Merging-adds-and-removals">Merging adds and removals</a>).
+</p>
+<hr>
+<a name="Removing-directories"></a>
+<div class="header">
+<p>
+Next: <a href="#Moving-files" accesskey="n" rel="next">Moving files</a>,
Previous: <a href="#Removing-files" accesskey="p" rel="prev">Removing
files</a>, Up: <a href="#Adding-and-removing" accesskey="u" rel="up">Adding and
removing</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Removing-directories-1"></a>
+<h3 class="section">7.3 Removing directories</h3>
+<a name="index-Removing-directories"></a>
+<a name="index-Directories_002c-removing"></a>
+
+<p>In concept, removing directories is somewhat similar to
+removing files—you want the directory to not exist in
+your current working directories, but you also want to
+be able to retrieve old releases in which the directory
+existed.
+</p>
+<p>The way that you remove a directory is to remove all
+the files in it. You don’t remove the directory
+itself; there is no way to do that.
+Instead you specify the ‘<samp>-P</samp>’ option to
+<code>cvs update</code> or <code>cvs checkout</code>,
+which will cause <small>CVS</small> to remove empty
+directories from working directories.
+(Note that <code>cvs export</code> always removes empty directories.)
+Probably the
+best way to do this is to always specify ‘<samp>-P</samp>’; if
+you want an empty directory then put a dummy file (for
+example <samp>.keepme</samp>) in it to prevent ‘<samp>-P</samp>’
from
+removing it.
+</p>
+<p>Note that ‘<samp>-P</samp>’ is implied by the
‘<samp>-r</samp>’ or ‘<samp>-D</samp>’
+options of <code>checkout</code>. This way,
+<small>CVS</small> will be able to correctly create the directory
+or not depending on whether the particular version you
+are checking out contains any files in that directory.
+</p>
+<hr>
+<a name="Moving-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Moving-directories" accesskey="n" rel="next">Moving
directories</a>, Previous: <a href="#Removing-directories" accesskey="p"
rel="prev">Removing directories</a>, Up: <a href="#Adding-and-removing"
accesskey="u" rel="up">Adding and removing</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Moving-and-renaming-files"></a>
+<h3 class="section">7.4 Moving and renaming files</h3>
+<a name="index-Moving-files"></a>
+<a name="index-Renaming-files"></a>
+<a name="index-Files_002c-moving"></a>
+
+<p>Moving files to a different directory or renaming them
+is not difficult, but some of the ways in which this
+works may be non-obvious. (Moving or renaming a
+directory is even harder. See <a href="#Moving-directories">Moving
directories</a>.).
+</p>
+<p>The examples below assume that the file <var>old</var> is renamed to
+<var>new</var>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Outside"
accesskey="1">Outside</a>:</td><td> </td><td align="left"
valign="top">The normal way to Rename
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Inside"
accesskey="2">Inside</a>:</td><td> </td><td align="left"
valign="top">A tricky, alternative way
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Rename-by-copying"
accesskey="3">Rename by copying</a>:</td><td> </td><td align="left"
valign="top">Another tricky, alternative way
+</td></tr>
+</table>
+
+<hr>
+<a name="Outside"></a>
+<div class="header">
+<p>
+Next: <a href="#Inside" accesskey="n" rel="next">Inside</a>, Up: <a
href="#Moving-files" accesskey="u" rel="up">Moving files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="The-Normal-way-to-Rename"></a>
+<h4 class="subsection">7.4.1 The Normal way to Rename</h4>
+
+
+<p>The normal way to move a file is to copy <var>old</var> to
+<var>new</var>, and then issue the normal <small>CVS</small> commands
+to remove <var>old</var> from the repository, and add
+<var>new</var> to it.
+</p>
+<div class="example">
+<pre class="example">$ mv <var>old</var> <var>new</var>
+$ cvs remove <var>old</var>
+$ cvs add <var>new</var>
+$ cvs commit -m "Renamed <var>old</var> to <var>new</var>"
<var>old</var> <var>new</var>
+</pre></div>
+
+<p>This is the simplest way to move a file, it is not
+error-prone, and it preserves the history of what was
+done. Note that to access the history of the file you
+must specify the old or the new name, depending on what
+portion of the history you are accessing. For example,
+<code>cvs log <var>old</var></code> will give the log up until the
+time of the rename.
+</p>
+<p>When <var>new</var> is committed its revision numbers will
+start again, usually at 1.1, so if that bothers you,
+use the ‘<samp>-r rev</samp>’ option to commit. For more
+information see <a href="#Assigning-revisions">Assigning revisions</a>.
+</p>
+<hr>
+<a name="Inside"></a>
+<div class="header">
+<p>
+Next: <a href="#Rename-by-copying" accesskey="n" rel="next">Rename by
copying</a>, Previous: <a href="#Outside" accesskey="p" rel="prev">Outside</a>,
Up: <a href="#Moving-files" accesskey="u" rel="up">Moving files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Moving-the-history-file"></a>
+<h4 class="subsection">7.4.2 Moving the history file</h4>
+
+<p>This method is more dangerous, since it involves moving
+files inside the repository. Read this entire section
+before trying it out!
+</p>
+<div class="example">
+<pre class="example">$ cd $CVSROOT/<var>dir</var>
+$ mv <var>old</var>,v <var>new</var>,v
+</pre></div>
+
+<p>Advantages:
+</p>
+<ul>
+<li> The log of changes is maintained intact.
+
+</li><li> The revision numbers are not affected.
+</li></ul>
+
+<p>Disadvantages:
+</p>
+<ul>
+<li> Old releases cannot easily be fetched from the
+repository. (The file will show up as <var>new</var> even
+in revisions from the time before it was renamed).
+
+</li><li> There is no log information of when the file was renamed.
+
+</li><li> Nasty things might happen if someone accesses the history file
+while you are moving it. Make sure no one else runs any of the
<small>CVS</small>
+commands while you move it.
+</li></ul>
+
+<hr>
+<a name="Rename-by-copying"></a>
+<div class="header">
+<p>
+Previous: <a href="#Inside" accesskey="p" rel="prev">Inside</a>, Up: <a
href="#Moving-files" accesskey="u" rel="up">Moving files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Copying-the-history-file"></a>
+<h4 class="subsection">7.4.3 Copying the history file</h4>
+
+<p>This way also involves direct modifications to the
+repository. It is safe, but not without drawbacks.
+</p>
+<div class="example">
+<pre class="example"># <span class="roman">Copy the RCS file inside the
repository</span>
+$ cd $CVSROOT/<var>dir</var>
+$ cp <var>old</var>,v <var>new</var>,v
+# <span class="roman">Remove the old file</span>
+$ cd ~/<var>dir</var>
+$ rm <var>old</var>
+$ cvs remove <var>old</var>
+$ cvs commit <var>old</var>
+# <span class="roman">Remove all tags from <var>new</var></span>
+$ cvs update <var>new</var>
+$ cvs log <var>new</var> # <span class="roman">Remember the
non-branch tag names</span>
+$ cvs tag -d <var>tag1</var> <var>new</var>
+$ cvs tag -d <var>tag2</var> <var>new</var>
+…
+</pre></div>
+
+<p>By removing the tags you will be able to check out old
+revisions.
+</p>
+<p>Advantages:
+</p>
+<ul>
+<li> Checking out old revisions works correctly, as long as
+you use ‘<samp>-r<var>tag</var></samp>’ and not
‘<samp>-D<var>date</var></samp>’
+to retrieve the revisions.
+
+</li><li> The log of changes is maintained intact.
+
+</li><li> The revision numbers are not affected.
+</li></ul>
+
+<p>Disadvantages:
+</p>
+<ul>
+<li> You cannot easily see the history of the file across the rename.
+
+</li></ul>
+
+<hr>
+<a name="Moving-directories"></a>
+<div class="header">
+<p>
+Previous: <a href="#Moving-files" accesskey="p" rel="prev">Moving files</a>,
Up: <a href="#Adding-and-removing" accesskey="u" rel="up">Adding and
removing</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Moving-and-renaming-directories"></a>
+<h3 class="section">7.5 Moving and renaming directories</h3>
+<a name="index-Moving-directories"></a>
+<a name="index-Renaming-directories"></a>
+<a name="index-Directories_002c-moving"></a>
+
+<p>The normal way to rename or move a directory is to
+rename or move each file within it as described in
+<a href="#Outside">Outside</a>. Then check out with the
‘<samp>-P</samp>’
+option, as described in <a href="#Removing-directories">Removing
directories</a>.
+</p>
+<p>If you really want to hack the repository to rename or
+delete a directory in the repository, you can do it
+like this:
+</p>
+<ol>
+<li> Inform everyone who has a checked out copy of the directory that the
+directory will be renamed. They should commit all their changes in all their
+copies of the project containing the directory to be removed, and remove
+all their working copies of said project, before you take the steps below.
+
+</li><li> Rename the directory inside the repository.
+
+<div class="example">
+<pre class="example">$ cd $CVSROOT/<var>parent-dir</var>
+$ mv <var>old-dir</var> <var>new-dir</var>
+</pre></div>
+
+</li><li> Fix the <small>CVS</small> administrative files, if necessary (for
+instance if you renamed an entire module).
+
+</li><li> Tell everyone that they can check out again and continue
+working.
+
+</li></ol>
+
+<p>If someone had a working copy the <small>CVS</small> commands will
+cease to work for him, until he removes the directory
+that disappeared inside the repository.
+</p>
+<p>It is almost always better to move the files in the
+directory instead of moving the directory. If you move the
+directory you are unlikely to be able to retrieve old
+releases correctly, since they probably depend on the
+name of the directories.
+</p>
+<hr>
+<a name="History-browsing"></a>
+<div class="header">
+<p>
+Next: <a href="#Binary-files" accesskey="n" rel="next">Binary files</a>,
Previous: <a href="#Adding-and-removing" accesskey="p" rel="prev">Adding and
removing</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="History-browsing-1"></a>
+<h2 class="chapter">8 History browsing</h2>
+<a name="index-History-browsing"></a>
+<a name="index-Traceability"></a>
+<a name="index-Isolation"></a>
+
+
+<p>Once you have used <small>CVS</small> to store a version control
+history—what files have changed when, how, and by
+whom, there are a variety of mechanisms for looking
+through the history.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#log-messages"
accesskey="1">log messages</a>:</td><td> </td><td align="left"
valign="top">Log messages
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#history-database"
accesskey="2">history database</a>:</td><td> </td><td align="left"
valign="top">The history database
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#user_002ddefined-logging"
accesskey="3">user-defined logging</a>:</td><td> </td><td
align="left" valign="top">User-defined logging
+</td></tr>
+</table>
+
+<hr>
+<a name="log-messages"></a>
+<div class="header">
+<p>
+Next: <a href="#history-database" accesskey="n" rel="next">history
database</a>, Up: <a href="#History-browsing" accesskey="u" rel="up">History
browsing</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Log-messages"></a>
+<h3 class="section">8.1 Log messages</h3>
+
+<p>Whenever you commit a file you specify a log message.
+</p>
+<p>To look through the log messages which have been
+specified for every revision which has been committed,
+use the <code>cvs log</code> command (see <a href="#log">log</a>).
+</p>
+<hr>
+<a name="history-database"></a>
+<div class="header">
+<p>
+Next: <a href="#user_002ddefined-logging" accesskey="n"
rel="next">user-defined logging</a>, Previous: <a href="#log-messages"
accesskey="p" rel="prev">log messages</a>, Up: <a href="#History-browsing"
accesskey="u" rel="up">History browsing</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="The-history-database"></a>
+<h3 class="section">8.2 The history database</h3>
+
+<p>You can use the history file (see <a href="#history-file">history file</a>)
to
+log various <small>CVS</small> actions. To retrieve the
+information from the history file, use the <code>cvs
+history</code> command (see <a href="#history">history</a>).
+</p>
+<p>Note: you can control what is logged to this file by using the
+‘<samp>LogHistory</samp>’ keyword in the
<samp>CVSROOT/config</samp> file
+(see <a href="#config">config</a>).
+</p>
+
+<hr>
+<a name="user_002ddefined-logging"></a>
+<div class="header">
+<p>
+Previous: <a href="#history-database" accesskey="p" rel="prev">history
database</a>, Up: <a href="#History-browsing" accesskey="u" rel="up">History
browsing</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="User_002ddefined-logging"></a>
+<h3 class="section">8.3 User-defined logging</h3>
+
+<p>You can customize <small>CVS</small> to log various kinds of
+actions, in whatever manner you choose. These
+mechanisms operate by executing a script at various
+times. The script might append a message to a file
+listing the information and the programmer who created
+it, or send mail to a group of developers, or, perhaps,
+post a message to a particular newsgroup. To log
+commits, use the <samp>loginfo</samp> file (see <a
href="#loginfo">loginfo</a>).
+To log tags, use the <samp>taginfo</samp> file (see <a
href="#taginfo">taginfo</a>).
+To log checkouts, exports, and tags,
+respectively, you can also use the
+‘<samp>-o</samp>’, ‘<samp>-e</samp>’, and
‘<samp>-t</samp>’ options in the
+modules file. For a more flexible way of giving
+notifications to various users, which requires less in
+the way of keeping centralized scripts up to date, use
+the <code>cvs watch add</code> command (see <a
href="#Getting-Notified">Getting Notified</a>); this command is useful even if
you are not
+using <code>cvs watch on</code>.
+</p>
+<hr>
+<a name="Binary-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Multiple-developers" accesskey="n" rel="next">Multiple
developers</a>, Previous: <a href="#History-browsing" accesskey="p"
rel="prev">History browsing</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Handling-binary-files"></a>
+<h2 class="chapter">9 Handling binary files</h2>
+<a name="index-Binary-files"></a>
+
+<p>The most common use for <small>CVS</small> is to store text
+files. With text files, <small>CVS</small> can merge revisions,
+display the differences between revisions in a
+human-visible fashion, and other such operations.
+However, if you are willing to give up a few of these
+abilities, <small>CVS</small> can store binary files. For
+example, one might store a web site in <small>CVS</small>
+including both text files and binary images.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Binary-why"
accesskey="1">Binary why</a>:</td><td> </td><td align="left"
valign="top">More details on issues with binary files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Binary-howto"
accesskey="2">Binary howto</a>:</td><td> </td><td align="left"
valign="top">How to store them
+</td></tr>
+</table>
+
+<hr>
+<a name="Binary-why"></a>
+<div class="header">
+<p>
+Next: <a href="#Binary-howto" accesskey="n" rel="next">Binary howto</a>, Up:
<a href="#Binary-files" accesskey="u" rel="up">Binary files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="The-issues-with-binary-files"></a>
+<h3 class="section">9.1 The issues with binary files</h3>
+
+<p>While the need to manage binary files may seem obvious
+if the files that you customarily work with are binary,
+putting them into version control does present some
+additional issues.
+</p>
+<p>One basic function of version control is to show the
+differences between two revisions. For example, if
+someone else checked in a new version of a file, you
+may wish to look at what they changed and determine
+whether their changes are good. For text files,
+<small>CVS</small> provides this functionality via the <code>cvs
+diff</code> command. For binary files, it may be possible to
+extract the two revisions and then compare them with a
+tool external to <small>CVS</small> (for example, word processing
+software often has such a feature). If there is no
+such tool, one must track changes via other mechanisms,
+such as urging people to write good log messages, and
+hoping that the changes they actually made were the
+changes that they intended to make.
+</p>
+<p>Another ability of a version control system is the
+ability to merge two revisions. For <small>CVS</small> this
+happens in two contexts. The first is when users make
+changes in separate working directories
+(see <a href="#Multiple-developers">Multiple developers</a>). The second is
when one
+merges explicitly with the ‘<samp>update -j</samp>’ command
+(see <a href="#Branching-and-merging">Branching and merging</a>).
+</p>
+<p>In the case of text
+files, <small>CVS</small> can merge changes made independently,
+and signal a conflict if the changes conflict. With
+binary files, the best that <small>CVS</small> can do is present
+the two different copies of the file, and leave it to
+the user to resolve the conflict. The user may choose
+one copy or the other, or may run an external merge
+tool which knows about that particular file format, if
+one exists.
+Note that having the user merge relies primarily on the
+user to not accidentally omit some changes, and thus is
+potentially error prone.
+</p>
+<p>If this process is thought to be undesirable, the best
+choice may be to avoid merging. To avoid the merges
+that result from separate working directories, see the
+discussion of reserved checkouts (file locking) in
+<a href="#Multiple-developers">Multiple developers</a>. To avoid the merges
+resulting from branches, restrict use of branches.
+</p>
+<hr>
+<a name="Binary-howto"></a>
+<div class="header">
+<p>
+Previous: <a href="#Binary-why" accesskey="p" rel="prev">Binary why</a>, Up:
<a href="#Binary-files" accesskey="u" rel="up">Binary files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="How-to-store-binary-files"></a>
+<h3 class="section">9.2 How to store binary files</h3>
+
+<p>There are two issues with using <small>CVS</small> to store
+binary files. The first is that <small>CVS</small> by default
+converts line endings between the canonical form in
+which they are stored in the repository (linefeed
+only), and the form appropriate to the operating system
+in use on the client (for example, carriage return
+followed by line feed for Windows NT).
+</p>
+<p>The second is that a binary file might happen to
+contain data which looks like a keyword (see <a
href="#Keyword-substitution">Keyword substitution</a>), so keyword expansion
must be turned
+off.
+</p>
+
+<p>The ‘<samp>-kb</samp>’ option available with some
<small>CVS</small>
+commands insures that neither line ending conversion
+nor keyword expansion will be done.
+</p>
+<p>Here is an example of how you can create a new file
+using the ‘<samp>-kb</samp>’ flag:
+</p>
+<div class="example">
+<pre class="example">$ echo '$<i></i>Id$' > kotest
+$ cvs add -kb -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+</pre></div>
+
+<p>If a file accidentally gets added without ‘<samp>-kb</samp>’,
+one can use the <code>cvs admin</code> command to recover.
+For example:
+</p>
+<div class="example">
+<pre class="example">$ echo '$<i></i>Id$' > kotest
+$ cvs add -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+$ cvs admin -kb kotest
+$ cvs update -A kotest
+# <span class="roman">For non-unix systems:</span>
+# <span class="roman">Copy in a good copy of the file from outside CVS</span>
+$ cvs commit -m "make it binary" kotest
+</pre></div>
+
+<p>When you check in the file <samp>kotest</samp> the file is
+not preserved as a binary file, because you did not
+check it in as a binary file. The <code>cvs
+admin -kb</code> command sets the default keyword
+substitution method for this file, but it does not
+alter the working copy of the file that you have. If you need to
+cope with line endings (that is, you are using
+<small>CVS</small> on a non-unix system), then you need to
+check in a new copy of the file, as shown by the
+<code>cvs commit</code> command above.
+On unix, the <code>cvs update -A</code> command suffices.
+(Note that you can use <code>cvs log</code> to determine the default keyword
+substitution method for a file and <code>cvs status</code> to determine
+the keyword substitution method for a working copy.)
+</p>
+<p>However, in using <code>cvs admin -k</code> to change the
+keyword expansion, be aware that the keyword expansion
+mode is not version controlled. This means that, for
+example, that if you have a text file in old releases,
+and a binary file with the same name in new releases,
+<small>CVS</small> provides no way to check out the file in text
+or binary mode depending on what version you are
+checking out. There is no good workaround for this
+problem.
+</p>
+<p>You can also set a default for whether <code>cvs add</code>
+and <code>cvs import</code> treat a file as binary based on
+its name; for example you could say that files who
+names end in ‘<samp>.exe</samp>’ are binary. See <a
href="#Wrappers">Wrappers</a>.
+There is currently no way to have <small>CVS</small> detect
+whether a file is binary based on its contents. The
+main difficulty with designing such a feature is that
+it is not clear how to distinguish between binary and
+non-binary files, and the rules to apply would vary
+considerably with the operating system.
+</p>
+<hr>
+<a name="Multiple-developers"></a>
+<div class="header">
+<p>
+Next: <a href="#Revision-management" accesskey="n" rel="next">Revision
management</a>, Previous: <a href="#Binary-files" accesskey="p"
rel="prev">Binary files</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Multiple-developers-1"></a>
+<h2 class="chapter">10 Multiple developers</h2>
+<a name="index-Multiple-developers"></a>
+<a name="index-Team-of-developers"></a>
+<a name="index-File-locking"></a>
+<a name="index-Locking-files"></a>
+<a name="index-Working-copy"></a>
+<a name="index-Reserved-checkouts"></a>
+<a name="index-Unreserved-checkouts"></a>
+<a name="index-RCS_002dstyle-locking"></a>
+
+<p>When more than one person works on a software project
+things often get complicated. Often, two people try to
+edit the same file simultaneously. One solution, known
+as <em>file locking</em> or <em>reserved checkouts</em>, is
+to allow only one person to edit each file at a time.
+This is the only solution with some version control
+systems, including <small>RCS</small> and <small>SCCS</small>. Currently
+the usual way to get reserved checkouts with <small>CVS</small>
+is the <code>cvs admin -l</code> command (see <a href="#admin-options">admin
options</a>). This is not as nicely integrated into
+<small>CVS</small> as the watch features, described below, but it
+seems that most people with a need for reserved
+checkouts find it adequate.
+It also may be possible to use the watches
+features described below, together with suitable
+procedures (not enforced by software), to avoid having
+two people edit at the same time.
+</p>
+<p>The default model with <small>CVS</small> is known as
+<em>unreserved checkouts</em>. In this model, developers
+can edit their own <em>working copy</em> of a file
+simultaneously. The first person that commits his
+changes has no automatic way of knowing that another
+has started to edit it. Others will get an error
+message when they try to commit the file. They must
+then use <small>CVS</small> commands to bring their working copy
+up to date with the repository revision. This process
+is almost automatic.
+</p>
+<p><small>CVS</small> also supports mechanisms which facilitate
+various kinds of communication, without actually
+enforcing rules like reserved checkouts do.
+</p>
+<p>The rest of this chapter describes how these various
+models work, and some of the issues involved in
+choosing between them.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#File-status"
accesskey="1">File status</a>:</td><td> </td><td align="left"
valign="top">A file can be in several states
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Updating-a-file"
accesskey="2">Updating a file</a>:</td><td> </td><td align="left"
valign="top">Bringing a file up-to-date
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Conflicts-example"
accesskey="3">Conflicts example</a>:</td><td> </td><td align="left"
valign="top">An informative example
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Informing-others"
accesskey="4">Informing others</a>:</td><td> </td><td align="left"
valign="top">To cooperate you must inform
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Concurrency"
accesskey="5">Concurrency</a>:</td><td> </td><td align="left"
valign="top">Simultaneous repository access
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Watches"
accesskey="6">Watches</a>:</td><td> </td><td align="left"
valign="top">Mechanisms to track who is editing files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Choosing-a-model"
accesskey="7">Choosing a model</a>:</td><td> </td><td align="left"
valign="top">Reserved or unreserved checkouts?
+</td></tr>
+</table>
+
+<hr>
+<a name="File-status"></a>
+<div class="header">
+<p>
+Next: <a href="#Updating-a-file" accesskey="n" rel="next">Updating a file</a>,
Up: <a href="#Multiple-developers" accesskey="u" rel="up">Multiple
developers</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="File-status-1"></a>
+<h3 class="section">10.1 File status</h3>
+<a name="index-File-status"></a>
+<a name="index-Status-of-a-file"></a>
+
+<p>Based on what operations you have performed on a
+checked out file, and what operations others have
+performed to that file in the repository, one can
+classify a file in a number of states. The states, as
+reported by the <code>status</code> command, are:
+</p>
+<dl compact="compact">
+<dd><a name="index-Up_002dto_002ddate"></a>
+</dd>
+<dt>Up-to-date</dt>
+<dd><p>The file is identical with the latest revision in the
+repository for the branch in use.
+</p>
+</dd>
+<dt>Locally Modified</dt>
+<dd><a name="index-Locally-Modified"></a>
+<p>You have edited the file, and not yet committed your changes.
+</p>
+</dd>
+<dt>Locally Added</dt>
+<dd><a name="index-Locally-Added"></a>
+<p>You have added the file with <code>add</code>, and not yet
+committed your changes.
+</p>
+</dd>
+<dt>Locally Removed</dt>
+<dd><a name="index-Locally-Removed"></a>
+<p>You have removed the file with <code>remove</code>, and not yet
+committed your changes.
+</p>
+</dd>
+<dt>Needs Checkout</dt>
+<dd><a name="index-Needs-Checkout"></a>
+<p>Someone else has committed a newer revision to the
+repository. The name is slightly misleading; you will
+ordinarily use <code>update</code> rather than
+<code>checkout</code> to get that newer revision.
+</p>
+</dd>
+<dt>Needs Patch</dt>
+<dd><a name="index-Needs-Patch"></a>
+<p>Like Needs Checkout, but the <small>CVS</small> server will send
+a patch rather than the entire file. Sending a patch or
+sending an entire file accomplishes the same thing.
+</p>
+</dd>
+<dt>Needs Merge</dt>
+<dd><a name="index-Needs-Merge"></a>
+<p>Someone else has committed a newer revision to the repository, and you
+have also made modifications to the file.
+</p>
+</dd>
+<dt>Unresolved Conflict</dt>
+<dd><a name="index-Unresolved-Conflict"></a>
+<p>A file with the same name as this new file has been added to the repository
+from a second workspace. This file will need to be moved out of the way
+to allow an <code>update</code> to complete.
+</p>
+</dd>
+<dt>File had conflicts on merge</dt>
+<dd><a name="index-File-had-conflicts-on-merge"></a>
+<p>This is like Locally Modified, except that a previous
+<code>update</code> command gave a conflict. If you have not
+already done so, you need to
+resolve the conflict as described in <a href="#Conflicts-example">Conflicts
example</a>.
+</p>
+</dd>
+<dt>Unknown</dt>
+<dd><a name="index-Unknown"></a>
+<p><small>CVS</small> doesn’t know anything about this file. For
+example, you have created a new file and have not run
+<code>add</code>.
+</p>
+</dd>
+</dl>
+
+<p>To help clarify the file status, <code>status</code> also
+reports the <code>Working revision</code> which is the
+revision that the file in the working directory derives
+from, and the <code>Repository revision</code> which is the
+latest revision in the repository for the branch in
+use.
+</p>
+<p>The options to <code>status</code> are listed in
+<a href="#Invoking-CVS">Invoking CVS</a>. For information on its <code>Sticky
tag</code>
+and <code>Sticky date</code> output, see <a href="#Sticky-tags">Sticky
tags</a>.
+For information on its <code>Sticky options</code> output,
+see the ‘<samp>-k</samp>’ option in <a
href="#update-options">update options</a>.
+</p>
+<p>You can think of the <code>status</code> and <code>update</code>
+commands as somewhat complementary. You use
+<code>update</code> to bring your files up to date, and you
+can use <code>status</code> to give you some idea of what an
+<code>update</code> would do (of course, the state of the
+repository might change before you actually run
+<code>update</code>). In fact, if you want a command to
+display file status in a more brief format than is
+displayed by the <code>status</code> command, you can invoke
+</p>
+<a name="index-update_002c-to-display-file-status"></a>
+<div class="example">
+<pre class="example">$ cvs -n -q update
+</pre></div>
+
+<p>The ‘<samp>-n</samp>’ option means to not actually do the
+update, but merely to display statuses; the ‘<samp>-q</samp>’
+option avoids printing the name of each directory. For
+more information on the <code>update</code> command, and
+these options, see <a href="#Invoking-CVS">Invoking CVS</a>.
+</p>
+<hr>
+<a name="Updating-a-file"></a>
+<div class="header">
+<p>
+Next: <a href="#Conflicts-example" accesskey="n" rel="next">Conflicts
example</a>, Previous: <a href="#File-status" accesskey="p" rel="prev">File
status</a>, Up: <a href="#Multiple-developers" accesskey="u" rel="up">Multiple
developers</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Bringing-a-file-up-to-date"></a>
+<h3 class="section">10.2 Bringing a file up to date</h3>
+<a name="index-Bringing-a-file-up-to-date"></a>
+<a name="index-Updating-a-file"></a>
+<a name="index-Merging-a-file"></a>
+<a name="index-Update_002c-introduction"></a>
+
+<p>When you want to update or merge a file, use the <code>cvs update -d</code>
+command. For files that are not up to date this is roughly equivalent
+to a <code>checkout</code> command: the newest revision of the file is
+extracted from the repository and put in your working directory. The
+<code>-d</code> option, not necessary with <code>checkout</code>, tells
<small>CVS</small>
+that you wish it to create directories added by other developers.
+</p>
+<p>Your modifications to a file are never lost when you
+use <code>update</code>. If no newer revision exists,
+running <code>update</code> has no effect. If you have
+edited the file, and a newer revision is available,
+<small>CVS</small> will merge all changes into your working copy.
+</p>
+<p>For instance, imagine that you checked out revision 1.4 and started
+editing it. In the meantime someone else committed revision 1.5, and
+shortly after that revision 1.6. If you run <code>update</code> on the file
+now, <small>CVS</small> will incorporate all changes between revision 1.4 and
1.6 into
+your file.
+</p>
+<a name="index-Overlap"></a>
+<p>If any of the changes between 1.4 and 1.6 were made too
+close to any of the changes you have made, an
+<em>overlap</em> occurs. In such cases a warning is
+printed, and the resulting file includes both
+versions of the lines that overlap, delimited by
+special markers.
+See <a href="#update">update</a>, for a complete description of the
+<code>update</code> command.
+</p>
+<hr>
+<a name="Conflicts-example"></a>
+<div class="header">
+<p>
+Next: <a href="#Informing-others" accesskey="n" rel="next">Informing
others</a>, Previous: <a href="#Updating-a-file" accesskey="p"
rel="prev">Updating a file</a>, Up: <a href="#Multiple-developers"
accesskey="u" rel="up">Multiple developers</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Conflicts-example-1"></a>
+<h3 class="section">10.3 Conflicts example</h3>
+<a name="index-Merge_002c-an-example"></a>
+<a name="index-Example-of-merge"></a>
+<a name="index-driver_002ec-_0028merge-example_0029"></a>
+
+<p>Suppose revision 1.4 of <samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdio.h>
+
+void main()
+{
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? 0 : 1);
+}
+</pre></div>
+
+<p>Revision 1.6 of <samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(!!nerr);
+}
+</pre></div>
+
+<p>Your working copy of <samp>driver.c</samp>, based on revision
+1.4, contains this before you run ‘<samp>cvs update</samp>’:
+</p>
+<div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+void main()
+{
+ init_scanner();
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+</pre></div>
+
+<p>You run ‘<samp>cvs update</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs update driver.c
+RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
+retrieving revision 1.4
+retrieving revision 1.6
+Merging differences between 1.4 and 1.6 into driver.c
+rcsmerge warning: overlaps during merge
+cvs update: conflicts found in driver.c
+C driver.c
+</pre></div>
+
+<a name="index-Conflicts-_0028merge-example_0029"></a>
+<p><small>CVS</small> tells you that there were some conflicts.
+Your original working file is saved unmodified in
+<samp>.#driver.c.1.4</samp>. The new version of
+<samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+<<<<<<< driver.c
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+=======
+ exit(!!nerr);
+>>>>>>> 1.6
+}
+</pre></div>
+
+<a name="index-Markers_002c-conflict"></a>
+<a name="index-Conflict-markers"></a>
+<a name="index-_003c_003c_003c_003c_003c_003c_003c"></a>
+<a name="index-_003e_003e_003e_003e_003e_003e_003e"></a>
+<a name="index-_003d_003d_003d_003d_003d_003d_003d"></a>
+
+<p>Note how all non-overlapping modifications are incorporated in your working
+copy, and that the overlapping section is clearly marked with
+‘<samp><<<<<<<</samp>’,
‘<samp>=======</samp>’ and
‘<samp>>>>>>>></samp>’.
+</p>
+<a name="index-Resolving-a-conflict"></a>
+<a name="index-Conflict-resolution"></a>
+<p>You resolve the conflict by editing the file, removing the markers and
+the erroneous line. Suppose you end up with this file:
+</p><div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+</pre></div>
+
+<p>You can now go ahead and commit this as revision 1.7.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Initialize scanner. Use symbolic
exit values." driver.c
+Checking in driver.c;
+/usr/local/cvsroot/yoyodyne/tc/driver.c,v <-- driver.c
+new revision: 1.7; previous revision: 1.6
+done
+</pre></div>
+
+<p>For your protection, <small>CVS</small> will refuse to check in a
+file if a conflict occurred and you have not resolved
+the conflict. Currently to resolve a conflict, you
+must change the timestamp on the file. In previous
+versions of <small>CVS</small>, you also needed to
+insure that the file contains no conflict markers.
+Because
+your file may legitimately contain conflict markers (that
+is, occurrences of ‘<samp>>>>>>>> </samp>’ at
the start of a
+line that don’t mark a conflict), the current
+version of <small>CVS</small> will print a warning and proceed to
+check in the file.
+</p>
+<a name="index-emerge"></a>
+<p>If you use release 1.04 or later of pcl-cvs (a <small>GNU</small>
+Emacs front-end for <small>CVS</small>) you can use an Emacs
+package called emerge to help you resolve conflicts.
+See the documentation for pcl-cvs.
+</p>
+<hr>
+<a name="Informing-others"></a>
+<div class="header">
+<p>
+Next: <a href="#Concurrency" accesskey="n" rel="next">Concurrency</a>,
Previous: <a href="#Conflicts-example" accesskey="p" rel="prev">Conflicts
example</a>, Up: <a href="#Multiple-developers" accesskey="u" rel="up">Multiple
developers</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Informing-others-about-commits"></a>
+<h3 class="section">10.4 Informing others about commits</h3>
+<a name="index-Informing-others"></a>
+<a name="index-Spreading-information"></a>
+<a name="index-Mail_002c-automatic-mail-on-commit"></a>
+
+<p>It is often useful to inform others when you commit a
+new revision of a file. The <samp>loginfo</samp> file can be
+used to automate this process.
+See <a href="#loginfo">loginfo</a>. You can use these features of
<small>CVS</small>
+to, for instance, instruct <small>CVS</small> to mail a
+message to all developers, or post a message to a local
+newsgroup.
+</p>
+<hr>
+<a name="Concurrency"></a>
+<div class="header">
+<p>
+Next: <a href="#Watches" accesskey="n" rel="next">Watches</a>, Previous: <a
href="#Informing-others" accesskey="p" rel="prev">Informing others</a>, Up: <a
href="#Multiple-developers" accesskey="u" rel="up">Multiple developers</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Several-developers-simultaneously-attempting-to-run-CVS"></a>
+<h3 class="section">10.5 Several developers simultaneously attempting to run
CVS</h3>
+
+<a name="index-Locks_002c-cvs_002c-introduction"></a>
+<p>If several developers try to run <small>CVS</small> at the same
+time, one may get the following message:
+</p>
+<div class="example">
+<pre class="example">[11:43:23] waiting for bach's lock in
/usr/local/cvsroot/foo
+</pre></div>
+
+<a name="index-_0023cvs_002erfl_002c-removing"></a>
+<a name="index-_0023cvs_002ewfl_002c-removing"></a>
+<a name="index-_0023cvs_002elock_002c-removing"></a>
+<p><small>CVS</small> will try again every 30 seconds, and either
+continue with the operation or print the message again,
+if it still needs to wait. If a lock seems to stick
+around for an undue amount of time, find the person
+holding the lock and ask them about the cvs command
+they are running. If they aren’t running a cvs
+command, look in the repository directory mentioned in
+the message and remove files which they own whose names
+start with <samp>#cvs.rfl</samp>,
+<samp>#cvs.wfl</samp>, or <samp>#cvs.lock</samp>.
+</p>
+<p>Note that these locks are to protect <small>CVS</small>’s
+internal data structures and have no relationship to
+the word <em>lock</em> in the sense used by
+<small>RCS</small>—which refers to reserved checkouts
+(see <a href="#Multiple-developers">Multiple developers</a>).
+</p>
+<p>Any number of people can be reading from a given
+repository at a time; only when someone is writing do
+the locks prevent other people from reading or writing.
+</p>
+<a name="index-Atomic-transactions_002c-lack-of"></a>
+<a name="index-Transactions_002c-atomic_002c-lack-of"></a>
+<p>One might hope for the following property:
+</p>
+<blockquote>
+<p>If someone commits some changes in one cvs command,
+then an update by someone else will either get all the
+changes, or none of them.
+</p></blockquote>
+
+<p>but <small>CVS</small> does <em>not</em> have this property. For
+example, given the files
+</p>
+<div class="example">
+<pre class="example">a/one.c
+a/two.c
+b/three.c
+b/four.c
+</pre></div>
+
+<p>if someone runs
+</p>
+<div class="example">
+<pre class="example">cvs ci a/two.c b/three.c
+</pre></div>
+
+<p>and someone else runs <code>cvs update</code> at the same
+time, the person running <code>update</code> might get only
+the change to <samp>b/three.c</samp> and not the change to
+<samp>a/two.c</samp>.
+</p>
+<hr>
+<a name="Watches"></a>
+<div class="header">
+<p>
+Next: <a href="#Choosing-a-model" accesskey="n" rel="next">Choosing a
model</a>, Previous: <a href="#Concurrency" accesskey="p"
rel="prev">Concurrency</a>, Up: <a href="#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Mechanisms-to-track-who-is-editing-files"></a>
+<h3 class="section">10.6 Mechanisms to track who is editing files</h3>
+<a name="index-Watches"></a>
+
+<p>For many groups, use of <small>CVS</small> in its default mode is
+perfectly satisfactory. Users may sometimes go to
+check in a modification only to find that another
+modification has intervened, but they deal with it and
+proceed with their check in. Other groups prefer to be
+able to know who is editing what files, so that if two
+people try to edit the same file they can choose to
+talk about who is doing what when rather than be
+surprised at check in time. The features in this
+section allow such coordination, while retaining the
+ability of two developers to edit the same file at the
+same time.
+</p>
+<p>For maximum benefit developers should use <code>cvs
+edit</code> (not <code>chmod</code>) to make files read-write to
+edit them, and <code>cvs release</code> (not <code>rm</code>) to
+discard a working directory which is no longer in use,
+but <small>CVS</small> is not able to enforce this behavior.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Setting-a-watch"
accesskey="1">Setting a watch</a>:</td><td> </td><td align="left"
valign="top">Telling CVS to watch certain files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Getting-Notified"
accesskey="2">Getting Notified</a>:</td><td> </td><td align="left"
valign="top">Telling CVS to notify you
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Editing-files"
accesskey="3">Editing files</a>:</td><td> </td><td align="left"
valign="top">How to edit a file which is being watched
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Watch-information"
accesskey="4">Watch information</a>:</td><td> </td><td align="left"
valign="top">Information about who is watching and editing
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Watches-Compatibility"
accesskey="5">Watches Compatibility</a>:</td><td> </td><td
align="left" valign="top">Watches interact poorly with CVS 1.6 or earlier
+</td></tr>
+</table>
+
+<hr>
+<a name="Setting-a-watch"></a>
+<div class="header">
+<p>
+Next: <a href="#Getting-Notified" accesskey="n" rel="next">Getting
Notified</a>, Up: <a href="#Watches" accesskey="u" rel="up">Watches</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Telling-CVS-to-watch-certain-files"></a>
+<h4 class="subsection">10.6.1 Telling CVS to watch certain files</h4>
+
+<p>To enable the watch features, you first specify that
+certain files are to be watched.
+</p>
+<a name="index-watch-on-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-on"></a>Command: <strong>cvs watch on</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<a name="index-Read_002donly-files_002c-and-watches"></a>
+<p>Specify that developers should run <code>cvs edit</code>
+before editing <var>files</var>. <small>CVS</small> will create working
+copies of <var>files</var> read-only, to remind developers
+to run the <code>cvs edit</code> command before working on
+them.
+</p>
+<p>If <var>files</var> includes the name of a directory, <small>CVS</small>
+arranges to watch all files added to the corresponding
+repository directory, and sets a default for files
+added in the future; this allows the user to set
+notification policies on a per-directory basis. The
+contents of the directory are processed recursively,
+unless the <code>-l</code> option is given.
+The <code>-R</code> option can be used to force recursion if the
<code>-l</code>
+option is set in <samp>~/.cvsrc</samp> (see <a
href="#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<p>If <var>files</var> is omitted, it defaults to the current directory.
+</p>
+<a name="index-watch-off-_0028subcommand_0029"></a>
+</dd></dl>
+
+<dl>
+<dt><a name="index-cvs-watch-off"></a>Command: <strong>cvs watch off</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>Do not create <var>files</var> read-only on checkout; thus,
+developers will not be reminded to use <code>cvs edit</code>
+and <code>cvs unedit</code>.
+</p>
+<p>The <var>files</var> and options are processed as for <code>cvs
+watch on</code>.
+</p>
+</dd></dl>
+
+<hr>
+<a name="Getting-Notified"></a>
+<div class="header">
+<p>
+Next: <a href="#Editing-files" accesskey="n" rel="next">Editing files</a>,
Previous: <a href="#Setting-a-watch" accesskey="p" rel="prev">Setting a
watch</a>, Up: <a href="#Watches" accesskey="u" rel="up">Watches</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Telling-CVS-to-notify-you"></a>
+<h4 class="subsection">10.6.2 Telling CVS to notify you</h4>
+
+<p>You can tell <small>CVS</small> that you want to receive
+notifications about various actions taken on a file.
+You can do this without using <code>cvs watch on</code> for
+the file, but generally you will want to use <code>cvs
+watch on</code>, to remind developers to use the <code>cvs edit</code>
+command.
+</p>
+<a name="index-watch-add-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-add"></a>Command: <strong>cvs watch add</strong>
<em>[<code>-lR</code>] [<code>-a</code> <var>action</var>]…
[<var>files</var>]…</em></dt>
+<dd>
+<p>Add the current user to the list of people to receive notification of
+work done on <var>files</var>.
+</p>
+<p>The <code>-a</code> option specifies what kinds of events
<small>CVS</small> should notify
+the user about. <var>action</var> is one of the following:
+</p>
+<dl compact="compact">
+<dt><code>edit</code></dt>
+<dd><p>Another user has applied the <code>cvs edit</code> command (described
+below) to a watched file.
+</p>
+</dd>
+<dt><code>commit</code></dt>
+<dd><p>Another user has committed changes to one of the named <var>files</var>.
+</p>
+</dd>
+<dt><code>unedit</code></dt>
+<dd><p>Another user has abandoned editing a file (other than by committing
changes).
+They can do this in several ways, by:
+</p>
+<ul>
+<li> applying the <code>cvs unedit</code> command (described below) to the file
+
+</li><li> applying the <code>cvs release</code> command (see <a
href="#release">release</a>) to the file’s parent directory
+(or recursively to a directory more than one level up)
+
+</li><li> deleting the file and allowing <code>cvs update</code> to recreate it
+
+</li></ul>
+
+</dd>
+<dt><code>all</code></dt>
+<dd><p>All of the above.
+</p>
+</dd>
+<dt><code>none</code></dt>
+<dd><p>None of the above. (This is useful with <code>cvs edit</code>,
+described below.)
+</p>
+</dd>
+</dl>
+
+<p>The <code>-a</code> option may appear more than once, or not at all. If
+omitted, the action defaults to <code>all</code>.
+</p>
+<p>The <var>files</var> and options are processed as for
+<code>cvs watch on</code>.
+</p>
+</dd></dl>
+
+
+<a name="index-watch-remove-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-remove"></a>Command: <strong>cvs watch
remove</strong> <em>[<code>-lR</code>] [<code>-a</code>
<var>action</var>]… [<var>files</var>]…</em></dt>
+<dd>
+<p>Remove a notification request established using <code>cvs watch add</code>;
+the arguments are the same. If the <code>-a</code> option is present, only
+watches for the specified actions are removed.
+</p>
+</dd></dl>
+
+<a name="index-notify-_0028admin-file_0029"></a>
+<p>When the conditions exist for notification, <small>CVS</small>
+calls the <samp>notify</samp> administrative file. Edit
+<samp>notify</samp> as one edits the other administrative
+files (see <a href="#Intro-administrative-files">Intro administrative
files</a>). This
+file follows the usual conventions for administrative
+files (see <a href="#syntax">syntax</a>), where each line is a regular
+expression followed by a command to execute. The
+command should contain a single occurrence of ‘<samp>%s</samp>’
+which will be replaced by the user to notify; the rest
+of the information regarding the notification will be
+supplied to the command on standard input. The
+standard thing to put in the <code>notify</code> file is the
+single line:
+</p>
+<div class="example">
+<pre class="example">ALL mail %s -s "CVS notification"
+</pre></div>
+
+<p>This causes users to be notified by electronic mail.
+</p>
+<a name="index-users-_0028admin-file_0029"></a>
+<p>Note that if you set this up in the straightforward
+way, users receive notifications on the server machine.
+One could of course write a <samp>notify</samp> script which
+directed notifications elsewhere, but to make this
+easy, <small>CVS</small> allows you to associate a notification
+address for each user. To do so create a file
+<samp>users</samp> in <samp>CVSROOT</samp> with a line for each
+user in the format <var>user</var>:<var>value</var>. Then
+instead of passing the name of the user to be notified
+to <samp>notify</samp>, <small>CVS</small> will pass the <var>value</var>
+(normally an email address on some other machine).
+</p>
+<p><small>CVS</small> does not notify you for your own changes.
+Currently this check is done based on whether the user
+name of the person taking the action which triggers
+notification matches the user name of the person
+getting notification. In fact, in general, the watches
+features only track one edit by each user. It probably
+would be more useful if watches tracked each working
+directory separately, so this behavior might be worth
+changing.
+</p>
+<hr>
+<a name="Editing-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Watch-information" accesskey="n" rel="next">Watch
information</a>, Previous: <a href="#Getting-Notified" accesskey="p"
rel="prev">Getting Notified</a>, Up: <a href="#Watches" accesskey="u"
rel="up">Watches</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="How-to-edit-a-file-which-is-being-watched"></a>
+<h4 class="subsection">10.6.3 How to edit a file which is being watched</h4>
+
+<a name="index-Checkout_002c-as-term-for-getting-ready-to-edit"></a>
+<p>Since a file which is being watched is checked out
+read-only, you cannot simply edit it. To make it
+read-write, and inform others that you are planning to
+edit it, use the <code>cvs edit</code> command. Some systems
+call this a <em>checkout</em>, but <small>CVS</small> uses that term
+for obtaining a copy of the sources (see <a href="#Getting-the-source">Getting
the source</a>), an operation which those systems call a
+<em>get</em> or a <em>fetch</em>.
+</p>
+<a name="index-edit-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-edit"></a>Command: <strong>cvs edit</strong>
<em>[<code>-lR</code>] [<code>-a</code> <var>action</var>]…
[<var>files</var>]…</em></dt>
+<dd>
+<p>Prepare to edit the working files <var>files</var>. <small>CVS</small>
makes the
+<var>files</var> read-write, and notifies users who have requested
+<code>edit</code> notification for any of <var>files</var>.
+</p>
+<p>The <code>cvs edit</code> command accepts the same options as the
+<code>cvs watch add</code> command, and establishes a temporary watch for the
+user on <var>files</var>; <small>CVS</small> will remove the watch when
<var>files</var> are
+<code>unedit</code>ed or <code>commit</code>ted. If the user does not wish to
+receive notifications, she should specify <code>-a none</code>.
+</p>
+<p>The <var>files</var> and the options are processed as for the <code>cvs
+watch</code> commands.
+</p>
+
+</dd></dl>
+
+<p>Normally when you are done with a set of changes, you
+use the <code>cvs commit</code> command, which checks in your
+changes and returns the watched files to their usual
+read-only state. But if you instead decide to abandon
+your changes, or not to make any changes, you can use
+the <code>cvs unedit</code> command.
+</p>
+<a name="index-unedit-_0028subcommand_0029"></a>
+<a name="index-Abandoning-work"></a>
+<a name="index-Reverting-to-repository-version"></a>
+<dl>
+<dt><a name="index-cvs-unedit"></a>Command: <strong>cvs unedit</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>Abandon work on the working files <var>files</var>, and revert them to the
+repository versions on which they are based. <small>CVS</small> makes those
+<var>files</var> read-only for which users have requested notification using
+<code>cvs watch on</code>. <small>CVS</small> notifies users who have
requested <code>unedit</code>
+notification for any of <var>files</var>.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+<p>If watches are not in use, the <code>unedit</code> command
+probably does not work, and the way to revert to the
+repository version is with the command <code>cvs update -C file</code>
+(see <a href="#update">update</a>).
+The meaning is
+not precisely the same; the latter may also
+bring in some changes which have been made in the
+repository since the last time you updated.
+</p></dd></dl>
+
+<p>When using client/server <small>CVS</small>, you can use the
+<code>cvs edit</code> and <code>cvs unedit</code> commands even if
+<small>CVS</small> is unable to successfully communicate with the
+server; the notifications will be sent upon the next
+successful <small>CVS</small> command.
+</p>
+<hr>
+<a name="Watch-information"></a>
+<div class="header">
+<p>
+Next: <a href="#Watches-Compatibility" accesskey="n" rel="next">Watches
Compatibility</a>, Previous: <a href="#Editing-files" accesskey="p"
rel="prev">Editing files</a>, Up: <a href="#Watches" accesskey="u"
rel="up">Watches</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Information-about-who-is-watching-and-editing"></a>
+<h4 class="subsection">10.6.4 Information about who is watching and
editing</h4>
+
+<a name="index-watchers-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watchers"></a>Command: <strong>cvs watchers</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>List the users currently watching changes to <var>files</var>. The report
+includes the files being watched, and the mail address of each watcher.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+</dd></dl>
+
+
+<a name="index-editors-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-editors"></a>Command: <strong>cvs editors</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>List the users currently working on <var>files</var>. The report
+includes the mail address of each user, the time when the user began
+working with the file, and the host and path of the working directory
+containing the file.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+</dd></dl>
+
+<hr>
+<a name="Watches-Compatibility"></a>
+<div class="header">
+<p>
+Previous: <a href="#Watch-information" accesskey="p" rel="prev">Watch
information</a>, Up: <a href="#Watches" accesskey="u" rel="up">Watches</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Using-watches-with-old-versions-of-CVS"></a>
+<h4 class="subsection">10.6.5 Using watches with old versions of CVS</h4>
+
+<a name="index-CVS-1_002e6_002c-and-watches"></a>
+<p>If you use the watch features on a repository, it
+creates <samp>CVS</samp> directories in the repository and
+stores the information about watches in that directory.
+If you attempt to use <small>CVS</small> 1.6 or earlier with the
+repository, you get an error message such as the
+following (all on one line):
+</p>
+<div class="example">
+<pre class="example">cvs update: cannot open CVS/Entries for reading:
+No such file or directory
+</pre></div>
+
+<p>and your operation will likely be aborted. To use the
+watch features, you must upgrade all copies of <small>CVS</small>
+which use that repository in local or server mode. If
+you cannot upgrade, use the <code>watch off</code> and
+<code>watch remove</code> commands to remove all watches, and
+that will restore the repository to a state which
+<small>CVS</small> 1.6 can cope with.
+</p>
+<hr>
+<a name="Choosing-a-model"></a>
+<div class="header">
+<p>
+Previous: <a href="#Watches" accesskey="p" rel="prev">Watches</a>, Up: <a
href="#Multiple-developers" accesskey="u" rel="up">Multiple developers</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Choosing-between-reserved-or-unreserved-checkouts"></a>
+<h3 class="section">10.7 Choosing between reserved or unreserved checkouts</h3>
+<a name="index-Choosing_002c-reserved-or-unreserved-checkouts"></a>
+
+<p>Reserved and unreserved checkouts each have pros and
+cons. Let it be said that a lot of this is a matter of
+opinion or what works given different groups’ working
+styles, but here is a brief description of some of the
+issues. There are many ways to organize a team of
+developers. <small>CVS</small> does not try to enforce a certain
+organization. It is a tool that can be used in several
+ways.
+</p>
+<p>Reserved checkouts can be very counter-productive. If
+two persons want to edit different parts of a file,
+there may be no reason to prevent either of them from
+doing so. Also, it is common for someone to take out a
+lock on a file, because they are planning to edit it,
+but then forget to release the lock.
+</p>
+<p>People, especially people who are familiar with
+reserved checkouts, often wonder how often conflicts
+occur if unreserved checkouts are used, and how
+difficult they are to resolve. The experience with
+many groups is that they occur rarely and usually are
+relatively straightforward to resolve.
+</p>
+<p>The rarity of serious conflicts may be surprising, until one realizes
+that they occur only when two developers disagree on the proper design
+for a given section of code; such a disagreement suggests that the
+team has not been communicating properly in the first place. In order
+to collaborate under <em>any</em> source management regimen, developers
+must agree on the general design of the system; given this agreement,
+overlapping changes are usually straightforward to merge.
+</p>
+<p>In some cases unreserved checkouts are clearly
+inappropriate. If no merge tool exists for the kind of
+file you are managing (for example word processor files
+or files edited by Computer Aided Design programs), and
+it is not desirable to change to a program which uses a
+mergeable data format, then resolving conflicts is
+going to be unpleasant enough that you generally will
+be better off to simply avoid the conflicts instead, by
+using reserved checkouts.
+</p>
+<p>The watches features described above in <a href="#Watches">Watches</a>
+can be considered to be an intermediate model between
+reserved checkouts and unreserved checkouts. When you
+go to edit a file, it is possible to find out who else
+is editing it. And rather than having the system
+simply forbid both people editing the file, it can tell
+you what the situation is and let you figure out
+whether it is a problem in that particular case or not.
+Therefore, for some groups it can be considered the
+best of both the reserved checkout and unreserved
+checkout worlds.
+</p>
+<hr>
+<a name="Revision-management"></a>
+<div class="header">
+<p>
+Next: <a href="#Keyword-substitution" accesskey="n" rel="next">Keyword
substitution</a>, Previous: <a href="#Multiple-developers" accesskey="p"
rel="prev">Multiple developers</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Revision-management-1"></a>
+<h2 class="chapter">11 Revision management</h2>
+<a name="index-Revision-management"></a>
+
+
+<p>If you have read this far, you probably have a pretty
+good grasp on what <small>CVS</small> can do for you. This
+chapter talks a little about things that you still have
+to decide.
+</p>
+<p>If you are doing development on your own using <small>CVS</small>
+you could probably skip this chapter. The questions
+this chapter takes up become more important when more
+than one person is working in a repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#When-to-commit"
accesskey="1">When to commit</a>:</td><td> </td><td align="left"
valign="top">Some discussion on the subject
+</td></tr>
+</table>
+
+<hr>
+<a name="When-to-commit"></a>
+<div class="header">
+<p>
+Up: <a href="#Revision-management" accesskey="u" rel="up">Revision
management</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="When-to-commit_003f"></a>
+<h3 class="section">11.1 When to commit?</h3>
+<a name="index-When-to-commit"></a>
+<a name="index-Committing_002c-when-to"></a>
+<a name="index-Policy"></a>
+
+<p>Your group should decide which policy to use regarding
+commits. Several policies are possible, and as your
+experience with <small>CVS</small> grows you will probably find
+out what works for you.
+</p>
+<p>If you commit files too quickly you might commit files
+that do not even compile. If your partner updates his
+working sources to include your buggy file, he will be
+unable to compile the code. On the other hand, other
+persons will not be able to benefit from the
+improvements you make to the code if you commit very
+seldom, and conflicts will probably be more common.
+</p>
+<p>It is common to only commit files after making sure
+that they can be compiled. Some sites require that the
+files pass a test suite. Policies like this can be
+enforced using the commitinfo file
+(see <a href="#commitinfo">commitinfo</a>), but you should think twice before
+you enforce such a convention. By making the
+development environment too controlled it might become
+too regimented and thus counter-productive to the real
+goal, which is to get software written.
+</p>
+<hr>
+<a name="Keyword-substitution"></a>
+<div class="header">
+<p>
+Next: <a href="#Tracking-sources" accesskey="n" rel="next">Tracking
sources</a>, Previous: <a href="#Revision-management" accesskey="p"
rel="prev">Revision management</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Keyword-substitution-1"></a>
+<h2 class="chapter">12 Keyword substitution</h2>
+<a name="index-Keyword-substitution"></a>
+<a name="index-Keyword-expansion"></a>
+<a name="index-Identifying-files"></a>
+
+
+<p>As long as you edit source files inside a working
+directory you can always find out the state of
+your files via ‘<samp>cvs status</samp>’ and ‘<samp>cvs
log</samp>’.
+But as soon as you export the files from your
+development environment it becomes harder to identify
+which revisions they are.
+</p>
+<p><small>CVS</small> can use a mechanism known as <em>keyword
+substitution</em> (or <em>keyword expansion</em>) to help
+identifying the files. Embedded strings of the form
+<code>$<var>keyword</var>$</code> and
+<code>$<var>keyword</var>:…$</code> in a file are replaced
+with strings of the form
+<code>$<var>keyword</var>:<var>value</var>$</code> whenever you obtain
+a new revision of the file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Keyword-list"
accesskey="1">Keyword list</a>:</td><td> </td><td align="left"
valign="top">Keywords
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Using-keywords"
accesskey="2">Using keywords</a>:</td><td> </td><td align="left"
valign="top">Using keywords
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Avoiding-substitution"
accesskey="3">Avoiding substitution</a>:</td><td> </td><td
align="left" valign="top">Avoiding substitution
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Substitution-modes"
accesskey="4">Substitution modes</a>:</td><td> </td><td align="left"
valign="top">Substitution modes
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Log-keyword"
accesskey="5">Log keyword</a>:</td><td> </td><td align="left"
valign="top">Problems with the $<i></i>Log$ keyword.
+</td></tr>
+</table>
+
+<hr>
+<a name="Keyword-list"></a>
+<div class="header">
+<p>
+Next: <a href="#Using-keywords" accesskey="n" rel="next">Using keywords</a>,
Up: <a href="#Keyword-substitution" accesskey="u" rel="up">Keyword
substitution</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Keyword-List"></a>
+<h3 class="section">12.1 Keyword List</h3>
+<a name="index-Keyword-List"></a>
+
+
+<p>This is a list of the keywords:
+</p>
+<dl compact="compact">
+<dd><a name="index-Author-keyword"></a>
+</dd>
+<dt><code>$<i></i>Author$</code></dt>
+<dd><p>The login name of the user who checked in the revision.
+</p>
+<a name="index-Date-keyword"></a>
+</dd>
+<dt><code>$<i></i>Date$</code></dt>
+<dd><p>The date and time (UTC) the revision was checked in.
+</p>
+<a name="index-Header-keyword"></a>
+</dd>
+<dt><code>$<i></i>Header$</code></dt>
+<dd><p>A standard header containing the full pathname of the
+<small>RCS</small> file, the revision number, the date (UTC), the
+author, the state, and the locker (if locked). Files
+will normally never be locked when you use <small>CVS</small>.
+</p>
+<a name="index-Id-keyword"></a>
+</dd>
+<dt><code>$<i></i>Id$</code></dt>
+<dd><p>Same as <code>$<i></i>Header$</code>, except that the <small>RCS</small>
+filename is without a path.
+</p>
+<a name="index-Name-keyword"></a>
+</dd>
+<dt><code>$<i></i>Name$</code></dt>
+<dd><p>Tag name used to check out this file. The keyword is
+expanded only if one checks out with an explicit tag
+name. For example, when running the command <code>cvs
+co -r first</code>, the keyword expands to ‘<samp>Name:
first</samp>’.
+</p>
+<a name="index-Locker-keyword"></a>
+</dd>
+<dt><code>$<i></i>Locker$</code></dt>
+<dd><p>The login name of the user who locked the revision
+(empty if not locked, which is the normal case unless
+<code>cvs admin -l</code> is in use).
+</p>
+<a name="index-Log-keyword"></a>
+</dd>
+<dt><code>$<i></i>Log$</code></dt>
+<dd><p>The log message supplied during commit, preceded by a
+header containing the <small>RCS</small> filename, the revision
+number, the author, and the date (UTC). Existing log
+messages are <em>not</em> replaced. Instead, the new log
+message is inserted after <code>$<i></i>Log:…$</code>.
+Each new line is prefixed with the same string which
+precedes the <code>$Log</code> keyword. For example, if the
+file contains:
+</p>
+<div class="example">
+<pre class="example"> /* Here is what people have been up to:
+ *
+ * $<i></i>Log: frob.c,v $
+ * Revision 1.1 1997/01/03 14:23:51 joe
+ * Add the superfrobnicate option
+ *
+ */
+</pre></div>
+
+<p>then additional lines which are added when expanding
+the <code>$Log</code> keyword will be preceded by ‘<samp> *
</samp>’.
+Unlike previous versions of <small>CVS</small> and <small>RCS</small>, the
+<em>comment leader</em> from the <small>RCS</small> file is not used.
+The <code>$Log</code> keyword is useful for
+accumulating a complete change log in a source file,
+but for several reasons it can be problematic.
+See <a href="#Log-keyword">Log keyword</a>.
+</p>
+<a name="index-RCSfile-keyword"></a>
+</dd>
+<dt><code>$<i></i>RCSfile$</code></dt>
+<dd><p>The name of the RCS file without a path.
+</p>
+<a name="index-Revision-keyword"></a>
+</dd>
+<dt><code>$<i></i>Revision$</code></dt>
+<dd><p>The revision number assigned to the revision.
+</p>
+<a name="index-Source-keyword"></a>
+</dd>
+<dt><code>$<i></i>Source$</code></dt>
+<dd><p>The full pathname of the RCS file.
+</p>
+<a name="index-State-keyword"></a>
+</dd>
+<dt><code>$<i></i>State$</code></dt>
+<dd><p>The state assigned to the revision. States can be
+assigned with <code>cvs admin -s</code>—see <a
href="#admin-options">admin options</a>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="Using-keywords"></a>
+<div class="header">
+<p>
+Next: <a href="#Avoiding-substitution" accesskey="n" rel="next">Avoiding
substitution</a>, Previous: <a href="#Keyword-list" accesskey="p"
rel="prev">Keyword list</a>, Up: <a href="#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Using-keywords-1"></a>
+<h3 class="section">12.2 Using keywords</h3>
+
+<p>To include a keyword string you simply include the
+relevant text string, such as <code>$<i></i>Id$</code>, inside the
+file, and commit the file. <small>CVS</small> will automatically (Or,
+more accurately, as part of the update run that
+automatically happens after a commit.)
+expand the string as part of the commit operation.
+</p>
+<p>It is common to embed the <code>$<i></i>Id$</code> string in
+the source files so that it gets passed through to
+generated files. For example, if you are managing
+computer program source code, you might include a
+variable which is initialized to contain that string.
+Or some C compilers may provide a <code>#pragma ident</code>
+directive. Or a document management system might
+provide a way to pass a string through to generated
+files.
+</p>
+
+<a name="index-Ident-_0028shell-command_0029"></a>
+<p>The <code>ident</code> command (which is part of the <small>RCS</small>
+package) can be used to extract keywords and their
+values from a file. This can be handy for text files,
+but it is even more useful for extracting keywords from
+binary files.
+</p>
+<div class="example">
+<pre class="example">$ ident samp.c
+samp.c:
+ $<i></i>Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+$ gcc samp.c
+$ ident a.out
+a.out:
+ $<i></i>Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+</pre></div>
+
+<a name="index-What-_0028shell-command_0029"></a>
+<p>S<small>CCS</small> is another popular revision control system.
+It has a command, <code>what</code>, which is very similar to
+<code>ident</code> and used for the same purpose. Many sites
+without <small>RCS</small> have <small>SCCS</small>. Since <code>what</code>
+looks for the character sequence <code>@(#)</code> it is
+easy to include keywords that are detected by either
+command. Simply prefix the keyword with the
+magic <small>SCCS</small> phrase, like this:
+</p>
+<div class="example">
+<pre class="example">static char *id="@(#) $<i></i>Id: ab.c,v 1.5
1993/10/19 14:57:32 ceder Exp $";
+</pre></div>
+
+<hr>
+<a name="Avoiding-substitution"></a>
+<div class="header">
+<p>
+Next: <a href="#Substitution-modes" accesskey="n" rel="next">Substitution
modes</a>, Previous: <a href="#Using-keywords" accesskey="p" rel="prev">Using
keywords</a>, Up: <a href="#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Avoiding-substitution-1"></a>
+<h3 class="section">12.3 Avoiding substitution</h3>
+
+<p>Keyword substitution has its disadvantages. Sometimes
+you might want the literal text string
+‘<samp>$<i></i>Author$</samp>’ to appear inside a file without
+<small>CVS</small> interpreting it as a keyword and expanding it
+into something like ‘<samp>$<i></i>Author: ceder $</samp>’.
+</p>
+<p>There is unfortunately no way to selectively turn off
+keyword substitution. You can use ‘<samp>-ko</samp>’
+(see <a href="#Substitution-modes">Substitution modes</a>) to turn off keyword
+substitution entirely.
+</p>
+<p>In many cases you can avoid using keywords in
+the source, even though they appear in the final
+product. For example, the source for this manual
+contains ‘<samp>address@hidden</samp>’ whenever the text
+‘<samp>$<i></i>Author$</samp>’ should appear. In
<code>nroff</code>
+and <code>troff</code> you can embed the null-character
+<code>\&</code> inside the keyword for a similar effect.
+</p>
+<hr>
+<a name="Substitution-modes"></a>
+<div class="header">
+<p>
+Next: <a href="#Log-keyword" accesskey="n" rel="next">Log keyword</a>,
Previous: <a href="#Avoiding-substitution" accesskey="p" rel="prev">Avoiding
substitution</a>, Up: <a href="#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Substitution-modes-1"></a>
+<h3 class="section">12.4 Substitution modes</h3>
+<a name="index-Keyword-substitution_002c-changing-modes"></a>
+<a name="index-_002dk-_0028keyword-substitution_0029"></a>
+<a name="index-Kflag"></a>
+
+<p>Each file has a stored default substitution mode, and
+each working directory copy of a file also has a
+substitution mode. The former is set by the ‘<samp>-k</samp>’
+option to <code>cvs add</code> and <code>cvs admin</code>; the
+latter is set by the ‘<samp>-k</samp>’ or
‘<samp>-A</samp>’ options to <code>cvs
+checkout</code> or <code>cvs update</code>.
+<code>cvs diff</code> and <code>cvs rdiff</code> also
+have ‘<samp>-k</samp>’ options.
+For some examples,
+see <a href="#Binary-files">Binary files</a>, and <a
href="#Merging-and-keywords">Merging and keywords</a>.
+</p>
+<p>The modes available are:
+</p>
+<dl compact="compact">
+<dt>‘<samp>-kkv</samp>’</dt>
+<dd><p>Generate keyword strings using the default form, e.g.
+<code>$<i></i>Revision: 5.7 $</code> for the <code>Revision</code>
+keyword.
+</p>
+</dd>
+<dt>‘<samp>-kkvl</samp>’</dt>
+<dd><p>Like ‘<samp>-kkv</samp>’, except that a locker’s name
is always
+inserted if the given revision is currently locked.
+The locker’s name is only relevant if <code>cvs admin
+-l</code> is in use.
+</p>
+</dd>
+<dt>‘<samp>-kk</samp>’</dt>
+<dd><p>Generate only keyword names in keyword strings; omit
+their values. For example, for the <code>Revision</code>
+keyword, generate the string <code>$<i></i>Revision$</code>
+instead of <code>$<i></i>Revision: 5.7 $</code>. This option
+is useful to ignore differences due to keyword
+substitution when comparing different revisions of a
+file (see <a href="#Merging-and-keywords">Merging and keywords</a>).
+</p>
+</dd>
+<dt>‘<samp>-ko</samp>’</dt>
+<dd><p>Generate the old keyword string, present in the working
+file just before it was checked in. For example, for
+the <code>Revision</code> keyword, generate the string
+<code>$<i></i>Revision: 1.1 $</code> instead of
+<code>$<i></i>Revision: 5.7 $</code> if that is how the
+string appeared when the file was checked in.
+</p>
+</dd>
+<dt>‘<samp>-kb</samp>’</dt>
+<dd><p>Like ‘<samp>-ko</samp>’, but also inhibit conversion of line
+endings between the canonical form in which they are
+stored in the repository (linefeed only), and the form
+appropriate to the operating system in use on the
+client. For systems, like unix, which use linefeed
+only to terminate lines, this is the same as
+‘<samp>-ko</samp>’. For more information on binary files, see
+<a href="#Binary-files">Binary files</a>.
+</p>
+</dd>
+<dt>‘<samp>-kv</samp>’</dt>
+<dd><p>Generate only keyword values for keyword strings. For
+example, for the <code>Revision</code> keyword, generate the string
+<code>5.7</code> instead of <code>$<i></i>Revision: 5.7 $</code>.
+This can help generate files in programming languages
+where it is hard to strip keyword delimiters like
+<code>$<i></i>Revision: $</code> from a string. However,
+further keyword substitution cannot be performed once
+the keyword names are removed, so this option should be
+used with care.
+</p>
+<p>One often would like to use ‘<samp>-kv</samp>’ with <code>cvs
+export</code>—see <a href="#export">export</a>. But be aware that
doesn’t
+handle an export containing binary files correctly.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="Log-keyword"></a>
+<div class="header">
+<p>
+Previous: <a href="#Substitution-modes" accesskey="p" rel="prev">Substitution
modes</a>, Up: <a href="#Keyword-substitution" accesskey="u" rel="up">Keyword
substitution</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Problems-with-the-_0024Log_0024-keyword_002e"></a>
+<h3 class="section">12.5 Problems with the $<i></i>Log$ keyword.</h3>
+
+<p>The <code>$<i></i>Log$</code> keyword is somewhat
+controversial. As long as you are working on your
+development system the information is easily accessible
+even if you do not use the <code>$<i></i>Log$</code>
+keyword—just do a <code>cvs log</code>. Once you export
+the file the history information might be useless
+anyhow.
+</p>
+<p>A more serious concern is that <small>CVS</small> is not good at
+handling <code>$<i></i>Log$</code> entries when a branch is
+merged onto the main trunk. Conflicts often result
+from the merging operation.
+</p>
+<p>People also tend to "fix" the log entries in the file
+(correcting spelling mistakes and maybe even factual
+errors). If that is done the information from
+<code>cvs log</code> will not be consistent with the
+information inside the file. This may or may not be a
+problem in real life.
+</p>
+<p>It has been suggested that the <code>$<i></i>Log$</code>
+keyword should be inserted <em>last</em> in the file, and
+not in the files header, if it is to be used at all.
+That way the long list of change messages will not
+interfere with everyday source file browsing.
+</p>
+<hr>
+<a name="Tracking-sources"></a>
+<div class="header">
+<p>
+Next: <a href="#Builds" accesskey="n" rel="next">Builds</a>, Previous: <a
href="#Keyword-substitution" accesskey="p" rel="prev">Keyword substitution</a>,
Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Tracking-third_002dparty-sources"></a>
+<h2 class="chapter">13 Tracking third-party sources</h2>
+<a name="index-Third_002dparty-sources"></a>
+<a name="index-Tracking-sources"></a>
+
+<p>If you modify a program to better fit your site, you
+probably want to include your modifications when the next
+release of the program arrives. <small>CVS</small> can help you with
+this task.
+</p>
+<a name="index-Vendor"></a>
+<a name="index-Vendor-branch"></a>
+<a name="index-Branch_002c-vendor_002d"></a>
+<p>In the terminology used in <small>CVS</small>, the supplier of the
+program is called a <em>vendor</em>. The unmodified
+distribution from the vendor is checked in on its own
+branch, the <em>vendor branch</em>. <small>CVS</small> reserves branch
+1.1.1 for this use.
+</p>
+<p>When you modify the source and commit it, your revision
+will end up on the main trunk. When a new release is
+made by the vendor, you commit it on the vendor branch
+and copy the modifications onto the main trunk.
+</p>
+<p>Use the <code>import</code> command to create and update
+the vendor branch. When you import a new file,
+the vendor branch is made the ‘head’ revision, so
+anyone that checks out a copy of the file gets that
+revision. When a local modification is committed it is
+placed on the main trunk, and made the ‘head’
+revision.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#First-import"
accesskey="1">First import</a>:</td><td> </td><td align="left"
valign="top">Importing for the first time
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Update-imports"
accesskey="2">Update imports</a>:</td><td> </td><td align="left"
valign="top">Updating with the import command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Reverting-local-changes"
accesskey="3">Reverting local changes</a>:</td><td> </td><td
align="left" valign="top">Reverting to the latest vendor release
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Binary-files-in-imports"
accesskey="4">Binary files in imports</a>:</td><td> </td><td
align="left" valign="top">Binary files require special handling
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Keywords-in-imports"
accesskey="5">Keywords in imports</a>:</td><td> </td><td
align="left" valign="top">Keyword substitution might be undesirable
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Multiple-vendor-branches"
accesskey="6">Multiple vendor branches</a>:</td><td> </td><td
align="left" valign="top">What if you get sources from several places?
+</td></tr>
+</table>
+
+<hr>
+<a name="First-import"></a>
+<div class="header">
+<p>
+Next: <a href="#Update-imports" accesskey="n" rel="next">Update imports</a>,
Up: <a href="#Tracking-sources" accesskey="u" rel="up">Tracking sources</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Importing-for-the-first-time"></a>
+<h3 class="section">13.1 Importing for the first time</h3>
+<a name="index-Importing-modules"></a>
+
+<p>Use the <code>import</code> command to check in the sources
+for the first time. When you use the <code>import</code>
+command to track third-party sources, the <em>vendor
+tag</em> and <em>release tags</em> are useful. The
+<em>vendor tag</em> is a symbolic name for the branch
+(which is always 1.1.1, unless you use the ‘<samp>-b
+<var>branch</var></samp>’ flag—see <a
href="#Multiple-vendor-branches">Multiple vendor branches</a>.). The
+<em>release tags</em> are symbolic names for a particular
+release, such as ‘<samp>FSF_0_04</samp>’.
+</p>
+<p>Note that <code>import</code> does <em>not</em> change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a <small>CVS</small> working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (see <a href="#Getting-the-source">Getting the source</a>).
+</p>
+<a name="index-wdiff-_0028import-example_0029"></a>
+<p>Suppose you have the sources to a program called
+<code>wdiff</code> in a directory <samp>wdiff-0.04</samp>,
+and are going to make private modifications that you
+want to be able to use even when new releases are made
+in the future. You start by importing the source to
+your repository:
+</p>
+<div class="example">
+<pre class="example">$ cd wdiff-0.04
+$ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
+</pre></div>
+
+<p>The vendor tag is named ‘<samp>FSF_DIST</samp>’ in the above
+example, and the only release tag assigned is
+‘<samp>WDIFF_0_04</samp>’.
+</p>
+<hr>
+<a name="Update-imports"></a>
+<div class="header">
+<p>
+Next: <a href="#Reverting-local-changes" accesskey="n" rel="next">Reverting
local changes</a>, Previous: <a href="#First-import" accesskey="p"
rel="prev">First import</a>, Up: <a href="#Tracking-sources" accesskey="u"
rel="up">Tracking sources</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Updating-with-the-import-command"></a>
+<h3 class="section">13.2 Updating with the import command</h3>
+
+<p>When a new release of the source arrives, you import it into the
+repository with the same <code>import</code> command that you used to set up
+the repository in the first place. The only difference is that you
+specify a different release tag this time:
+</p>
+<div class="example">
+<pre class="example">$ tar xfz wdiff-0.05.tar.gz
+$ cd wdiff-0.05
+$ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+</pre></div>
+
+<p><strong>WARNING: If you use a release tag that already exists in one of the
+repository archives, files removed by an import may not be detected.</strong>
+</p>
+<p>For files that have not been modified locally, the newly created
+revision becomes the head revision. If you have made local
+changes, <code>import</code> will warn you that you must merge the changes
+into the main trunk, and tell you to use ‘<samp>checkout
-j</samp>’ to do so:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
+</pre></div>
+
+<p>The above command will check out the latest revision of
+‘<samp>wdiff</samp>’, merging the changes made on the vendor
branch ‘<samp>FSF_DIST</samp>’
+since yesterday into the working copy. If any conflicts arise during
+the merge they should be resolved in the normal way (see <a
href="#Conflicts-example">Conflicts example</a>). Then, the modified files may
be committed.
+</p>
+<p>However, it is much better to use the two release tags rather than using
+a date on the branch as suggested above:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
+</pre></div>
+
+<p>The reason this is better is that
+using a date, as suggested above, assumes that you do
+not import more than one release of a product per day.
+More importantly, using the release tags allows <small>CVS</small> to detect
files
+that were removed between the two vendor releases and mark them for
+removal. Since <code>import</code> has no way to detect removed files, you
+should do a merge like this even if <code>import</code> doesn’t tell you
to.
+</p>
+<hr>
+<a name="Reverting-local-changes"></a>
+<div class="header">
+<p>
+Next: <a href="#Binary-files-in-imports" accesskey="n" rel="next">Binary files
in imports</a>, Previous: <a href="#Update-imports" accesskey="p"
rel="prev">Update imports</a>, Up: <a href="#Tracking-sources" accesskey="u"
rel="up">Tracking sources</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Reverting-to-the-latest-vendor-release"></a>
+<h3 class="section">13.3 Reverting to the latest vendor release</h3>
+
+<p>You can also revert local changes completely and return
+to the latest vendor release by changing the ‘head’
+revision back to the vendor branch on all files. For
+example, if you have a checked-out copy of the sources
+in <samp>~/work.d/wdiff</samp>, and you want to revert to the
+vendor’s version for all the files in that directory,
+you would type:
+</p>
+<div class="example">
+<pre class="example">$ cd ~/work.d/wdiff
+$ cvs admin -bFSF_DIST .
+</pre></div>
+
+<p>You must specify the ‘<samp>-bFSF_DIST</samp>’ without any space
+after the ‘<samp>-b</samp>’. See <a href="#admin-options">admin
options</a>.
+</p>
+<hr>
+<a name="Binary-files-in-imports"></a>
+<div class="header">
+<p>
+Next: <a href="#Keywords-in-imports" accesskey="n" rel="next">Keywords in
imports</a>, Previous: <a href="#Reverting-local-changes" accesskey="p"
rel="prev">Reverting local changes</a>, Up: <a href="#Tracking-sources"
accesskey="u" rel="up">Tracking sources</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="How-to-handle-binary-files-with-cvs-import"></a>
+<h3 class="section">13.4 How to handle binary files with cvs import</h3>
+
+<p>Use the ‘<samp>-k</samp>’ wrapper option to tell import which
+files are binary. See <a href="#Wrappers">Wrappers</a>.
+</p>
+<hr>
+<a name="Keywords-in-imports"></a>
+<div class="header">
+<p>
+Next: <a href="#Multiple-vendor-branches" accesskey="n" rel="next">Multiple
vendor branches</a>, Previous: <a href="#Binary-files-in-imports" accesskey="p"
rel="prev">Binary files in imports</a>, Up: <a href="#Tracking-sources"
accesskey="u" rel="up">Tracking sources</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="How-to-handle-keyword-substitution-with-cvs-import"></a>
+<h3 class="section">13.5 How to handle keyword substitution with cvs
import</h3>
+
+<p>The sources which you are importing may contain
+keywords (see <a href="#Keyword-substitution">Keyword substitution</a>). For
example,
+the vendor may use <small>CVS</small> or some other system
+which uses similar keyword expansion syntax. If you
+just import the files in the default fashion, then
+the keyword expansions supplied by the vendor will
+be replaced by keyword expansions supplied by your
+own copy of <small>CVS</small>. It may be more convenient to
+maintain the expansions supplied by the vendor, so
+that this information can supply information about
+the sources that you imported from the vendor.
+</p>
+<p>To maintain the keyword expansions supplied by the
+vendor, supply the ‘<samp>-ko</samp>’ option to <code>cvs
+import</code> the first time you import the file.
+This will turn off keyword expansion
+for that file entirely, so if you want to be more
+selective you’ll have to think about what you want
+and use the ‘<samp>-k</samp>’ option to <code>cvs update</code> or
+<code>cvs admin</code> as appropriate.
+</p>
+<hr>
+<a name="Multiple-vendor-branches"></a>
+<div class="header">
+<p>
+Previous: <a href="#Keywords-in-imports" accesskey="p" rel="prev">Keywords in
imports</a>, Up: <a href="#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Multiple-vendor-branches-1"></a>
+<h3 class="section">13.6 Multiple vendor branches</h3>
+
+<p>All the examples so far assume that there is only one
+vendor from which you are getting sources. In some
+situations you might get sources from a variety of
+places. For example, suppose that you are dealing with
+a project where many different people and teams are
+modifying the software. There are a variety of ways to
+handle this, but in some cases you have a bunch of
+source trees lying around and what you want to do more
+than anything else is just to all put them in <small>CVS</small> so
+that you at least have them in one place.
+</p>
+<p>For handling situations in which there may be more than
+one vendor, you may specify the ‘<samp>-b</samp>’ option to
+<code>cvs import</code>. It takes as an argument the vendor
+branch to import to. The default is ‘<samp>-b 1.1.1</samp>’.
+</p>
+<p>For example, suppose that there are two teams, the red
+team and the blue team, that are sending you sources.
+You want to import the red team’s efforts to branch
+1.1.1 and use the vendor tag RED. You want to import
+the blue team’s efforts to branch 1.1.3 and use the
+vendor tag BLUE. So the commands you might use are:
+</p>
+<div class="example">
+<pre class="example">$ cvs import dir RED RED_1-0
+$ cvs import -b 1.1.3 dir BLUE BLUE_1-5
+</pre></div>
+
+<p>Note that if your vendor tag does not match your
+‘<samp>-b</samp>’ option, <small>CVS</small> will not detect this
case! For
+example,
+</p>
+<div class="example">
+<pre class="example">$ cvs import -b 1.1.3 dir RED RED_1-0
+</pre></div>
+
+<p>Be careful; this kind of mismatch is sure to sow
+confusion or worse. I can’t think of a useful purpose
+for the ability to specify a mismatch here, but if you
+discover such a use, don’t. <small>CVS</small> is likely to make this
+an error in some future release.
+</p>
+
+<hr>
+<a name="Builds"></a>
+<div class="header">
+<p>
+Next: <a href="#Special-Files" accesskey="n" rel="next">Special Files</a>,
Previous: <a href="#Tracking-sources" accesskey="p" rel="prev">Tracking
sources</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="How-your-build-system-interacts-with-CVS"></a>
+<h2 class="chapter">14 How your build system interacts with CVS</h2>
+<a name="index-Builds"></a>
+<a name="index-make"></a>
+
+<p>As mentioned in the introduction, <small>CVS</small> does not
+contain software for building your software from source
+code. This section describes how various aspects of
+your build system might interact with <small>CVS</small>.
+</p>
+<p>One common question, especially from people who are
+accustomed to <small>RCS</small>, is how to make their build get
+an up to date copy of the sources. The answer to this
+with <small>CVS</small> is two-fold. First of all, since
+<small>CVS</small> itself can recurse through directories, there
+is no need to modify your <samp>Makefile</samp> (or whatever
+configuration file your build tool uses) to make sure
+each file is up to date. Instead, just use two
+commands, first <code>cvs -q update</code> and then
+<code>make</code> or whatever the command is to invoke your
+build tool. Secondly, you do not necessarily
+<em>want</em> to get a copy of a change someone else made
+until you have finished your own work. One suggested
+approach is to first update your sources, then
+implement, build and
+test the change you were thinking of, and then commit
+your sources (updating first if necessary). By
+periodically (in between changes, using the approach
+just described) updating your entire tree, you ensure
+that your sources are sufficiently up to date.
+</p>
+<a name="index-Bill-of-materials"></a>
+<p>One common need is to record which versions of which
+source files went into a particular build. This kind
+of functionality is sometimes called <em>bill of
+materials</em> or something similar. The best way to do
+this with <small>CVS</small> is to use the <code>tag</code> command to
+record which versions went into a given build
+(see <a href="#Tags">Tags</a>).
+</p>
+<p>Using <small>CVS</small> in the most straightforward manner
+possible, each developer will have a copy of the entire
+source tree which is used in a particular build. If
+the source tree is small, or if developers are
+geographically dispersed, this is the preferred
+solution. In fact one approach for larger projects is
+to break a project down into smaller
+separately-compiled subsystems, and arrange a way of
+releasing them internally so that each developer need
+check out only those subsystems which they are
+actively working on.
+</p>
+<p>Another approach is to set up a structure which allows
+developers to have their own copies of some files, and
+for other files to access source files from a central
+location. Many people have come up with some such a
+system using features such as the symbolic link feature
+found in many operating systems, or the <code>VPATH</code>
+feature found in many versions of <code>make</code>. One build
+tool which is designed to help with this kind of thing
+is Odin (see
+<code>ftp://ftp.cs.colorado.edu/pub/distribs/odin</code>).
+</p>
+<hr>
+<a name="Special-Files"></a>
+<div class="header">
+<p>
+Next: <a href="#CVS-commands" accesskey="n" rel="next">CVS commands</a>,
Previous: <a href="#Builds" accesskey="p" rel="prev">Builds</a>, Up: <a
href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Special-Files-1"></a>
+<h2 class="chapter">15 Special Files</h2>
+
+<a name="index-Special-files"></a>
+<a name="index-Device-nodes"></a>
+<a name="index-Ownership_002c-saving-in-CVS"></a>
+<a name="index-Permissions_002c-saving-in-CVS"></a>
+<a name="index-Hard-links"></a>
+<a name="index-Symbolic-links"></a>
+
+<p>In normal circumstances, <small>CVS</small> works only with regular
+files. Every file in a project is assumed to be
+persistent; it must be possible to open, read and close
+them; and so on. <small>CVS</small> also ignores file permissions and
+ownerships, leaving such issues to be resolved by the
+developer at installation time. In other words, it is
+not possible to "check in" a device into a repository;
+if the device file cannot be opened, <small>CVS</small> will refuse to
+handle it. Files also lose their ownerships and
+permissions during repository transactions.
+</p>
+
+<hr>
+<a name="CVS-commands"></a>
+<div class="header">
+<p>
+Next: <a href="#Invoking-CVS" accesskey="n" rel="next">Invoking CVS</a>,
Previous: <a href="#Special-Files" accesskey="p" rel="prev">Special Files</a>,
Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Guide-to-CVS-commands"></a>
+<h2 class="appendix">Appendix A Guide to CVS commands</h2>
+
+<p>This appendix describes the overall structure of
+<small>CVS</small> commands, and describes some commands in
+detail (others are described elsewhere; for a quick
+reference to <small>CVS</small> commands, see <a href="#Invoking-CVS">Invoking
CVS</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Structure"
accesskey="1">Structure</a>:</td><td> </td><td align="left"
valign="top">Overall structure of CVS commands
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Exit-status"
accesskey="2">Exit status</a>:</td><td> </td><td align="left"
valign="top">Indicating CVS’s success or failure
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#g_t_007e_002f_002ecvsrc"
accesskey="3">~/.cvsrc</a>:</td><td> </td><td align="left"
valign="top">Default options with the ~/.cvsrc file
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Global-options"
accesskey="4">Global options</a>:</td><td> </td><td align="left"
valign="top">Options you give to the left of cvs_command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Common-options"
accesskey="5">Common options</a>:</td><td> </td><td align="left"
valign="top">Options you give to the right of cvs_command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#add"
accesskey="6">add</a>:</td><td> </td><td align="left"
valign="top">Add files and directories to the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#admin"
accesskey="7">admin</a>:</td><td> </td><td align="left"
valign="top">Administration
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#annotate"
accesskey="8">annotate</a>:</td><td> </td><td align="left"
valign="top">What revision modified each line of a file?
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#checkout"
accesskey="9">checkout</a>:</td><td> </td><td align="left"
valign="top">Checkout sources for editing
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#commit">commit</a>:</td><td> </td><td align="left"
valign="top">Check files into the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#diff">diff</a>:</td><td> </td><td align="left"
valign="top">Show differences between revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#export">export</a>:</td><td> </td><td align="left"
valign="top">Export sources from CVS, similar to checkout
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#history">history</a>:</td><td> </td><td align="left"
valign="top">Show status of files and users
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#import">import</a>:</td><td> </td><td align="left"
valign="top">Import sources into CVS, using vendor branches
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#log">log</a>:</td><td> </td><td align="left"
valign="top">Show log messages for files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#rdiff">rdiff</a>:</td><td> </td><td align="left"
valign="top">’patch’ format diffs between releases
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#release">release</a>:</td><td> </td><td align="left"
valign="top">Indicate that a directory is no longer in use
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#remove">remove</a>:</td><td> </td><td align="left"
valign="top">Remove files from active development
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#update">update</a>:</td><td> </td><td align="left"
valign="top">Bring work tree in sync with repository
+</td></tr>
+</table>
+
+<hr>
+<a name="Structure"></a>
+<div class="header">
+<p>
+Next: <a href="#Exit-status" accesskey="n" rel="next">Exit status</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Overall-structure-of-CVS-commands"></a>
+<h3 class="appendixsec">A.1 Overall structure of CVS commands</h3>
+<a name="index-Structure"></a>
+<a name="index-CVS-command-structure"></a>
+<a name="index-Command-structure"></a>
+<a name="index-Format-of-CVS-commands"></a>
+
+<p>The overall format of all <small>CVS</small> commands is:
+</p>
+<div class="example">
+<pre class="example">cvs [ cvs_options ] cvs_command [ command_options ] [
command_args ]
+</pre></div>
+
+<dl compact="compact">
+<dt><code>cvs</code></dt>
+<dd><p>The name of the <small>CVS</small> program.
+</p>
+</dd>
+<dt><code>cvs_options</code></dt>
+<dd><p>Some options that affect all sub-commands of <small>CVS</small>. These
are
+described below.
+</p>
+</dd>
+<dt><code>cvs_command</code></dt>
+<dd><p>One of several different sub-commands. Some of the commands have
+aliases that can be used instead; those aliases are noted in the
+reference manual for that command. There are only two situations
+where you may omit ‘<samp>cvs_command</samp>’: ‘<samp>cvs
-H</samp>’ elicits a
+list of available commands, and ‘<samp>cvs -v</samp>’ displays
version
+information on <small>CVS</small> itself.
+</p>
+</dd>
+<dt><code>command_options</code></dt>
+<dd><p>Options that are specific for the command.
+</p>
+</dd>
+<dt><code>command_args</code></dt>
+<dd><p>Arguments to the commands.
+</p></dd>
+</dl>
+
+<p>There is unfortunately some confusion between
+<code>cvs_options</code> and <code>command_options</code>.
+When given as a <code>cvs_option</code>, some options only
+affect some of the commands. When given as a
+<code>command_option</code> it may have a different meaning, and
+be accepted by more commands. In other words, do not
+take the above categorization too seriously. Look at
+the documentation instead.
+</p>
+<hr>
+<a name="Exit-status"></a>
+<div class="header">
+<p>
+Next: <a href="#g_t_007e_002f_002ecvsrc" accesskey="n"
rel="next">~/.cvsrc</a>, Previous: <a href="#Structure" accesskey="p"
rel="prev">Structure</a>, Up: <a href="#CVS-commands" accesskey="u"
rel="up">CVS commands</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="CVS_0027s-exit-status"></a>
+<h3 class="appendixsec">A.2 CVS’s exit status</h3>
+<a name="index-Exit-status_002c-of-CVS"></a>
+
+<p><small>CVS</small> can indicate to the calling environment whether it
+succeeded or failed by setting its <em>exit status</em>.
+The exact way of testing the exit status will vary from
+one operating system to another. For example in a unix
+shell script the ‘<samp>$?</samp>’ variable will be 0 if the
+last command returned a successful exit status, or
+greater than 0 if the exit status indicated failure.
+</p>
+<p>If <small>CVS</small> is successful, it returns a successful status;
+if there is an error, it prints an error message and
+returns a failure status. The one exception to this is
+the <code>cvs diff</code> command. It will return a
+successful status if it found no differences, or a
+failure status if there were differences or if there
+was an error. Because this behavior provides no good
+way to detect errors, in the future it is possible that
+<code>cvs diff</code> will be changed to behave like the
+other <small>CVS</small> commands.
+</p>
+<hr>
+<a name="g_t_007e_002f_002ecvsrc"></a>
+<div class="header">
+<p>
+Next: <a href="#Global-options" accesskey="n" rel="next">Global options</a>,
Previous: <a href="#Exit-status" accesskey="p" rel="prev">Exit status</a>, Up:
<a href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Default-options-and-the-_007e_002f_002ecvsrc-file"></a>
+<h3 class="appendixsec">A.3 Default options and the ~/.cvsrc file</h3>
+<a name="index-_002ecvsrc-file"></a>
+<a name="index-Option-defaults"></a>
+
+<p>There are some <code>command_options</code> that are used so
+often that you might have set up an alias or some other
+means to make sure you always specify that option. One
+example (the one that drove the implementation of the
+<samp>.cvsrc</samp> support, actually) is that many people find the
+default output of the ‘<samp>diff</samp>’ command to be very
+hard to read, and that either context diffs or unidiffs
+are much easier to understand.
+</p>
+<p>The <samp>~/.cvsrc</samp> file is a way that you can add
+default options to <code>cvs_commands</code> within cvs,
+instead of relying on aliases or other shell scripts.
+</p>
+<p>The format of the <samp>~/.cvsrc</samp> file is simple. The
+file is searched for a line that begins with the same
+name as the <code>cvs_command</code> being executed. If a
+match is found, then the remainder of the line is split
+up (at whitespace characters) into separate options and
+added to the command arguments <em>before</em> any
+options from the command line.
+</p>
+<p>If a command has two names (e.g., <code>checkout</code> and
+<code>co</code>), the official name, not necessarily the one
+used on the command line, will be used to match against
+the file. So if this is the contents of the user’s
+<samp>~/.cvsrc</samp> file:
+</p>
+<div class="example">
+<pre class="example">log -N
+diff -uN
+rdiff -u
+update -Pd
+checkout -P
+release -d
+</pre></div>
+
+<p>the command ‘<samp>cvs checkout foo</samp>’ would have the
+‘<samp>-P</samp>’ option added to the arguments, as well as
+‘<samp>cvs co foo</samp>’.
+</p>
+<p>With the example file above, the output from ‘<samp>cvs
+diff foobar</samp>’ will be in unidiff format. ‘<samp>cvs diff
+-c foobar</samp>’ will provide context diffs, as usual.
+Getting "old" format diffs would be slightly more
+complicated, because <code>diff</code> doesn’t have an option
+to specify use of the "old" format, so you would need
+‘<samp>cvs -f diff foobar</samp>’.
+</p>
+<p>In place of the command name you can use <code>cvs</code> to
+specify global options (see <a href="#Global-options">Global options</a>). For
+example the following line in <samp>.cvsrc</samp>
+</p>
+<div class="example">
+<pre class="example">cvs -z6
+</pre></div>
+
+<p>causes <small>CVS</small> to use compression level 6.
+</p>
+<hr>
+<a name="Global-options"></a>
+<div class="header">
+<p>
+Next: <a href="#Common-options" accesskey="n" rel="next">Common options</a>,
Previous: <a href="#g_t_007e_002f_002ecvsrc" accesskey="p"
rel="prev">~/.cvsrc</a>, Up: <a href="#CVS-commands" accesskey="u" rel="up">CVS
commands</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Global-options-1"></a>
+<h3 class="appendixsec">A.4 Global options</h3>
+<a name="index-Options_002c-global"></a>
+<a name="index-Global-options"></a>
+<a name="index-Left_002dhand-options"></a>
+
+<p>The available ‘<samp>cvs_options</samp>’ (that are given to the
+left of ‘<samp>cvs_command</samp>’) are:
+</p>
+<dl compact="compact">
+<dt><code>--allow-root=<var>rootdir</var></code></dt>
+<dd><p>Specify legal <small>CVSROOT</small> directory. See
+<a href="#Password-authentication-server">Password authentication server</a>.
+</p>
+<a name="index-Authentication_002c-stream"></a>
+<a name="index-Stream-authentication"></a>
+</dd>
+<dt><code>-a</code></dt>
+<dd><p>Authenticate all communication between the client and
+the server. Only has an effect on the <small>CVS</small> client.
+As of this writing, this is only implemented when using
+a GSSAPI connection (see <a href="#GSSAPI-authenticated">GSSAPI
authenticated</a>).
+Authentication prevents certain sorts of attacks
+involving hijacking the active <small>TCP</small> connection.
+Enabling authentication does not enable encryption.
+</p>
+<a name="index-RCSBIN_002c-overriding"></a>
+<a name="index-Overriding-RCSBIN"></a>
+</dd>
+<dt><code>-b <var>bindir</var></code></dt>
+<dd><p>In <small>CVS</small> 1.9.18 and older, this specified that
+<small>RCS</small> programs are in the <var>bindir</var> directory.
+Current versions of <small>CVS</small> do not run <small>RCS</small>
+programs; for compatibility this option is accepted,
+but it does nothing.
+</p>
+<a name="index-TMPDIR_002c-overriding"></a>
+<a name="index-Overriding-TMPDIR"></a>
+</dd>
+<dt><code>-T <var>tempdir</var></code></dt>
+<dd><p>Use <var>tempdir</var> as the directory where temporary files are
+located. Overrides the setting of the <code>$TMPDIR</code> environment
+variable and any precompiled directory. This parameter should be
+specified as an absolute pathname.
+(When running client/server, ‘<samp>-T</samp>’ affects only the
local process;
+specifying ‘<samp>-T</samp>’ for the client has no effect on the
server and
+vice versa.)
+</p>
+<a name="index-CVSROOT_002c-overriding"></a>
+<a name="index-Overriding-CVSROOT"></a>
+</dd>
+<dt><code>-d <var>cvs_root_directory</var></code></dt>
+<dd><p>Use <var>cvs_root_directory</var> as the root directory
+pathname of the repository. Overrides the setting of
+the <code>$CVSROOT</code> environment variable. See <a
href="#Repository">Repository</a>.
+</p>
+<a name="index-EDITOR_002c-overriding"></a>
+<a name="index-Overriding-EDITOR"></a>
+</dd>
+<dt><code>-e <var>editor</var></code></dt>
+<dd><p>Use <var>editor</var> to enter revision log information. Overrides the
+setting of the <code>$CVSEDITOR</code> and <code>$EDITOR</code>
+environment variables. For more information, see
+<a href="#Committing-your-changes">Committing your changes</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Do not read the <samp>~/.cvsrc</samp> file. This
+option is most often used because of the
+non-orthogonality of the <small>CVS</small> option set. For
+example, the ‘<samp>cvs log</samp>’ option
‘<samp>-N</samp>’ (turn off
+display of tag names) does not have a corresponding
+option to turn the display on. So if you have
+‘<samp>-N</samp>’ in the <samp>~/.cvsrc</samp> entry for
‘<samp>log</samp>’,
+you may need to use ‘<samp>-f</samp>’ to show the tag names.
+</p>
+</dd>
+<dt><code>-H</code></dt>
+<dt><code>--help</code></dt>
+<dd><p>Display usage information about the specified
‘<samp>cvs_command</samp>’
+(but do not actually execute the command). If you don’t specify
+a command name, ‘<samp>cvs -H</samp>’ displays overall help for
+<small>CVS</small>, including a list of other help options.
+</p>
+<a name="index-Read_002donly-mode"></a>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not change any files. Attempt to execute the
+‘<samp>cvs_command</samp>’, but only to issue reports; do not
remove,
+update, or merge any existing files, or create any new files.
+</p>
+<p>Note that <small>CVS</small> will not necessarily produce exactly
+the same output as without ‘<samp>-n</samp>’. In some cases
+the output will be the same, but in other cases
+<small>CVS</small> will skip some of the processing that would
+have been required to produce the exact same output.
+</p>
+</dd>
+<dt><code>-Q</code></dt>
+<dd><p>Cause the command to be really quiet; the command will only
+generate output for serious problems.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Cause the command to be somewhat quiet; informational messages,
+such as reports of recursion through subdirectories, are
+suppressed.
+</p>
+<a name="index-Read_002donly-files_002c-and-_002dr"></a>
+</dd>
+<dt><code>-r</code></dt>
+<dd><p>Make new working files read-only. Same effect
+as if the <code>$CVSREAD</code> environment variable is set
+(see <a href="#Environment-variables">Environment variables</a>). The default
is to
+make working files writable, unless watches are on
+(see <a href="#Watches">Watches</a>).
+</p>
+</dd>
+<dt><code>-s <var>variable</var>=<var>value</var></code></dt>
+<dd><p>Set a user variable (see <a href="#Variables">Variables</a>).
+</p>
+<a name="index-Trace"></a>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Trace program execution; display messages showing the steps of
+<small>CVS</small> activity. Particularly useful with
‘<samp>-n</samp>’ to explore the
+potential impact of an unfamiliar command.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dt><code>--version</code></dt>
+<dd><p>Display version and copyright information for <small>CVS</small>.
+</p>
+<a name="index-CVSREAD_002c-overriding"></a>
+<a name="index-Overriding-CVSREAD"></a>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Make new working files read-write. Overrides the
+setting of the <code>$CVSREAD</code> environment variable.
+Files are created read-write by default, unless <code>$CVSREAD</code> is
+set or ‘<samp>-r</samp>’ is given.
+</p>
+</dd>
+<dt><code>-x</code></dt>
+<dd><a name="index-Encryption"></a>
+<p>Encrypt all communication between the client and the
+server. Only has an effect on the <small>CVS</small> client. As
+of this writing, this is only implemented when using a
+GSSAPI connection (see <a href="#GSSAPI-authenticated">GSSAPI
authenticated</a>) or a
+Kerberos connection (see <a href="#Kerberos-authenticated">Kerberos
authenticated</a>).
+Enabling encryption implies that message traffic is
+also authenticated. Encryption support is not
+available by default; it must be enabled using a
+special configure option, <samp>--enable-encryption</samp>,
+when you build <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-z <var>gzip-level</var></code></dt>
+<dd><a name="index-Compression"></a>
+<a name="index-Gzip"></a>
+<p>Set the compression level.
+Valid levels are 1 (high speed, low compression) to
+9 (low speed, high compression), or 0 to disable
+compression (the default).
+Only has an effect on the <small>CVS</small> client.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="Common-options"></a>
+<div class="header">
+<p>
+Next: <a href="#add" accesskey="n" rel="next">add</a>, Previous: <a
href="#Global-options" accesskey="p" rel="prev">Global options</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Common-command-options"></a>
+<h3 class="appendixsec">A.5 Common command options</h3>
+<a name="index-Common-options"></a>
+<a name="index-Right_002dhand-options"></a>
+
+<p>This section describes the ‘<samp>command_options</samp>’ that
+are available across several <small>CVS</small> commands. These
+options are always given to the right of
+‘<samp>cvs_command</samp>’. Not all
+commands support all of these options; each option is
+only supported for commands where it makes sense.
+However, when a command has one of these options you
+can almost always count on the same behavior of the
+option as in other commands. (Other command options,
+which are listed with the individual commands, may have
+different behavior from one <small>CVS</small> command to the other).
+</p>
+<p><strong>The ‘<samp>history</samp>’ command is an exception; it
supports
+many options that conflict even with these standard options.</strong>
+</p>
+<dl compact="compact">
+<dd><a name="index-Dates"></a>
+<a name="index-Time"></a>
+<a name="index-Specifying-dates"></a>
+</dd>
+<dt><code>-D <var>date_spec</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date_spec</var>.
+<var>date_spec</var> is a single argument, a date description
+specifying a date in the past.
+</p>
+<p>The specification is <em>sticky</em> when you use it to make a
+private copy of a source file; that is, when you get a working
+file using ‘<samp>-D</samp>’, <small>CVS</small> records the date
you specified, so that
+further updates in the same directory will use the same date
+(for more information on sticky tags/dates, see <a href="#Sticky-tags">Sticky
tags</a>).
+</p>
+<p>‘<samp>-D</samp>’ is available with the <code>annotate</code>,
<code>checkout</code>,
+<code>diff</code>, <code>export</code>, <code>history</code>,
+<code>rdiff</code>, <code>rtag</code>, and <code>update</code> commands.
+(The <code>history</code> command uses this option in a
+slightly different way; see <a href="#history-options">history options</a>).
+</p>
+
+<a name="index-Timezone_002c-in-input"></a>
+<a name="index-Zone_002c-time_002c-in-input"></a>
+<p>A wide variety of date formats are supported by
+<small>CVS</small>. The most standard ones are ISO8601 (from the
+International Standards Organization) and the Internet
+e-mail standard (specified in RFC822 as amended by
+RFC1123).
+</p>
+<p>ISO8601 dates have many variants but a few examples
+are:
+</p>
+<div class="example">
+<pre class="example">1972-09-24
+1972-09-24 20:05
+</pre></div>
+
+<p>There are a lot more ISO8601 date formats, and <small>CVS</small>
+accepts many of them, but you probably don’t want to
+hear the <em>whole</em> long story :-).
+</p>
+
+<p>In addition to the dates allowed in Internet e-mail
+itself, <small>CVS</small> also allows some of the fields to be
+omitted. For example:
+</p>
+<div class="example">
+<pre class="example">24 Sep 1972 20:05
+24 Sep
+</pre></div>
+
+<p>The date is interpreted as being in the
+local timezone, unless a specific timezone is
+specified.
+</p>
+<p>These two date formats are preferred. However,
+<small>CVS</small> currently accepts a wide variety of other date
+formats. They are intentionally not documented here in
+any detail, and future versions of <small>CVS</small> might not
+accept all of them.
+</p>
+<p>One such format is
+<code><var>month</var>/<var>day</var>/<var>year</var></code>. This may
+confuse people who are accustomed to having the month
+and day in the other order; ‘<samp>1/4/96</samp>’ is January 4,
+not April 1.
+</p>
+<p>Remember to quote the argument to the ‘<samp>-D</samp>’
+flag so that your shell doesn’t interpret spaces as
+argument separators. A command using the ‘<samp>-D</samp>’
+flag can look like this:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -D "1 hour ago" cvs.texinfo
+</pre></div>
+
+<a name="index-Forcing-a-tag-match"></a>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>When you specify a particular date or tag to <small>CVS</small>
commands, they
+normally ignore files that do not contain the tag (or did not
+exist prior to the date) that you specified. Use the
‘<samp>-f</samp>’ option
+if you want files retrieved even when there is no match for the
+tag or date. (The most recent revision of the file
+will be used).
+</p>
+<p>Note that even with ‘<samp>-f</samp>’, a tag that you specify
+must exist (that is, in some file, not necessary in
+every file). This is so that <small>CVS</small> will continue to
+give an error if you mistype a tag name.
+</p>
+<p>‘<samp>-f</samp>’ is available with these commands:
+<code>annotate</code>, <code>checkout</code>, <code>export</code>,
+<code>rdiff</code>, <code>rtag</code>, and <code>update</code>.
+</p>
+<p><strong>WARNING: The <code>commit</code> and <code>remove</code>
+commands also have a
+‘<samp>-f</samp>’ option, but it has a different behavior for
+those commands. See <a href="#commit-options">commit options</a>, and
+<a href="#Removing-files">Removing files</a>.</strong>
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Alter the default processing of keywords.
+See <a href="#Keyword-substitution">Keyword substitution</a>, for the meaning
of
+<var>kflag</var>. Your <var>kflag</var> specification is
+<em>sticky</em> when you use it to create a private copy
+of a source file; that is, when you use this option
+with the <code>checkout</code> or <code>update</code> commands,
+<small>CVS</small> associates your selected <var>kflag</var> with the
+file, and continues to use it with future update
+commands on the same file until you specify otherwise.
+</p>
+<p>The ‘<samp>-k</samp>’ option is available with the
<code>add</code>,
+<code>checkout</code>, <code>diff</code>, <code>rdiff</code>,
<code>import</code> and
+<code>update</code> commands.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory, rather than
+recursing through subdirectories.
+</p>
+<p>Available with the following commands: <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>edit</code>,
<code>editors</code>, <code>export</code>,
+<code>log</code>, <code>rdiff</code>, <code>remove</code>, <code>rtag</code>,
+<code>status</code>, <code>tag</code>, <code>unedit</code>,
<code>update</code>, <code>watch</code>,
+and <code>watchers</code>.
+</p>
+<a name="index-Editor_002c-avoiding-invocation-of"></a>
+<a name="index-Avoiding-editor-invocation"></a>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as log information, instead of
+invoking an editor.
+</p>
+<p>Available with the following commands: <code>add</code>,
+<code>commit</code> and <code>import</code>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any tag program. (A program can be
+specified to run in the modules
+database (see <a href="#modules">modules</a>); this option bypasses it).
+</p>
+<p><strong>This is not the same as the ‘<samp>cvs -n</samp>’
+program option, which you can specify to the left of a cvs command!</strong>
+</p>
+<p>Available with the <code>checkout</code>, <code>export</code>,
+and <code>rtag</code> commands.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a href="#Removing-directories">Removing
directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe the files retrieved from the repository to standard output,
+rather than writing them in the current directory. Available
+with the <code>checkout</code> and <code>update</code> commands.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively. This is on by default.
+</p>
+<p>Available with the following commands: <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>edit</code>,
<code>editors</code>, <code>export</code>,
+<code>rdiff</code>, <code>remove</code>, <code>rtag</code>,
+<code>status</code>, <code>tag</code>, <code>unedit</code>,
<code>update</code>, <code>watch</code>,
+and <code>watchers</code>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><a name="index-HEAD_002c-special-tag"></a>
+<a name="index-BASE_002c-special-tag"></a>
+<p>Use the revision specified by the <var>tag</var> argument instead of the
+default <em>head</em> revision. As well as arbitrary tags defined
+with the <code>tag</code> or <code>rtag</code> command, two special tags are
+always available: ‘<samp>HEAD</samp>’ refers to the most recent
version
+available in the repository, and ‘<samp>BASE</samp>’ refers to the
+revision you last checked out into the current working directory.
+</p>
+
+<p>The tag specification is sticky when you use this
+with <code>checkout</code> or <code>update</code> to make your own
+copy of a file: <small>CVS</small> remembers the tag and continues to use it on
+future update commands, until you specify otherwise (for more information
+on sticky tags/dates, see <a href="#Sticky-tags">Sticky tags</a>).
+</p>
+<p>The tag can be either a symbolic or numeric tag, as
+described in <a href="#Tags">Tags</a>, or the name of a branch, as
+described in <a href="#Branching-and-merging">Branching and merging</a>.
+When a command expects a specific revision,
+the name of a branch is interpreted as the most recent
+revision on that branch.
+</p>
+<p>Specifying the ‘<samp>-q</samp>’ global option along with the
+‘<samp>-r</samp>’ command option is often useful, to suppress
+the warning messages when the <small>RCS</small> file
+does not contain the specified tag.
+</p>
+<p><strong>This is not the same as the overall ‘<samp>cvs
-r</samp>’ option,
+which you can specify to the left of a <small>CVS</small> command!</strong>
+</p>
+<p>‘<samp>-r</samp>’ is available with the <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>history</code>,
<code>export</code>, <code>rdiff</code>,
+<code>rtag</code>, and <code>update</code> commands.
+</p>
+</dd>
+<dt><code>-W</code></dt>
+<dd><p>Specify file names that should be filtered. You can
+use this option repeatedly. The spec can be a file
+name pattern of the same type that you can specify in
+the <samp>.cvswrappers</samp> file.
+Available with the following commands: <code>import</code>,
+and <code>update</code>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="add"></a>
+<div class="header">
+<p>
+Next: <a href="#admin" accesskey="n" rel="next">admin</a>, Previous: <a
href="#Common-options" accesskey="p" rel="prev">Common options</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="add_002d_002d_002dAdd-files-and-directories-to-the-repository"></a>
+<h3 class="appendixsec">A.6 add—Add files and directories to the
repository</h3>
+<a name="index-add-_0028subcommand_0029-1"></a>
+
+<ul>
+<li> Synopsis: add [-k rcs-kflag] [-m message] files...
+</li><li> Requires: repository, working directory.
+</li><li> Changes: repository, working directory.
+</li></ul>
+
+<p>The <code>add</code> command is used to present new files
+and directories for addition into the <small>CVS</small>
+repository. When <code>add</code> is used on a directory,
+a new directory is created in the repository
+immediately. When used on a file, only the working
+directory is updated. Changes to the repository are
+not made until the <code>commit</code> command is used on
+the newly added file.
+</p>
+<p>The <code>add</code> command also resurrects files that
+have been previously removed. This can be done
+before or after the <code>commit</code> command is used
+to finalize the removal of files. Resurrected files
+are restored into the working directory at the time
+the <code>add</code> command is executed.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#add-options"
accesskey="1">add options</a>:</td><td> </td><td align="left"
valign="top">add options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#add-examples"
accesskey="2">add examples</a>:</td><td> </td><td align="left"
valign="top">add examples
+</td></tr>
+</table>
+
+<hr>
+<a name="add-options"></a>
+<div class="header">
+<p>
+Next: <a href="#add-examples" accesskey="n" rel="next">add examples</a>, Up:
<a href="#add" accesskey="u" rel="up">add</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="add-options-1"></a>
+<h4 class="appendixsubsec">A.6.1 add options</h4>
+
+<p>These standard options are supported by <code>add</code>
+(see <a href="#Common-options">Common options</a>, for a complete description
of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="#Keyword-substitution">Keyword substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. For more information on
+the <code>status</code> command, See <a href="#Invoking-CVS">Invoking CVS</a>.
+</p>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as the log message, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+<hr>
+<a name="add-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#add-options" accesskey="p" rel="prev">add options</a>, Up:
<a href="#add" accesskey="u" rel="up">add</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="add-examples-1"></a>
+<h4 class="appendixsubsec">A.6.2 add examples</h4>
+
+<a name="Adding-a-directory"></a>
+<h4 class="appendixsubsubsec">A.6.2.1 Adding a directory</h4>
+
+<div class="example">
+<pre class="example">$ mkdir doc
+$ cvs add doc
+Directory /path/to/repository/doc added to the repository
+</pre></div>
+
+<a name="Adding-a-file"></a>
+<h4 class="appendixsubsubsec">A.6.2.2 Adding a file</h4>
+
+<div class="example">
+<pre class="example">
+$ >TODO
+$ cvs add TODO
+cvs add: scheduling file `TODO' for addition
+cvs add: use 'cvs commit' to add this file permanently
+</pre></div>
+
+<a name="Undoing-a-remove-command"></a>
+<h4 class="appendixsubsubsec">A.6.2.3 Undoing a <code>remove</code>
command</h4>
+
+<div class="example">
+<pre class="example">$ rm -f makefile
+$ cvs remove makefile
+cvs remove: scheduling `makefile' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+$ cvs add makefile
+U makefile
+cvs add: makefile, version 1.2, resurrected
+</pre></div>
+
+<hr>
+<a name="admin"></a>
+<div class="header">
+<p>
+Next: <a href="#annotate" accesskey="n" rel="next">annotate</a>, Previous: <a
href="#add" accesskey="p" rel="prev">add</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="admin_002d_002d_002dAdministration"></a>
+<h3 class="appendixsec">A.7 admin—Administration</h3>
+<a name="index-Admin-_0028subcommand_0029"></a>
+
+<ul>
+<li> Requires: repository, working directory.
+</li><li> Changes: repository.
+</li><li> Synonym: rcs
+</li></ul>
+
+<p>This is the <small>CVS</small> interface to assorted
+administrative facilities. Some of them have
+questionable usefulness for <small>CVS</small> but exist for
+historical purposes. Some of the questionable options
+are likely to disappear in the future. This command
+<em>does</em> work recursively, so extreme care should be
+used.
+</p>
+<a name="index-cvsadmin"></a>
+<p>On unix, if there is a group named <code>cvsadmin</code>,
+only members of that group can run <code>cvs admin</code>
+(except for the <code>cvs admin -k</code> command, which can
+be run by anybody). This group should exist on the
+server, or any system running the non-client/server
+<small>CVS</small>. To disallow <code>cvs admin</code> for all users,
+create a group with no users in it. On NT, the
+<code>cvsadmin</code> feature does not exist and all users
+can run <code>cvs admin</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#admin-options"
accesskey="1">admin options</a>:</td><td> </td><td align="left"
valign="top">admin options
+</td></tr>
+</table>
+
+<hr>
+<a name="admin-options"></a>
+<div class="header">
+<p>
+Up: <a href="#admin" accesskey="u" rel="up">admin</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="admin-options-1"></a>
+<h4 class="appendixsubsec">A.7.1 admin options</h4>
+
+<p>Some of these options have questionable usefulness for
+<small>CVS</small> but exist for historical purposes. Some even
+make it impossible to use <small>CVS</small> until you undo the
+effect!
+</p>
+<dl compact="compact">
+<dt><code>-A<var>oldfile</var></code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Append the
+access list of <var>oldfile</var> to the access list of the
+<small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-a<var>logins</var></code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Append the
+login names appearing in the comma-separated list
+<var>logins</var> to the access list of the <small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-b[<var>rev</var>]</code></dt>
+<dd><p>Set the default branch to <var>rev</var>. In <small>CVS</small>, you
+normally do not manipulate default branches; sticky
+tags (see <a href="#Sticky-tags">Sticky tags</a>) are a better way to decide
+which branch you want to work on. There is one reason
+to run <code>cvs admin -b</code>: to revert to the vendor’s
+version when using vendor branches (see <a
href="#Reverting-local-changes">Reverting local changes</a>).
+There can be no space between ‘<samp>-b</samp>’ and its argument.
+</p>
+<a name="index-Comment-leader"></a>
+</dd>
+<dt><code>-c<var>string</var></code></dt>
+<dd><p>Sets the comment leader to <var>string</var>. The comment
+leader is not used by current versions of <small>CVS</small> or
+<small>RCS</small> 5.7. Therefore, you can almost surely not
+worry about it. See <a href="#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-e[<var>logins</var>]</code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Erase the login
+names appearing in the comma-separated list
+<var>logins</var> from the access list of the RCS file. If
+<var>logins</var> is omitted, erase the entire access list.
+There can be no space between ‘<samp>-e</samp>’ and its argument.
+</p>
+</dd>
+<dt><code>-I</code></dt>
+<dd><p>Run interactively, even if the standard input is not a
+terminal. This option does not work with the
+client/server <small>CVS</small> and is likely to disappear in
+a future release of <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-i</code></dt>
+<dd><p>Useless with <small>CVS</small>. This creates and initializes a
+new <small>RCS</small> file, without depositing a revision. With
+<small>CVS</small>, add files with the <code>cvs add</code> command
+(see <a href="#Adding-files">Adding files</a>).
+</p>
+</dd>
+<dt><code>-k<var>subst</var></code></dt>
+<dd><p>Set the default keyword
+substitution to <var>subst</var>. See <a href="#Keyword-substitution">Keyword
substitution</a>. Giving an explicit ‘<samp>-k</samp>’ option to
+<code>cvs update</code>, <code>cvs export</code>, or <code>cvs
+checkout</code> overrides this default.
+</p>
+</dd>
+<dt><code>-l[<var>rev</var>]</code></dt>
+<dd><p>Lock the revision with number <var>rev</var>. If a branch
+is given, lock the latest revision on that branch. If
+<var>rev</var> is omitted, lock the latest revision on the
+default branch. There can be no space between
+‘<samp>-l</samp>’ and its argument.
+</p>
+<p>This can be used in conjunction with the
+<samp>rcslock.pl</samp> script in the <samp>contrib</samp>
+directory of the <small>CVS</small> source distribution to
+provide reserved checkouts (where only one user can be
+editing a given file at a time). See the comments in
+that file for details (and see the <samp>README</samp> file
+in that directory for disclaimers about the unsupported
+nature of contrib). According to comments in that
+file, locking must set to strict (which is the default).
+</p>
+</dd>
+<dt><code>-L</code></dt>
+<dd><p>Set locking to strict. Strict locking means that the
+owner of an RCS file is not exempt from locking for
+checkin. For use with <small>CVS</small>, strict locking must be
+set; see the discussion under the ‘<samp>-l</samp>’ option above.
+</p>
+<a name="index-Changing-a-log-message"></a>
+<a name="index-Replacing-a-log-message"></a>
+<a name="index-Correcting-a-log-message"></a>
+<a name="index-Fixing-a-log-message"></a>
+<a name="index-Log-message_002c-correcting"></a>
+</dd>
+<dt><code>-m<var>rev</var>:<var>msg</var></code></dt>
+<dd><p>Replace the log message of revision <var>rev</var> with
+<var>msg</var>.
+</p>
+
+</dd>
+<dt><code>-N<var>name</var>[:[<var>rev</var>]]</code></dt>
+<dd><p>Act like ‘<samp>-n</samp>’, except override any previous
+assignment of <var>name</var>. For use with magic branches,
+see <a href="#Magic-branch-numbers">Magic branch numbers</a>.
+</p>
+</dd>
+<dt><code>-n<var>name</var>[:[<var>rev</var>]]</code></dt>
+<dd><p>Associate the symbolic name <var>name</var> with the branch
+or revision <var>rev</var>. It is normally better to use
+‘<samp>cvs tag</samp>’ or ‘<samp>cvs rtag</samp>’
instead. Delete the
+symbolic name if both ‘<samp>:</samp>’ and <var>rev</var> are
+omitted; otherwise, print an error message if
+<var>name</var> is already associated with another number.
+If <var>rev</var> is symbolic, it is expanded before
+association. A <var>rev</var> consisting of a branch number
+followed by a ‘<samp>.</samp>’ stands for the current latest
+revision in the branch. A ‘<samp>:</samp>’ with an empty
+<var>rev</var> stands for the current latest revision on the
+default branch, normally the trunk. For example,
+‘<samp>cvs admin -n<var>name</var>:</samp>’ associates
<var>name</var> with the
+current latest revision of all the RCS files;
+this contrasts with ‘<samp>cvs admin -n<var>name</var>:$</samp>’
which
+associates <var>name</var> with the revision numbers
+extracted from keyword strings in the corresponding
+working files.
+</p>
+<a name="index-Deleting-revisions"></a>
+<a name="index-Outdating-revisions"></a>
+<a name="index-Saving-space"></a>
+</dd>
+<dt><code>-o<var>range</var></code></dt>
+<dd><p>Deletes (<em>outdates</em>) the revisions given by
+<var>range</var>.
+</p>
+<p>Note that this command can be quite dangerous unless
+you know <em>exactly</em> what you are doing (for example
+see the warnings below about how the
+<var>rev1</var>:<var>rev2</var> syntax is confusing).
+</p>
+<p>If you are short on disc this option might help you.
+But think twice before using it—there is no way short
+of restoring the latest backup to undo this command!
+If you delete different revisions than you planned,
+either due to carelessness or (heaven forbid) a <small>CVS</small>
+bug, there is no opportunity to correct the error
+before the revisions are deleted. It probably would be
+a good idea to experiment on a copy of the repository
+first.
+</p>
+<p>Specify <var>range</var> in one of the following ways:
+</p>
+<dl compact="compact">
+<dt><code><var>rev1</var>::<var>rev2</var></code></dt>
+<dd><p>Collapse all revisions between rev1 and rev2, so that
+<small>CVS</small> only stores the differences associated with going
+from rev1 to rev2, not intermediate steps. For
+example, after ‘<samp>-o 1.3::1.5</samp>’ one can retrieve
+revision 1.3, revision 1.5, or the differences to get
+from 1.3 to 1.5, but not the revision 1.4, or the
+differences between 1.3 and 1.4. Other examples:
+‘<samp>-o 1.3::1.4</samp>’ and ‘<samp>-o
1.3::1.3</samp>’ have no
+effect, because there are no intermediate revisions to
+remove.
+</p>
+</dd>
+<dt><code>::<var>rev</var></code></dt>
+<dd><p>Collapse revisions between the beginning of the branch
+containing <var>rev</var> and <var>rev</var> itself. The
+branchpoint and <var>rev</var> are left intact. For
+example, ‘<samp>-o ::1.3.2.6</samp>’ deletes revision 1.3.2.1,
+revision 1.3.2.5, and everything in between, but leaves
+1.3 and 1.3.2.6 intact.
+</p>
+</dd>
+<dt><code><var>rev</var>::</code></dt>
+<dd><p>Collapse revisions between <var>rev</var> and the end of the
+branch containing <var>rev</var>. Revision <var>rev</var> is
+left intact but the head revision is deleted.
+</p>
+</dd>
+<dt><code><var>rev</var></code></dt>
+<dd><p>Delete the revision <var>rev</var>. For example, ‘<samp>-o
+1.3</samp>’ is equivalent to ‘<samp>-o 1.2::1.4</samp>’.
+</p>
+</dd>
+<dt><code><var>rev1</var>:<var>rev2</var></code></dt>
+<dd><p>Delete the revisions from <var>rev1</var> to <var>rev2</var>,
+inclusive, on the same branch. One will not be able to
+retrieve <var>rev1</var> or <var>rev2</var> or any of the
+revisions in between. For example, the command
+‘<samp>cvs admin -oR_1_01:R_1_02 .</samp>’ is rarely useful.
+It means to delete revisions up to, and including, the
+tag R_1_02. But beware! If there are files that have not
+changed between R_1_02 and R_1_03 the file will have
+<em>the same</em> numerical revision number assigned to
+the tags R_1_02 and R_1_03. So not only will it be
+impossible to retrieve R_1_02; R_1_03 will also have to
+be restored from the tapes! In most cases you want to
+specify <var>rev1</var>::<var>rev2</var> instead.
+</p>
+</dd>
+<dt><code>:<var>rev</var></code></dt>
+<dd><p>Delete revisions from the beginning of the
+branch containing <var>rev</var> up to and including
+<var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>:</code></dt>
+<dd><p>Delete revisions from revision <var>rev</var>, including
+<var>rev</var> itself, to the end of the branch containing
+<var>rev</var>.
+</p></dd>
+</dl>
+
+<p>None of the revisions to be deleted may have
+branches or locks.
+</p>
+<p>If any of the revisions to be deleted have symbolic
+names, and one specifies one of the ‘<samp>::</samp>’ syntaxes,
+then <small>CVS</small> will give an error and not delete any
+revisions. If you really want to delete both the
+symbolic names and the revisions, first delete the
+symbolic names with <code>cvs tag -d</code>, then run
+<code>cvs admin -o</code>. If one specifies the
+non-‘<samp>::</samp>’ syntaxes, then <small>CVS</small> will
delete the
+revisions but leave the symbolic names pointing to
+nonexistent revisions. This behavior is preserved for
+compatibility with previous versions of <small>CVS</small>, but
+because it isn’t very useful, in the future it may
+change to be like the ‘<samp>::</samp>’ case.
+</p>
+<p>Due to the way <small>CVS</small> handles branches <var>rev</var>
+cannot be specified symbolically if it is a branch.
+See <a href="#Magic-branch-numbers">Magic branch numbers</a> for an
explanation.
+</p>
+<p>Make sure that no-one has checked out a copy of the
+revision you outdate. Strange things will happen if he
+starts to edit it and tries to check it back in. For
+this reason, this option is not a good way to take back
+a bogus commit; commit a new revision undoing the bogus
+change instead (see <a href="#Merging-two-revisions">Merging two
revisions</a>).
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Run quietly; do not print diagnostics.
+</p>
+</dd>
+<dt><code>-s<var>state</var>[:<var>rev</var>]</code></dt>
+<dd><p>Useful with <small>CVS</small>. Set the state attribute of the
+revision <var>rev</var> to <var>state</var>. If <var>rev</var> is a
+branch number, assume the latest revision on that
+branch. If <var>rev</var> is omitted, assume the latest
+revision on the default branch. Any identifier is
+acceptable for <var>state</var>. A useful set of states is
+‘<samp>Exp</samp>’ (for experimental),
‘<samp>Stab</samp>’ (for
+stable), and ‘<samp>Rel</samp>’ (for released). By default,
+the state of a new revision is set to ‘<samp>Exp</samp>’ when
+it is created. The state is visible in the output from
+<var>cvs log</var> (see <a href="#log">log</a>), and in the
+‘<samp>$<i></i>Log$</samp>’ and
‘<samp>$<i></i>State$</samp>’ keywords
+(see <a href="#Keyword-substitution">Keyword substitution</a>). Note that
<small>CVS</small>
+uses the <code>dead</code> state for its own purposes (see <a
href="#Attic">Attic</a>); to
+take a file to or from the <code>dead</code> state use
+commands like <code>cvs remove</code> and <code>cvs add</code>
+(see <a href="#Adding-and-removing">Adding and removing</a>), not <code>cvs
admin -s</code>.
+</p>
+</dd>
+<dt><code>-t[<var>file</var>]</code></dt>
+<dd><p>Useful with <small>CVS</small>. Write descriptive text from the
+contents of the named <var>file</var> into the RCS file,
+deleting the existing text. The <var>file</var> pathname
+may not begin with ‘<samp>-</samp>’. The descriptive text can be
seen in the
+output from ‘<samp>cvs log</samp>’ (see <a href="#log">log</a>).
+There can be no space between ‘<samp>-t</samp>’ and its argument.
+</p>
+<p>If <var>file</var> is omitted,
+obtain the text from standard input, terminated by
+end-of-file or by a line containing ‘<samp>.</samp>’ by itself.
+Prompt for the text if interaction is possible; see
+‘<samp>-I</samp>’.
+</p>
+</dd>
+<dt><code>-t-<var>string</var></code></dt>
+<dd><p>Similar to ‘<samp>-t<var>file</var></samp>’. Write
descriptive text
+from the <var>string</var> into the <small>RCS</small> file, deleting
+the existing text.
+There can be no space between ‘<samp>-t</samp>’ and its argument.
+</p>
+
+</dd>
+<dt><code>-U</code></dt>
+<dd><p>Set locking to non-strict. Non-strict locking means
+that the owner of a file need not lock a revision for
+checkin. For use with <small>CVS</small>, strict locking must be
+set; see the discussion under the ‘<samp>-l</samp>’ option
+above.
+</p>
+</dd>
+<dt><code>-u[<var>rev</var>]</code></dt>
+<dd><p>See the option ‘<samp>-l</samp>’ above, for a discussion of
+using this option with <small>CVS</small>. Unlock the revision
+with number <var>rev</var>. If a branch is given, unlock
+the latest revision on that branch. If <var>rev</var> is
+omitted, remove the latest lock held by the caller.
+Normally, only the locker of a revision may unlock it;
+somebody else unlocking a revision breaks the lock.
+This causes the original locker to be sent a <code>commit</code>
+notification (see <a href="#Getting-Notified">Getting Notified</a>).
+There can be no space between ‘<samp>-u</samp>’ and its argument.
+</p>
+</dd>
+<dt><code>-V<var>n</var></code></dt>
+<dd><p>In previous versions of <small>CVS</small>, this option meant to
+write an <small>RCS</small> file which would be acceptable to
+<small>RCS</small> version <var>n</var>, but it is now obsolete and
+specifying it will produce an error.
+</p>
+</dd>
+<dt><code>-x<var>suffixes</var></code></dt>
+<dd><p>In previous versions of <small>CVS</small>, this was documented
+as a way of specifying the names of the <small>RCS</small>
+files. However, <small>CVS</small> has always required that the
+<small>RCS</small> files used by <small>CVS</small> end in
‘<samp>,v</samp>’, so
+this option has never done anything useful.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<a name="annotate"></a>
+<div class="header">
+<p>
+Next: <a href="#checkout" accesskey="n" rel="next">checkout</a>, Previous: <a
href="#admin" accesskey="p" rel="prev">admin</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a
name="annotate_002d_002d_002dWhat-revision-modified-each-line-of-a-file_003f"></a>
+<h3 class="appendixsec">A.8 annotate—What revision modified each line of
a file?</h3>
+<a name="index-annotate-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: annotate [options] files…
+</li><li> Requires: repository.
+</li><li> Synonym: blame
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>For each file in <var>files</var>, print the head revision
+of the trunk, together with information on the last
+modification for each line.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#annotate-options"
accesskey="1">annotate options</a>:</td><td> </td><td align="left"
valign="top">annotate options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#annotate-example"
accesskey="2">annotate example</a>:</td><td> </td><td align="left"
valign="top">annotate example
+</td></tr>
+</table>
+
+<hr>
+<a name="annotate-options"></a>
+<div class="header">
+<p>
+Next: <a href="#annotate-example" accesskey="n" rel="next">annotate
example</a>, Up: <a href="#annotate" accesskey="u" rel="up">annotate</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="annotate-options-1"></a>
+<h4 class="appendixsubsec">A.8.1 annotate options</h4>
+
+<p>These standard options are supported by <code>annotate</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local directory only, no recursion.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Annotate binary files.
+</p>
+</dd>
+<dt><code>-r <var>revision</var></code></dt>
+<dd><p>Annotate file as of specified revision/tag.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate file as of specified date.
+</p></dd>
+</dl>
+
+<hr>
+<a name="annotate-example"></a>
+<div class="header">
+<p>
+Previous: <a href="#annotate-options" accesskey="p" rel="prev">annotate
options</a>, Up: <a href="#annotate" accesskey="u" rel="up">annotate</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="annotate-example-1"></a>
+<h4 class="appendixsubsec">A.8.2 annotate example</h4>
+
+<p>For example:
+</p>
+<div class="example">
+<pre class="example">$ cvs annotate ssfile
+Annotations for ssfile
+***************
+1.1 (mary 27-Mar-96): ssfile line 1
+1.2 (joe 28-Mar-96): ssfile line 2
+</pre></div>
+
+<p>The file <samp>ssfile</samp> currently contains two lines.
+The <code>ssfile line 1</code> line was checked in by
+<code>mary</code> on March 27. Then, on March 28, <code>joe</code>
+added a line <code>ssfile line 2</code>, without modifying
+the <code>ssfile line 1</code> line. This report doesn’t
+tell you anything about lines which have been deleted
+or replaced; you need to use <code>cvs diff</code> for that
+(see <a href="#diff">diff</a>).
+</p>
+<p>The options to <code>cvs annotate</code> are listed in
+<a href="#Invoking-CVS">Invoking CVS</a>, and can be used to select the files
+and revisions to annotate. The options are described
+in more detail there and in <a href="#Common-options">Common options</a>.
+</p>
+
+
+<hr>
+<a name="checkout"></a>
+<div class="header">
+<p>
+Next: <a href="#commit" accesskey="n" rel="next">commit</a>, Previous: <a
href="#annotate" accesskey="p" rel="prev">annotate</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="checkout_002d_002d_002dCheck-out-sources-for-editing"></a>
+<h3 class="appendixsec">A.9 checkout—Check out sources for editing</h3>
+<a name="index-checkout-_0028subcommand_0029"></a>
+<a name="index-co-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: checkout [options] modules…
+</li><li> Requires: repository.
+</li><li> Changes: working directory.
+</li><li> Synonyms: co, get
+</li></ul>
+
+<p>Create or update a working directory containing copies of the
+source files specified by <var>modules</var>. You must execute
+<code>checkout</code> before using most of the other <small>CVS</small>
+commands, since most of them operate on your working
+directory.
+</p>
+<p>The <var>modules</var> are either
+symbolic names for some
+collection of source directories and files, or paths to
+directories or files in the repository. The symbolic
+names are defined in the ‘<samp>modules</samp>’ file.
+See <a href="#modules">modules</a>.
+</p>
+<p>Depending on the modules you specify, <code>checkout</code> may
+recursively create directories and populate them with
+the appropriate source files. You can then edit these
+source files at any time (regardless of whether other
+software developers are editing their own copies of the
+sources); update them to include new changes applied by
+others to the source repository; or commit your work as
+a permanent change to the source repository.
+</p>
+<p>Note that <code>checkout</code> is used to create
+directories. The top-level directory created is always
+added to the directory where <code>checkout</code> is
+invoked, and usually has the same name as the specified
+module. In the case of a module alias, the created
+sub-directory may have a different name, but you can be
+sure that it will be a sub-directory, and that
+<code>checkout</code> will show the relative path leading to
+each file as it is extracted into your private work
+area (unless you specify the ‘<samp>-Q</samp>’ global option).
+</p>
+<p>The files created by <code>checkout</code> are created
+read-write, unless the ‘<samp>-r</samp>’ option to
<small>CVS</small>
+(see <a href="#Global-options">Global options</a>) is specified, the
+<code>CVSREAD</code> environment variable is specified
+(see <a href="#Environment-variables">Environment variables</a>), or a watch
is in
+effect for that file (see <a href="#Watches">Watches</a>).
+</p>
+<p>Note that running <code>checkout</code> on a directory that was already
+built by a prior <code>checkout</code> is also permitted.
+This is similar to specifying the ‘<samp>-d</samp>’ option
+to the <code>update</code> command in the sense that new
+directories that have been created in the repository
+will appear in your work area.
+However, <code>checkout</code> takes a module name whereas
+<code>update</code> takes a directory name. Also
+to use <code>checkout</code> this way it must be run from the
+top level directory (where you originally ran
+<code>checkout</code> from), so before you run
+<code>checkout</code> to update an existing directory, don’t
+forget to change your directory to the top level
+directory.
+</p>
+<p>For the output produced by the <code>checkout</code> command,
+See <a href="#update-output">update output</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#checkout-options"
accesskey="1">checkout options</a>:</td><td> </td><td align="left"
valign="top">checkout options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#checkout-examples"
accesskey="2">checkout examples</a>:</td><td> </td><td align="left"
valign="top">checkout examples
+</td></tr>
+</table>
+
+<hr>
+<a name="checkout-options"></a>
+<div class="header">
+<p>
+Next: <a href="#checkout-examples" accesskey="n" rel="next">checkout
examples</a>, Up: <a href="#checkout" accesskey="u" rel="up">checkout</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="checkout-options-1"></a>
+<h4 class="appendixsubsec">A.9.1 checkout options</h4>
+
+<p>These standard options are supported by <code>checkout</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+This option is sticky, and implies ‘<samp>-P</samp>’. See
+<a href="#Sticky-tags">Sticky tags</a> for more information on sticky
tags/dates.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r
+<var>tag</var></samp>’ flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="#Keyword-substitution">Keyword substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. See <a href="#Invoking-CVS">Invoking CVS</a> for
+more information on the <code>status</code> command.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any checkout program (as specified
+with the ‘<samp>-o</samp>’ option in the modules file;
+see <a href="#modules">modules</a>).
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a href="#Moving-directories">Moving
directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe files to the standard output.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Checkout directories recursively. This option is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>. This option is sticky, and implies
‘<samp>-P</samp>’.
+See <a href="#Sticky-tags">Sticky tags</a>, for more information on sticky
tags/dates.
+</p></dd>
+</dl>
+
+<p>In addition to those, you can use these special command
+options with <code>checkout</code>:
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags, dates, or ‘<samp>-k</samp>’ options.
+Does not reset sticky ‘<samp>-k</samp>’ options on modified files.
+See <a href="#Sticky-tags">Sticky tags</a> for more information on sticky
tags/dates.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Copy the module file, sorted, to the standard output,
+instead of creating or modifying any files or
+directories in your working directory.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Create a directory called <var>dir</var> for the working
+files, instead of using the module name. In general,
+using this flag is equivalent to using ‘<samp>mkdir
+<var>dir</var>; cd <var>dir</var></samp>’ followed by the checkout
+command without the ‘<samp>-d</samp>’ flag.
+</p>
+<p>There is an important exception, however. It is very
+convenient when checking out a single item to have the
+output appear in a directory that doesn’t contain empty
+intermediate directories. In this case <em>only</em>,
+<small>CVS</small> tries to “shorten” pathnames to avoid those
empty
+directories.
+</p>
+<p>For example, given a module ‘<samp>foo</samp>’ that contains
+the file ‘<samp>bar.c</samp>’, the command ‘<samp>cvs co -d
dir
+foo</samp>’ will create directory ‘<samp>dir</samp>’ and
place
+‘<samp>bar.c</samp>’ inside. Similarly, given a module
+‘<samp>bar</samp>’ which has subdirectory
‘<samp>baz</samp>’ wherein
+there is a file ‘<samp>quux.c</samp>’, the command
‘<samp>cvs co
+-d dir bar/baz</samp>’ will create directory
‘<samp>dir</samp>’ and
+place ‘<samp>quux.c</samp>’ inside.
+</p>
+<p>Using the ‘<samp>-N</samp>’ flag will defeat this behavior.
+Given the same module definitions above, ‘<samp>cvs co
+-N -d dir foo</samp>’ will create directories
‘<samp>dir/foo</samp>’
+and place ‘<samp>bar.c</samp>’ inside, while ‘<samp>cvs co
-N -d
+dir bar/baz</samp>’ will create directories
‘<samp>dir/bar/baz</samp>’
+and place ‘<samp>quux.c</samp>’ inside.
+</p>
+</dd>
+<dt><code>-j <var>tag</var></code></dt>
+<dd><p>With two ‘<samp>-j</samp>’ options, merge changes from the
+revision specified with the first ‘<samp>-j</samp>’ option to
+the revision specified with the second ‘<samp>j</samp>’ option,
+into the working directory.
+</p>
+<p>With one ‘<samp>-j</samp>’ option, merge changes from the
+ancestor revision to the revision specified with the
+‘<samp>-j</samp>’ option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the ‘<samp>-j</samp>’ option.
+</p>
+<p>In addition, each -j option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+‘<samp>-j<var>Symbolic_Tag</var>:<var>Date_Specifier</var></samp>’.
+</p>
+<p>See <a href="#Branching-and-merging">Branching and merging</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Only useful together with ‘<samp>-d <var>dir</var></samp>’.
With
+this option, <small>CVS</small> will not “shorten” module paths
+in your working directory when you check out a single
+module. See the ‘<samp>-d</samp>’ flag for examples and a
+discussion.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Like ‘<samp>-c</samp>’, but include the status of all
modules,
+and sort it by the status string. See <a href="#modules">modules</a>, for
+info about the ‘<samp>-s</samp>’ option that is used inside the
+modules file to set the module status.
+</p></dd>
+</dl>
+
+<hr>
+<a name="checkout-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#checkout-options" accesskey="p" rel="prev">checkout
options</a>, Up: <a href="#checkout" accesskey="u" rel="up">checkout</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="checkout-examples-1"></a>
+<h4 class="appendixsubsec">A.9.2 checkout examples</h4>
+
+<p>Get a copy of the module ‘<samp>tc</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout tc
+</pre></div>
+
+<p>Get a copy of the module ‘<samp>tc</samp>’ as it looked one day
+ago:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -D yesterday tc
+</pre></div>
+
+<hr>
+<a name="commit"></a>
+<div class="header">
+<p>
+Next: <a href="#diff" accesskey="n" rel="next">diff</a>, Previous: <a
href="#checkout" accesskey="p" rel="prev">checkout</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="commit_002d_002d_002dCheck-files-into-the-repository"></a>
+<h3 class="appendixsec">A.10 commit—Check files into the repository</h3>
+<a name="index-commit-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: commit [-lRf] [-m ’log_message’ |
+-F file] [-r revision] [files…]
+</li><li> Requires: working directory, repository.
+</li><li> Changes: repository.
+</li><li> Synonym: ci
+</li></ul>
+
+<p>Use <code>commit</code> when you want to incorporate changes
+from your working source files into the source
+repository.
+</p>
+<p>If you don’t specify particular files to commit, all of
+the files in your working current directory are
+examined. <code>commit</code> is careful to change in the
+repository only those files that you have really
+changed. By default (or if you explicitly specify the
+‘<samp>-R</samp>’ option), files in subdirectories are also
+examined and committed if they have changed; you can
+use the ‘<samp>-l</samp>’ option to limit <code>commit</code> to
the
+current directory only.
+</p>
+<p><code>commit</code> verifies that the selected files are up
+to date with the current revisions in the source
+repository; it will notify you, and exit without
+committing, if any of the specified files must be made
+current first with <code>update</code> (see <a href="#update">update</a>).
+<code>commit</code> does not call the <code>update</code> command
+for you, but rather leaves that for you to do when the
+time is right.
+</p>
+<p>When all is well, an editor is invoked to allow you to
+enter a log message that will be written to one or more
+logging programs (see <a href="#modules">modules</a>, and see <a
href="#loginfo">loginfo</a>)
+and placed in the <small>RCS</small> file inside the
+repository. This log message can be retrieved with the
+<code>log</code> command; See <a href="#log">log</a>. You can specify the
+log message on the command line with the ‘<samp>-m
+<var>message</var></samp>’ option, and thus avoid the editor invocation,
+or use the ‘<samp>-F <var>file</var></samp>’ option to specify
+that the argument file contains the log message.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#commit-options"
accesskey="1">commit options</a>:</td><td> </td><td align="left"
valign="top">commit options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#commit-examples"
accesskey="2">commit examples</a>:</td><td> </td><td align="left"
valign="top">commit examples
+</td></tr>
+</table>
+
+<hr>
+<a name="commit-options"></a>
+<div class="header">
+<p>
+Next: <a href="#commit-examples" accesskey="n" rel="next">commit examples</a>,
Up: <a href="#commit" accesskey="u" rel="up">commit</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="commit-options-1"></a>
+<h4 class="appendixsubsec">A.10.1 commit options</h4>
+
+<p>These standard options are supported by <code>commit</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Commit directories recursively. This is on by default.
+</p>
+</dd>
+<dt><code>-r <var>revision</var></code></dt>
+<dd><p>Commit to <var>revision</var>. <var>revision</var> must be
+either a branch, or a revision on the main trunk that
+is higher than any existing revision number
+(see <a href="#Assigning-revisions">Assigning revisions</a>). You
+cannot commit to a specific revision on a branch.
+</p></dd>
+</dl>
+
+<p><code>commit</code> also supports these options:
+</p>
+<dl compact="compact">
+<dt><code>-F <var>file</var></code></dt>
+<dd><p>Read the log message from <var>file</var>, instead
+of invoking an editor.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Note that this is not the standard behavior of
+the ‘<samp>-f</samp>’ option as defined in <a
href="#Common-options">Common options</a>.
+</p>
+<p>Force <small>CVS</small> to commit a new revision even if you haven’t
+made any changes to the file. If the current revision
+of <var>file</var> is 1.7, then the following two commands
+are equivalent:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -f <var>file</var>
+$ cvs commit -r 1.8 <var>file</var>
+</pre></div>
+
+<p>The ‘<samp>-f</samp>’ option disables recursion (i.e., it
+implies ‘<samp>-l</samp>’). To force <small>CVS</small> to commit
a new
+revision for all files in all subdirectories, you must
+use ‘<samp>-f -R</samp>’.
+</p>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as the log message, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+<hr>
+<a name="commit-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#commit-options" accesskey="p" rel="prev">commit
options</a>, Up: <a href="#commit" accesskey="u" rel="up">commit</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="commit-examples-1"></a>
+<h4 class="appendixsubsec">A.10.2 commit examples</h4>
+
+
+<a name="Committing-to-a-branch"></a>
+<h4 class="appendixsubsubsec">A.10.2.1 Committing to a branch</h4>
+
+<p>You can commit to a branch revision (one that has an
+even number of dots) with the ‘<samp>-r</samp>’ option. To
+create a branch revision, use the ‘<samp>-b</samp>’ option
+of the <code>rtag</code> or <code>tag</code> commands
+(see <a href="#Branching-and-merging">Branching and merging</a>). Then,
either <code>checkout</code> or
+<code>update</code> can be used to base your sources on the
+newly created branch. From that point on, all
+<code>commit</code> changes made within these working sources
+will be automatically added to a branch revision,
+thereby not disturbing main-line development in any
+way. For example, if you had to create a patch to the
+1.2 version of the product, even though the 2.0 version
+is already under development, you might do:
+</p>
+<div class="example">
+<pre class="example">$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
+$ cvs checkout -r FCS1_2_Patch product_module
+$ cd product_module
+[[ hack away ]]
+$ cvs commit
+</pre></div>
+
+<p>This works automatically since the ‘<samp>-r</samp>’ option is
+sticky.
+</p>
+<a name="Creating-the-branch-after-editing"></a>
+<h4 class="appendixsubsubsec">A.10.2.2 Creating the branch after editing</h4>
+
+<p>Say you have been working on some extremely
+experimental software, based on whatever revision you
+happened to checkout last week. If others in your
+group would like to work on this software with you, but
+without disturbing main-line development, you could
+commit your change to a new branch. Others can then
+checkout your experimental stuff and utilize the full
+benefit of <small>CVS</small> conflict resolution. The scenario might
+look like:
+</p>
+<div class="example">
+<pre class="example">[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs update -r EXPR1
+$ cvs commit
+</pre></div>
+
+<p>The <code>update</code> command will make the ‘<samp>-r
+EXPR1</samp>’ option sticky on all files. Note that your
+changes to the files will never be removed by the
+<code>update</code> command. The <code>commit</code> will
+automatically commit to the correct branch, because the
+‘<samp>-r</samp>’ is sticky. You could also do like this:
+</p>
+<div class="example">
+<pre class="example">[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs commit -r EXPR1
+</pre></div>
+
+<p>but then, only those files that were changed by you
+will have the ‘<samp>-r EXPR1</samp>’ sticky flag. If you hack
+away, and commit without specifying the ‘<samp>-r EXPR1</samp>’
+flag, some files may accidentally end up on the main
+trunk.
+</p>
+<p>To work with you on the experimental change, others
+would simply do
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r EXPR1 whatever_module
+</pre></div>
+
+<hr>
+<a name="diff"></a>
+<div class="header">
+<p>
+Next: <a href="#export" accesskey="n" rel="next">export</a>, Previous: <a
href="#commit" accesskey="p" rel="prev">commit</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="diff_002d_002d_002dShow-differences-between-revisions"></a>
+<h3 class="appendixsec">A.11 diff—Show differences between revisions</h3>
+<a name="index-diff-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D date1]
[-r rev2 | -D date2]] [files…]
+</li><li> Requires: working directory, repository.
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>The <code>diff</code> command is used to compare different
+revisions of files. The default action is to compare
+your working files with the revisions they were based
+on, and report any differences that are found.
+</p>
+<p>If any file names are given, only those files are
+compared. If any directories are given, all files
+under them will be compared.
+</p>
+<p>The exit status for diff is different than for other
+<small>CVS</small> commands; for details See <a href="#Exit-status">Exit
status</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#diff-options"
accesskey="1">diff options</a>:</td><td> </td><td align="left"
valign="top">diff options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#diff-examples"
accesskey="2">diff examples</a>:</td><td> </td><td align="left"
valign="top">diff examples
+</td></tr>
+</table>
+
+<hr>
+<a name="diff-options"></a>
+<div class="header">
+<p>
+Next: <a href="#diff-examples" accesskey="n" rel="next">diff examples</a>, Up:
<a href="#diff" accesskey="u" rel="up">diff</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="diff-options-1"></a>
+<h4 class="appendixsubsec">A.11.1 diff options</h4>
+
+<p>These standard options are supported by <code>diff</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+See ‘<samp>-r</samp>’ for how this affects the comparison.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Examine directories recursively. This option is on by
+default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Compare with revision <var>tag</var>. Zero, one or two
+‘<samp>-r</samp>’ options can be present. With no
‘<samp>-r</samp>’
+option, the working file will be compared with the
+revision it was based on. With one ‘<samp>-r</samp>’, that
+revision will be compared to your current working file.
+With two ‘<samp>-r</samp>’ options those two revisions will be
+compared (and your working file will not affect the
+outcome in any way).
+</p>
+<p>One or both ‘<samp>-r</samp>’ options can be replaced by a
+‘<samp>-D <var>date</var></samp>’ option, described above.
+</p></dd>
+</dl>
+
+<p>The following options specify the format of the
+output. They have the same meaning as in GNU diff.
+Most options have two equivalent names, one of which is a single letter
+preceded by ‘<samp>-</samp>’, and the other of which is a long
name preceded by
+‘<samp>--</samp>’.
+</p>
+<dl compact="compact">
+<dt>‘<samp>-<var>lines</var></samp>’</dt>
+<dd><p>Show <var>lines</var> (an integer) lines of context. This option does
not
+specify an output format by itself; it has no effect unless it is
+combined with ‘<samp>-c</samp>’ or ‘<samp>-u</samp>’.
This option is obsolete. For proper
+operation, <code>patch</code> typically needs at least two lines of context.
+</p>
+</dd>
+<dt>‘<samp>-a</samp>’</dt>
+<dd><p>Treat all files as text and compare them line-by-line, even if they
+do not seem to be text.
+</p>
+</dd>
+<dt>‘<samp>-b</samp>’</dt>
+<dd><p>Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+</p>
+</dd>
+<dt>‘<samp>-B</samp>’</dt>
+<dd><p>Ignore changes that just insert or delete blank lines.
+</p>
+</dd>
+<dt>‘<samp>--binary</samp>’</dt>
+<dd><p>Read and write data in binary mode.
+</p>
+</dd>
+<dt>‘<samp>--brief</samp>’</dt>
+<dd><p>Report only whether the files differ, not the details of the
+differences.
+</p>
+</dd>
+<dt>‘<samp>-c</samp>’</dt>
+<dd><p>Use the context output format.
+</p>
+</dd>
+<dt>‘<samp>-C <var>lines</var></samp>’</dt>
+<dt>‘<samp>--context<span class="roman">[</span>=<var>lines</var><span
class="roman">]</span></samp>’</dt>
+<dd><p>Use the context output format, showing <var>lines</var> (an integer)
lines of
+context, or three if <var>lines</var> is not given.
+For proper operation, <code>patch</code> typically needs at least two lines of
+context.
+</p>
+</dd>
+<dt>‘<samp>--changed-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line group containing differing lines
from
+both files in if-then-else format. See <a href="#Line-group-formats">Line
group formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-d</samp>’</dt>
+<dd><p>Change the algorithm to perhaps find a smaller set of changes. This
makes
+<code>diff</code> slower (sometimes much slower).
+</p>
+</dd>
+<dt>‘<samp>-e</samp>’</dt>
+<dt>‘<samp>--ed</samp>’</dt>
+<dd><p>Make output that is a valid <code>ed</code> script.
+</p>
+</dd>
+<dt>‘<samp>--expand-tabs</samp>’</dt>
+<dd><p>Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+</p>
+</dd>
+<dt>‘<samp>-f</samp>’</dt>
+<dd><p>Make output that looks vaguely like an <code>ed</code> script but has
changes
+in the order they appear in the file.
+</p>
+</dd>
+<dt>‘<samp>-F <var>regexp</var></samp>’</dt>
+<dd><p>In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches <var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--forward-ed</samp>’</dt>
+<dd><p>Make output that looks vaguely like an <code>ed</code> script but has
changes
+in the order they appear in the file.
+</p>
+</dd>
+<dt>‘<samp>-H</samp>’</dt>
+<dd><p>Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+</p>
+</dd>
+<dt>‘<samp>--horizon-lines=<var>lines</var></samp>’</dt>
+<dd><p>Do not discard the last <var>lines</var> lines of the common prefix
+and the first <var>lines</var> lines of the common suffix.
+</p>
+</dd>
+<dt>‘<samp>-i</samp>’</dt>
+<dd><p>Ignore changes in case; consider upper- and lower-case letters
+equivalent.
+</p>
+</dd>
+<dt>‘<samp>-I <var>regexp</var></samp>’</dt>
+<dd><p>Ignore changes that just insert or delete lines that match
<var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--ifdef=<var>name</var></samp>’</dt>
+<dd><p>Make merged if-then-else output using <var>name</var>.
+</p>
+</dd>
+<dt>‘<samp>--ignore-all-space</samp>’</dt>
+<dd><p>Ignore white space when comparing lines.
+</p>
+</dd>
+<dt>‘<samp>--ignore-blank-lines</samp>’</dt>
+<dd><p>Ignore changes that just insert or delete blank lines.
+</p>
+</dd>
+<dt>‘<samp>--ignore-case</samp>’</dt>
+<dd><p>Ignore changes in case; consider upper- and lower-case to be the same.
+</p>
+</dd>
+<dt>‘<samp>--ignore-matching-lines=<var>regexp</var></samp>’</dt>
+<dd><p>Ignore changes that just insert or delete lines that match
<var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--ignore-space-change</samp>’</dt>
+<dd><p>Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+</p>
+</dd>
+<dt>‘<samp>--initial-tab</samp>’</dt>
+<dd><p>Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+</p>
+</dd>
+<dt>‘<samp>-L <var>label</var></samp>’</dt>
+<dd><p>Use <var>label</var> instead of the file name in the context format
+and unified format headers.
+</p>
+</dd>
+<dt>‘<samp>--label=<var>label</var></samp>’</dt>
+<dd><p>Use <var>label</var> instead of the file name in the context format
+and unified format headers.
+</p>
+</dd>
+<dt>‘<samp>--left-column</samp>’</dt>
+<dd><p>Print only the left column of two common lines in side by side format.
+</p>
+</dd>
+<dt>‘<samp>--line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output all input lines in if-then-else format.
+See <a href="#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--minimal</samp>’</dt>
+<dd><p>Change the algorithm to perhaps find a smaller set of changes. This
+makes <code>diff</code> slower (sometimes much slower).
+</p>
+</dd>
+<dt>‘<samp>-n</samp>’</dt>
+<dd><p>Output RCS-format diffs; like ‘<samp>-f</samp>’ except that
each command
+specifies the number of lines affected.
+</p>
+</dd>
+<dt>‘<samp>-N</samp>’</dt>
+<dt>‘<samp>--new-file</samp>’</dt>
+<dd><p>In directory comparison, if a file is found in only one directory,
+treat it as present but empty in the other directory.
+</p>
+</dd>
+<dt>‘<samp>--new-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of lines taken from just the
second
+file in if-then-else format. See <a href="#Line-group-formats">Line group
formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--new-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line taken from just the second file
in
+if-then-else format. See <a href="#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--old-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of lines taken from just the
first
+file in if-then-else format. See <a href="#Line-group-formats">Line group
formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--old-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line taken from just the first file in
+if-then-else format. See <a href="#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-p</samp>’</dt>
+<dd><p>Show which C function each change is in.
+</p>
+</dd>
+<dt>‘<samp>--rcs</samp>’</dt>
+<dd><p>Output RCS-format diffs; like ‘<samp>-f</samp>’ except that
each command
+specifies the number of lines affected.
+</p>
+</dd>
+<dt>‘<samp>--report-identical-files</samp>’</dt>
+<dt>‘<samp>-s</samp>’</dt>
+<dd><p>Report when two files are the same.
+</p>
+</dd>
+<dt>‘<samp>--show-c-function</samp>’</dt>
+<dd><p>Show which C function each change is in.
+</p>
+</dd>
+<dt>‘<samp>--show-function-line=<var>regexp</var></samp>’</dt>
+<dd><p>In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches <var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--side-by-side</samp>’</dt>
+<dd><p>Use the side by side output format.
+</p>
+</dd>
+<dt>‘<samp>--speed-large-files</samp>’</dt>
+<dd><p>Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+</p>
+</dd>
+<dt>‘<samp>--suppress-common-lines</samp>’</dt>
+<dd><p>Do not print common lines in side by side format.
+</p>
+</dd>
+<dt>‘<samp>-t</samp>’</dt>
+<dd><p>Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+</p>
+</dd>
+<dt>‘<samp>-T</samp>’</dt>
+<dd><p>Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+</p>
+</dd>
+<dt>‘<samp>--text</samp>’</dt>
+<dd><p>Treat all files as text and compare them line-by-line, even if they
+do not appear to be text.
+</p>
+</dd>
+<dt>‘<samp>-u</samp>’</dt>
+<dd><p>Use the unified output format.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of common lines taken from both
files
+in if-then-else format. See <a href="#Line-group-formats">Line group
formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line common to both files in
if-then-else
+format. See <a href="#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-U <var>lines</var></samp>’</dt>
+<dt>‘<samp>--unified<span class="roman">[</span>=<var>lines</var><span
class="roman">]</span></samp>’</dt>
+<dd><p>Use the unified output format, showing <var>lines</var> (an integer)
lines of
+context, or three if <var>lines</var> is not given.
+For proper operation, <code>patch</code> typically needs at least two lines of
+context.
+</p>
+</dd>
+<dt>‘<samp>-w</samp>’</dt>
+<dd><p>Ignore white space when comparing lines.
+</p>
+</dd>
+<dt>‘<samp>-W <var>columns</var></samp>’</dt>
+<dt>‘<samp>--width=<var>columns</var></samp>’</dt>
+<dd><p>Use an output width of <var>columns</var> in side by side format.
+</p>
+</dd>
+<dt>‘<samp>-y</samp>’</dt>
+<dd><p>Use the side by side output format.
+</p></dd>
+</dl>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Line-group-formats"
accesskey="1">Line group formats</a>:</td><td> </td><td align="left"
valign="top">Line group formats
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Line-formats"
accesskey="2">Line formats</a>:</td><td> </td><td align="left"
valign="top">Line formats
+</td></tr>
+</table>
+
+<hr>
+<a name="Line-group-formats"></a>
+<div class="header">
+<p>
+Next: <a href="#Line-formats" accesskey="n" rel="next">Line formats</a>, Up:
<a href="#diff-options" accesskey="u" rel="up">diff options</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Line-group-formats-1"></a>
+<h4 class="appendixsubsubsec">A.11.1.1 Line group formats</h4>
+
+<p>Line group formats let you specify formats suitable for many
+applications that allow if-then-else input, including programming
+languages and text formatting languages. A line group format specifies
+the output format for a contiguous group of similar lines.
+</p>
+<p>For example, the following command compares the TeX file <samp>myfile</samp>
+with the original version from the repository,
+and outputs a merged file in which old regions are
+surrounded by
‘<samp>\begin{em}</samp>’-‘<samp>\end{em}</samp>’
lines, and new
+regions are surrounded by
‘<samp>\begin{bf}</samp>’-‘<samp>\end{bf}</samp>’ lines.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-group-format='\begin{em}
+%<\end{em}
+' \
+ --new-group-format='\begin{bf}
+%>\end{bf}
+' \
+ myfile
+</pre></div>
+
+<p>The following command is equivalent to the above example, but it is a
+little more verbose, because it spells out the default line group formats.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-group-format='\begin{em}
+%<\end{em}
+' \
+ --new-group-format='\begin{bf}
+%>\end{bf}
+' \
+ --unchanged-group-format='%=' \
+ --changed-group-format='\begin{em}
+%<\end{em}
+\begin{bf}
+%>\end{bf}
+' \
+ myfile
+</pre></div>
+
+<p>Here is a more advanced example, which outputs a diff listing with
+headers containing line numbers in a “plain English” style.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --unchanged-group-format='' \
+ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
+%<' \
+ --new-group-format='-------- %dN line%(N=1?:s) added after %de:
+%>' \
+ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
+%<-------- to:
+%>' \
+ myfile
+</pre></div>
+
+<p>To specify a line group format, use one of the options
+listed below. You can specify up to four line group formats, one for
+each kind of line group. You should quote <var>format</var>, because it
+typically contains shell metacharacters.
+</p>
+<dl compact="compact">
+<dt>‘<samp>--old-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing only lines from the first file.
+The default old group format is the same as the changed group format if
+it is specified; otherwise it is a format that outputs the line group as-is.
+</p>
+</dd>
+<dt>‘<samp>--new-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing only lines from the second
+file. The default new group format is same as the changed group
+format if it is specified; otherwise it is a format that outputs the
+line group as-is.
+</p>
+</dd>
+<dt>‘<samp>--changed-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing lines from both files. The
+default changed group format is the concatenation of the old and new
+group formats.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups contain lines common to both files. The default
+unchanged group format is a format that outputs the line group as-is.
+</p></dd>
+</dl>
+
+<p>In a line group format, ordinary characters represent themselves;
+conversion specifications start with ‘<samp>%</samp>’ and have one
of the
+following forms.
+</p>
+<dl compact="compact">
+<dt>‘<samp>%<</samp>’</dt>
+<dd><p>stands for the lines from the first file, including the trailing
newline.
+Each line is formatted according to the old line format (see <a
href="#Line-formats">Line formats</a>).
+</p>
+</dd>
+<dt>‘<samp>%></samp>’</dt>
+<dd><p>stands for the lines from the second file, including the trailing
newline.
+Each line is formatted according to the new line format.
+</p>
+</dd>
+<dt>‘<samp>%=</samp>’</dt>
+<dd><p>stands for the lines common to both files, including the trailing
newline.
+Each line is formatted according to the unchanged line format.
+</p>
+</dd>
+<dt>‘<samp>%%</samp>’</dt>
+<dd><p>stands for ‘<samp>%</samp>’.
+</p>
+</dd>
+<dt>‘<samp>%c'<var>C</var>'</samp>’</dt>
+<dd><p>where <var>C</var> is a single character, stands for <var>C</var>.
+<var>C</var> may not be a backslash or an apostrophe.
+For example, ‘<samp>%c':'</samp>’ stands for a colon, even inside
+the then-part of an if-then-else format, which a colon would
+normally terminate.
+</p>
+</dd>
+<dt>‘<samp>%c'\<var>O</var>'</samp>’</dt>
+<dd><p>where <var>O</var> is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code <var>O</var>.
+For example, ‘<samp>%c'\0'</samp>’ stands for a null character.
+</p>
+</dd>
+<dt>‘<samp><var>F</var><var>n</var></samp>’</dt>
+<dd><p>where <var>F</var> is a <code>printf</code> conversion specification
and <var>n</var> is one
+of the following letters, stands for <var>n</var>’s value formatted with
<var>F</var>.
+</p>
+<dl compact="compact">
+<dt>‘<samp>e</samp>’</dt>
+<dd><p>The line number of the line just before the group in the old file.
+</p>
+</dd>
+<dt>‘<samp>f</samp>’</dt>
+<dd><p>The line number of the first line in the group in the old file;
+equals <var>e</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>l</samp>’</dt>
+<dd><p>The line number of the last line in the group in the old file.
+</p>
+</dd>
+<dt>‘<samp>m</samp>’</dt>
+<dd><p>The line number of the line just after the group in the old file;
+equals <var>l</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>n</samp>’</dt>
+<dd><p>The number of lines in the group in the old file; equals <var>l</var> -
<var>f</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>E, F, L, M, N</samp>’</dt>
+<dd><p>Likewise, for lines in the new file.
+</p>
+</dd>
+</dl>
+
+<p>The <code>printf</code> conversion specification can be
‘<samp>%d</samp>’,
+‘<samp>%o</samp>’, ‘<samp>%x</samp>’, or
‘<samp>%X</samp>’, specifying decimal, octal,
+lower case hexadecimal, or upper case hexadecimal output
+respectively. After the ‘<samp>%</samp>’ the following options
can appear in
+sequence: a ‘<samp>-</samp>’ specifying left-justification; an
integer
+specifying the minimum field width; and a period followed by an
+optional integer specifying the minimum number of digits.
+For example, ‘<samp>%5dN</samp>’ prints the number of new lines in
the group
+in a field of width 5 characters, using the <code>printf</code> format
<code>"%5d"</code>.
+</p>
+</dd>
+<dt>‘<samp>(<var>A</var>=<var>B</var>?<var>T</var>:<var>E</var>)</samp>’</dt>
+<dd><p>If <var>A</var> equals <var>B</var> then <var>T</var> else <var>E</var>.
+<var>A</var> and <var>B</var> are each either a decimal constant
+or a single letter interpreted as above.
+This format spec is equivalent to <var>T</var> if
+<var>A</var>’s value equals <var>B</var>’s; otherwise it is
equivalent to <var>E</var>.
+</p>
+<p>For example, ‘<samp>%(N=0?no:%dN) line%(N=1?:s)</samp>’ is
equivalent to
+‘<samp>no lines</samp>’ if <var>N</var> (the number of lines in
the group in the
+new file) is 0, to ‘<samp>1 line</samp>’ if <var>N</var> is 1, and
to ‘<samp>%dN lines</samp>’
+otherwise.
+</p></dd>
+</dl>
+
+<hr>
+<a name="Line-formats"></a>
+<div class="header">
+<p>
+Previous: <a href="#Line-group-formats" accesskey="p" rel="prev">Line group
formats</a>, Up: <a href="#diff-options" accesskey="u" rel="up">diff
options</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Line-formats-1"></a>
+<h4 class="appendixsubsubsec">A.11.1.2 Line formats</h4>
+
+<p>Line formats control how each line taken from an input file is
+output as part of a line group in if-then-else format.
+</p>
+<p>For example, the following command outputs text with a one-column
+change indicator to the left of the text. The first column of output
+is ‘<samp>-</samp>’ for deleted lines,
‘<samp>|</samp>’ for added lines, and a space
+for unchanged lines. The formats contain newline characters where
+newlines are desired on output.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-line-format='-%l
+' \
+ --new-line-format='|%l
+' \
+ --unchanged-line-format=' %l
+' \
+ myfile
+</pre></div>
+
+<p>To specify a line format, use one of the following options. You should
+quote <var>format</var>, since it often contains shell metacharacters.
+</p>
+<dl compact="compact">
+<dt>‘<samp>--old-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines just from the first file.
+</p>
+</dd>
+<dt>‘<samp>--new-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines just from the second file.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines common to both files.
+</p>
+</dd>
+<dt>‘<samp>--line-format=<var>format</var></samp>’</dt>
+<dd><p>formats all lines; in effect, it sets all three above options
simultaneously.
+</p></dd>
+</dl>
+
+<p>In a line format, ordinary characters represent themselves;
+conversion specifications start with ‘<samp>%</samp>’ and have one
of the
+following forms.
+</p>
+<dl compact="compact">
+<dt>‘<samp>%l</samp>’</dt>
+<dd><p>stands for the contents of the line, not counting its trailing
+newline (if any). This format ignores whether the line is incomplete.
+</p>
+</dd>
+<dt>‘<samp>%L</samp>’</dt>
+<dd><p>stands for the contents of the line, including its trailing newline
+(if any). If a line is incomplete, this format preserves its
+incompleteness.
+</p>
+</dd>
+<dt>‘<samp>%%</samp>’</dt>
+<dd><p>stands for ‘<samp>%</samp>’.
+</p>
+</dd>
+<dt>‘<samp>%c'<var>C</var>'</samp>’</dt>
+<dd><p>where <var>C</var> is a single character, stands for <var>C</var>.
+<var>C</var> may not be a backslash or an apostrophe.
+For example, ‘<samp>%c':'</samp>’ stands for a colon.
+</p>
+</dd>
+<dt>‘<samp>%c'\<var>O</var>'</samp>’</dt>
+<dd><p>where <var>O</var> is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code <var>O</var>.
+For example, ‘<samp>%c'\0'</samp>’ stands for a null character.
+</p>
+</dd>
+<dt>‘<samp><var>F</var>n</samp>’</dt>
+<dd><p>where <var>F</var> is a <code>printf</code> conversion specification,
+stands for the line number formatted with <var>F</var>.
+For example, ‘<samp>%.5dn</samp>’ prints the line number using the
+<code>printf</code> format <code>"%.5d"</code>. See <a
href="#Line-group-formats">Line group formats</a>, for
+more about printf conversion specifications.
+</p>
+</dd>
+</dl>
+
+<p>The default line format is ‘<samp>%l</samp>’ followed by a
newline character.
+</p>
+<p>If the input contains tab characters and it is important that they line
+up on output, you should ensure that ‘<samp>%l</samp>’ or
‘<samp>%L</samp>’ in a line
+format is just after a tab stop (e.g. by preceding
‘<samp>%l</samp>’ or
+‘<samp>%L</samp>’ with a tab character), or you should use the
‘<samp>-t</samp>’ or
+‘<samp>--expand-tabs</samp>’ option.
+</p>
+<p>Taken together, the line and line group formats let you specify many
+different formats. For example, the following command uses a format
+similar to <code>diff</code>’s normal format. You can tailor this
command
+to get fine control over <code>diff</code>’s output.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-line-format='< %l
+' \
+ --new-line-format='> %l
+' \
+ --old-group-format='%df%(f=l?:,%dl)d%dE
+%<' \
+ --new-group-format='%dea%dF%(F=L?:,%dL)
+%>' \
+ --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
+%<---
+%>' \
+ --unchanged-group-format='' \
+ myfile
+</pre></div>
+
+<hr>
+<a name="diff-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#diff-options" accesskey="p" rel="prev">diff options</a>,
Up: <a href="#diff" accesskey="u" rel="up">diff</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="diff-examples-1"></a>
+<h4 class="appendixsubsec">A.11.2 diff examples</h4>
+
+<p>The following line produces a Unidiff (‘<samp>-u</samp>’ flag)
+between revision 1.14 and 1.19 of
+<samp>backend.c</samp>. Due to the ‘<samp>-kk</samp>’ flag no
+keywords are substituted, so differences that only depend
+on keyword substitution are ignored.
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+</pre></div>
+
+<p>Suppose the experimental branch EXPR1 was based on a
+set of files tagged RELEASE_1_0. To see what has
+happened on that branch, the following can be used:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -r RELEASE_1_0 -r EXPR1
+</pre></div>
+
+<p>A command like this can be used to produce a context
+diff between two releases:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+</pre></div>
+
+<p>If you are maintaining ChangeLogs, a command like the following
+just before you commit your changes may help you write
+the ChangeLog entry. All local modifications that have
+not yet been committed will be printed.
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -u | less
+</pre></div>
+
+<hr>
+<a name="export"></a>
+<div class="header">
+<p>
+Next: <a href="#history" accesskey="n" rel="next">history</a>, Previous: <a
href="#diff" accesskey="p" rel="prev">diff</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a
name="export_002d_002d_002dExport-sources-from-CVS_002c-similar-to-checkout"></a>
+<h3 class="appendixsec">A.12 export—Export sources from CVS, similar to
checkout</h3>
+<a name="index-export-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir]
module…
+</li><li> Requires: repository.
+</li><li> Changes: current directory.
+</li></ul>
+
+<p>This command is a variant of <code>checkout</code>; use it
+when you want a copy of the source for module without
+the <small>CVS</small> administrative directories. For example, you
+might use <code>export</code> to prepare source for shipment
+off-site. This command requires that you specify a
+date or tag (with ‘<samp>-D</samp>’ or
‘<samp>-r</samp>’), so that you
+can count on reproducing the source you ship to others
+(and thus it always prunes empty directories).
+</p>
+<p>One often would like to use ‘<samp>-kv</samp>’ with <code>cvs
+export</code>. This causes any keywords to be
+expanded such that an import done at some other site
+will not lose the keyword revision information. But be
+aware that doesn’t handle an export containing binary
+files correctly. Also be aware that after having used
+‘<samp>-kv</samp>’, one can no longer use the <code>ident</code>
+command (which is part of the <small>RCS</small> suite—see
+ident(1)) which looks for keyword strings. If
+you want to be able to use <code>ident</code> you must not
+use ‘<samp>-kv</samp>’.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#export-options"
accesskey="1">export options</a>:</td><td> </td><td align="left"
valign="top">export options
+</td></tr>
+</table>
+
+<hr>
+<a name="export-options"></a>
+<div class="header">
+<p>
+Up: <a href="#export" accesskey="u" rel="up">export</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="export-options-1"></a>
+<h4 class="appendixsubsec">A.12.1 export options</h4>
+
+<p>These standard options are supported by <code>export</code>
+(see <a href="#Common-options">Common options</a>, for a complete description
of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any checkout program.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Export directories recursively. This is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>In addition, these options (that are common to
+<code>checkout</code> and <code>export</code>) are also supported:
+</p>
+<dl compact="compact">
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Create a directory called <var>dir</var> for the working
+files, instead of using the module name.
+See <a href="#checkout-options">checkout options</a> for complete details on
how
+<small>CVS</small> handles this flag.
+</p>
+</dd>
+<dt><code>-k <var>subst</var></code></dt>
+<dd><p>Set keyword expansion mode (see <a
href="#Substitution-modes">Substitution modes</a>).
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Only useful together with ‘<samp>-d <var>dir</var></samp>’.
+See <a href="#checkout-options">checkout options</a> for complete details on
how
+<small>CVS</small> handles this flag.
+</p></dd>
+</dl>
+
+
+<hr>
+<a name="history"></a>
+<div class="header">
+<p>
+Next: <a href="#import" accesskey="n" rel="next">import</a>, Previous: <a
href="#export" accesskey="p" rel="prev">export</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="history_002d_002d_002dShow-status-of-files-and-users"></a>
+<h3 class="appendixsec">A.13 history—Show status of files and users</h3>
+<a name="index-history-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: history [-report] [-flags] [-options args] [files…]
+</li><li> Requires: the file <samp>$CVSROOT/CVSROOT/history</samp>
+</li><li> Changes: nothing.
+</li></ul>
+
+<p><small>CVS</small> can keep a history file that tracks each use of the
+<code>checkout</code>, <code>commit</code>, <code>rtag</code>,
+<code>update</code>, and <code>release</code> commands. You can
+use <code>history</code> to display this information in
+various formats.
+</p>
+<p>Logging must be enabled by creating the file
+<samp>$CVSROOT/CVSROOT/history</samp>.
+</p>
+<p><strong><code>history</code> uses ‘<samp>-f</samp>’,
‘<samp>-l</samp>’,
+‘<samp>-n</samp>’, and ‘<samp>-p</samp>’ in ways that
conflict with the
+normal use inside <small>CVS</small> (see <a href="#Common-options">Common
options</a>).</strong>
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#history-options"
accesskey="1">history options</a>:</td><td> </td><td align="left"
valign="top">history options
+</td></tr>
+</table>
+
+<hr>
+<a name="history-options"></a>
+<div class="header">
+<p>
+Up: <a href="#history" accesskey="u" rel="up">history</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="history-options-1"></a>
+<h4 class="appendixsubsec">A.13.1 history options</h4>
+
+<p>Several options (shown above as ‘<samp>-report</samp>’)
control what
+kind of report is generated:
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Report on each time commit was used (i.e., each time
+the repository was modified).
+</p>
+</dd>
+<dt><code>-e</code></dt>
+<dd><p>Everything (all record types). Equivalent to
+specifying ‘<samp>-x</samp>’ with all record types. Of course,
+‘<samp>-e</samp>’ will also include record types which are
+added in a future version of <small>CVS</small>; if you are
+writing a script which can only handle certain record
+types, you’ll want to specify ‘<samp>-x</samp>’.
+</p>
+</dd>
+<dt><code>-m <var>module</var></code></dt>
+<dd><p>Report on a particular module. (You can meaningfully
+use ‘<samp>-m</samp>’ more than once on the command line.)
+</p>
+</dd>
+<dt><code>-o</code></dt>
+<dd><p>Report on checked-out modules. This is the default report type.
+</p>
+</dd>
+<dt><code>-T</code></dt>
+<dd><p>Report on all tags.
+</p>
+</dd>
+<dt><code>-x <var>type</var></code></dt>
+<dd><p>Extract a particular set of record types <var>type</var> from the
<small>CVS</small>
+history. The types are indicated by single letters,
+which you may specify in combination.
+</p>
+<p>Certain commands have a single record type:
+</p>
+<dl compact="compact">
+<dt><code>F</code></dt>
+<dd><p>release
+</p></dd>
+<dt><code>O</code></dt>
+<dd><p>checkout
+</p></dd>
+<dt><code>E</code></dt>
+<dd><p>export
+</p></dd>
+<dt><code>T</code></dt>
+<dd><p>rtag
+</p></dd>
+</dl>
+
+<p>One of five record types may result from an update:
+</p>
+<dl compact="compact">
+<dt><code>C</code></dt>
+<dd><p>A merge was necessary but collisions were
+detected (requiring manual merging).
+</p></dd>
+<dt><code>G</code></dt>
+<dd><p>A merge was necessary and it succeeded.
+</p></dd>
+<dt><code>U</code></dt>
+<dd><p>A working file was copied from the repository.
+</p></dd>
+<dt><code>P</code></dt>
+<dd><p>A working file was patched to match the repository.
+</p></dd>
+<dt><code>W</code></dt>
+<dd><p>The working copy of a file was deleted during
+update (because it was gone from the repository).
+</p></dd>
+</dl>
+
+<p>One of three record types results from commit:
+</p>
+<dl compact="compact">
+<dt><code>A</code></dt>
+<dd><p>A file was added for the first time.
+</p></dd>
+<dt><code>M</code></dt>
+<dd><p>A file was modified.
+</p></dd>
+<dt><code>R</code></dt>
+<dd><p>A file was removed.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The options shown as ‘<samp>-flags</samp>’ constrain or expand
+the report without requiring option arguments:
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>Show data for all users (the default is to show data
+only for the user executing <code>history</code>).
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Show last modification only.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Show only the records for modifications done from the
+same working directory where <code>history</code> is
+executing.
+</p></dd>
+</dl>
+
+<p>The options shown as ‘<samp>-options <var>args</var></samp>’
constrain the report
+based on an argument:
+</p>
+<dl compact="compact">
+<dt><code>-b <var>str</var></code></dt>
+<dd><p>Show data back to a record containing the string
+<var>str</var> in either the module name, the file name, or
+the repository path.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Show data since <var>date</var>. This is slightly different
+from the normal use of ‘<samp>-D <var>date</var></samp>’, which
+selects the newest revision older than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f <var>file</var></code></dt>
+<dd><p>Show data for a particular file
+(you can specify several ‘<samp>-f</samp>’ options on the same
command line).
+This is equivalent to specifying the file on the command line.
+</p>
+</dd>
+<dt><code>-n <var>module</var></code></dt>
+<dd><p>Show data for a particular module
+(you can specify several ‘<samp>-n</samp>’ options on the same
command line).
+</p>
+</dd>
+<dt><code>-p <var>repository</var></code></dt>
+<dd><p>Show data for a particular source repository (you
+can specify several ‘<samp>-p</samp>’ options on the same command
+line).
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Show records referring to revisions since the revision
+or tag named <var>rev</var> appears in individual <small>RCS</small>
+files. Each <small>RCS</small> file is searched for the revision or
+tag.
+</p>
+</dd>
+<dt><code>-t <var>tag</var></code></dt>
+<dd><p>Show records since tag <var>tag</var> was last added to the
+history file. This differs from the ‘<samp>-r</samp>’ flag
+above in that it reads only the history file, not the
+<small>RCS</small> files, and is much faster.
+</p>
+</dd>
+<dt><code>-u <var>name</var></code></dt>
+<dd><p>Show records for user <var>name</var>.
+</p>
+</dd>
+<dt><code>-z <var>timezone</var></code></dt>
+<dd><p>Show times in the selected records using the specified
+time zone instead of UTC.
+</p></dd>
+</dl>
+
+
+<hr>
+<a name="import"></a>
+<div class="header">
+<p>
+Next: <a href="#log" accesskey="n" rel="next">log</a>, Previous: <a
href="#history" accesskey="p" rel="prev">history</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a
name="import_002d_002d_002dImport-sources-into-CVS_002c-using-vendor-branches"></a>
+<h3 class="appendixsec">A.14 import—Import sources into CVS, using
vendor branches</h3>
+<a name="index-import-_0028subcommand_0029"></a>
+
+
+<ul>
+<li> Synopsis: import [-options] repository vendortag releasetag…
+</li><li> Requires: Repository, source distribution directory.
+</li><li> Changes: repository.
+</li></ul>
+
+<p>Use <code>import</code> to incorporate an entire source
+distribution from an outside source (e.g., a source
+vendor) into your source repository directory. You can
+use this command both for initial creation of a
+repository, and for wholesale updates to the module
+from the outside source. See <a href="#Tracking-sources">Tracking sources</a>
for
+a discussion on this subject.
+</p>
+<p>The <var>repository</var> argument gives a directory name
+(or a path to a directory) under the <small>CVS</small> root directory
+for repositories; if the directory did not exist,
+import creates it.
+</p>
+<p>When you use import for updates to source that has been
+modified in your source repository (since a prior
+import), it will notify you of any files that conflict
+in the two branches of development; use ‘<samp>checkout
+-j</samp>’ to reconcile the differences, as import instructs
+you to do.
+</p>
+<p>If <small>CVS</small> decides a file should be ignored
+(see <a href="#cvsignore">cvsignore</a>), it does not import it and prints
+‘<samp>I </samp>’ followed by the filename (see <a
href="#import-output">import output</a> for a
+complete description of the output).
+</p>
+<p>If the file <samp>$CVSROOT/CVSROOT/cvswrappers</samp> exists,
+any file whose names match the specifications in that
+file will be treated as packages and the appropriate
+filtering will be performed on the file/directory
+before being imported. See <a href="#Wrappers">Wrappers</a>.
+</p>
+<p>The outside source is saved in a first-level
+branch, by default 1.1.1. Updates are leaves of this
+branch; for example, files from the first imported
+collection of source will be revision 1.1.1.1, then
+files from the first imported update will be revision
+1.1.1.2, and so on.
+</p>
+<p>At least three arguments are required.
+<var>repository</var> is needed to identify the collection
+of source. <var>vendortag</var> is a tag for the entire
+branch (e.g., for 1.1.1). You must also specify at
+least one <var>releasetag</var> to uniquely identify the files at
+the leaves created each time you execute <code>import</code>. The
+<var>releasetag</var> should be new, not previously existing in the
+repository file, and uniquely identify the imported release,
+</p>
+<p>Note that <code>import</code> does <em>not</em> change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a <small>CVS</small> working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (see <a href="#Getting-the-source">Getting the source</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#import-options"
accesskey="1">import options</a>:</td><td> </td><td align="left"
valign="top">import options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#import-output"
accesskey="2">import output</a>:</td><td> </td><td align="left"
valign="top">import output
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#import-examples"
accesskey="3">import examples</a>:</td><td> </td><td align="left"
valign="top">import examples
+</td></tr>
+</table>
+
+<hr>
+<a name="import-options"></a>
+<div class="header">
+<p>
+Next: <a href="#import-output" accesskey="n" rel="next">import output</a>, Up:
<a href="#import" accesskey="u" rel="up">import</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="import-options-1"></a>
+<h4 class="appendixsubsec">A.14.1 import options</h4>
+
+<p>This standard option is supported by <code>import</code>
+(see <a href="#Common-options">Common options</a> for a complete description):
+</p>
+<dl compact="compact">
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as log information, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+<p>There are the following additional special options.
+</p>
+<dl compact="compact">
+<dt><code>-b <var>branch</var></code></dt>
+<dd><p>See <a href="#Multiple-vendor-branches">Multiple vendor branches</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Use each file’s modification time as the time of import
+rather than the current time.
+</p>
+</dd>
+<dt><code>-k <var>subst</var></code></dt>
+<dd><p>Indicate the keyword expansion mode desired. This
+setting will apply to all files created during the
+import, but not to any files that previously existed in
+the repository. See <a href="#Substitution-modes">Substitution modes</a> for a
+list of valid ‘<samp>-k</samp>’ settings.
+</p>
+</dd>
+<dt><code>-I <var>name</var></code></dt>
+<dd><p>Specify file names that should be ignored during
+import. You can use this option repeatedly. To avoid
+ignoring any files at all (even those ignored by
+default), specify ‘-I !’.
+</p>
+<p><var>name</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvsignore</samp> file.
+See <a href="#cvsignore">cvsignore</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>Specify file names that should be filtered during
+import. You can use this option repeatedly.
+</p>
+<p><var>spec</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvswrappers</samp>
+file. See <a href="#Wrappers">Wrappers</a>.
+</p></dd>
+</dl>
+
+<hr>
+<a name="import-output"></a>
+<div class="header">
+<p>
+Next: <a href="#import-examples" accesskey="n" rel="next">import examples</a>,
Previous: <a href="#import-options" accesskey="p" rel="prev">import
options</a>, Up: <a href="#import" accesskey="u" rel="up">import</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="import-output-1"></a>
+<h4 class="appendixsubsec">A.14.2 import output</h4>
+
+<p><code>import</code> keeps you informed of its progress by printing a line
+for each file, preceded by one character indicating the status of the file:
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dd><p>The file already exists in the repository and has not been locally
+modified; a new revision has been created (if necessary).
+</p>
+</dd>
+<dt><code>N <var>file</var></code></dt>
+<dd><p>The file is a new file which has been added to the repository.
+</p>
+</dd>
+<dt><code>C <var>file</var></code></dt>
+<dd><p>The file already exists in the repository but has been locally modified;
+you will have to merge the changes.
+</p>
+</dd>
+<dt><code>I <var>file</var></code></dt>
+<dd><p>The file is being ignored (see <a href="#cvsignore">cvsignore</a>).
+</p>
+<a name="index-Symbolic-link_002c-importing"></a>
+<a name="index-Link_002c-symbolic_002c-importing"></a>
+</dd>
+<dt><code>L <var>file</var></code></dt>
+<dd><p>The file is a symbolic link; <code>cvs import</code> ignores symbolic
links.
+People periodically suggest that this behavior should
+be changed, but if there is a consensus on what it
+should be changed to, it doesn’t seem to be apparent.
+(Various options in the <samp>modules</samp> file can be used
+to recreate symbolic links on checkout, update, etc.;
+see <a href="#modules">modules</a>.)
+</p></dd>
+</dl>
+
+<hr>
+<a name="import-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#import-output" accesskey="p" rel="prev">import output</a>,
Up: <a href="#import" accesskey="u" rel="up">import</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="import-examples-1"></a>
+<h4 class="appendixsubsec">A.14.3 import examples</h4>
+
+<p>See <a href="#Tracking-sources">Tracking sources</a>, and <a
href="#From-files">From files</a>.
+</p>
+<hr>
+<a name="log"></a>
+<div class="header">
+<p>
+Next: <a href="#rdiff" accesskey="n" rel="next">rdiff</a>, Previous: <a
href="#import" accesskey="p" rel="prev">import</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="log_002d_002d_002dPrint-out-log-information-for-files"></a>
+<h3 class="appendixsec">A.15 log—Print out log information for files</h3>
+<a name="index-log-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: log [options] [files…]
+</li><li> Requires: repository, working directory.
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>Display log information for files. <code>log</code> used to
+call the <small>RCS</small> utility <code>rlog</code>. Although this
+is no longer true in the current sources, this history
+determines the format of the output and the options,
+which are not quite in the style of the other <small>CVS</small>
+commands.
+</p>
+<a name="index-Timezone_002c-in-output"></a>
+<a name="index-Zone_002c-time_002c-in-output"></a>
+<p>The output includes the location of the <small>RCS</small> file,
+the <em>head</em> revision (the latest revision on the
+trunk), all symbolic names (tags) and some other
+things. For each revision, the revision number, the
+author, the number of lines added/deleted and the log
+message are printed. All times are displayed in
+Coordinated Universal Time (UTC). (Other parts of
+<small>CVS</small> print times in the local timezone).
+</p>
+<p><strong><code>log</code> uses ‘<samp>-R</samp>’ in a way that
conflicts
+with the normal use inside <small>CVS</small> (see <a
href="#Common-options">Common options</a>).</strong>
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#log-options"
accesskey="1">log options</a>:</td><td> </td><td align="left"
valign="top">log options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#log-examples"
accesskey="2">log examples</a>:</td><td> </td><td align="left"
valign="top">log examples
+</td></tr>
+</table>
+
+<hr>
+<a name="log-options"></a>
+<div class="header">
+<p>
+Next: <a href="#log-examples" accesskey="n" rel="next">log examples</a>, Up:
<a href="#log" accesskey="u" rel="up">log</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="log-options-1"></a>
+<h4 class="appendixsubsec">A.15.1 log options</h4>
+
+<p>By default, <code>log</code> prints all information that is
+available. All other options restrict the output. Note that the revision
+selection options (<code>-b</code>, <code>-d</code>, <code>-r</code>,
<code>-s</code>, and <code>-w</code>)
+have no
+effect, other than possibly causing a search for files in Attic directories,
+when used in conjunction with the options that restrict the output to only
+<code>log</code> header fields (<code>-h</code>, <code>-R</code>, and
<code>-t</code>)
+unless the <code>-S</code> option is also specified.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Print information about the revisions on the default
+branch, normally the highest branch on the trunk.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Print information about revisions with a checkin
+date/time in the range given by the
+semicolon-separated list of dates. The date formats
+accepted are those accepted by the ‘<samp>-D</samp>’ option to
+many other <small>CVS</small> commands (see <a href="#Common-options">Common
options</a>).
+Dates can be combined into ranges as follows:
+</p>
+<dl compact="compact">
+<dt><code><var>d1</var><<var>d2</var></code></dt>
+<dt><code><var>d2</var>><var>d1</var></code></dt>
+<dd><p>Select the revisions that were deposited between
+<var>d1</var> and <var>d2</var>.
+</p>
+</dd>
+<dt><code><<var>d</var></code></dt>
+<dt><code><var>d</var>></code></dt>
+<dd><p>Select all revisions dated <var>d</var> or earlier.
+</p>
+</dd>
+<dt><code><var>d</var><</code></dt>
+<dt><code>><var>d</var></code></dt>
+<dd><p>Select all revisions dated <var>d</var> or later.
+</p>
+</dd>
+<dt><code><var>d</var></code></dt>
+<dd><p>Select the single, latest revision dated <var>d</var> or
+earlier.
+</p></dd>
+</dl>
+
+<p>The ‘<samp>></samp>’ or ‘<samp><</samp>’
characters may be followed by
+‘<samp>=</samp>’ to indicate an inclusive range rather than an
+exclusive one.
+</p>
+<p>Note that the separator is a semicolon (;).
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Print only the name of the <small>RCS</small> file, name
+of the file in the working directory, head,
+default branch, access list, locks, symbolic names, and
+suffix.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. (Default
+is to run recursively).
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not print the list of tags for this file. This
+option can be very useful when your site uses a lot of
+tags, so rather than "more"’ing over 3 pages of tag
+information, the log information is presented without
+tags at all.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Print the list of tags for this file. This option can
+be very useful when your <samp>.cvsrc</samp> file has a
+‘<samp>log -N</samp>’ entry as a way to get a full list of all
+of the tags.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Print only the name of the <small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-r<var>revisions</var></code></dt>
+<dd><p>Print information about revisions given in the
+comma-separated list <var>revisions</var> of revisions and
+ranges. The following table explains the available
+range formats:
+</p>
+<dl compact="compact">
+<dt><code><var>rev1</var>:<var>rev2</var></code></dt>
+<dd><p>Revisions <var>rev1</var> to <var>rev2</var> (which must be on
+the same branch).
+</p>
+</dd>
+<dt><code><var>rev1</var>::<var>rev2</var></code></dt>
+<dd><p>The same, but excluding <var>rev1</var>.
+</p>
+</dd>
+<dt><code>:<var>rev</var></code></dt>
+<dt><code>::<var>rev</var></code></dt>
+<dd><p>Revisions from the beginning of the branch up to
+and including <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>:</code></dt>
+<dd><p>Revisions starting with <var>rev</var> to the end of the
+branch containing <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>::</code></dt>
+<dd><p>Revisions starting just after <var>rev</var> to the end of the
+branch containing <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>branch</var></code></dt>
+<dd><p>An argument that is a branch means all revisions on
+that branch.
+</p>
+</dd>
+<dt><code><var>branch1</var>:<var>branch2</var></code></dt>
+<dt><code><var>branch1</var>::<var>branch2</var></code></dt>
+<dd><p>A range of branches means all revisions
+on the branches in that range.
+</p>
+</dd>
+<dt><code><var>branch</var>.</code></dt>
+<dd><p>The latest revision in <var>branch</var>.
+</p></dd>
+</dl>
+
+<p>A bare ‘<samp>-r</samp>’ with no revisions means the latest
+revision on the default branch, normally the trunk.
+There can be no space between the ‘<samp>-r</samp>’ option and
+its argument.
+</p>
+</dd>
+<dt><code>-S</code></dt>
+<dd><p>Suppress the header if no revisions are selected.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Print information about revisions whose state
+attributes match one of the states given in the
+comma-separated list <var>states</var>. Individual states may
+be any text string, though <small>CVS</small> commonly only uses two
+states, ‘<samp>Exp</samp>’ and ‘<samp>dead</samp>’.
See <a href="#admin-options">admin options</a>
+for more information.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Print the same as ‘<samp>-h</samp>’, plus the descriptive
text.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Print information about revisions checked in by users
+with login names appearing in the comma-separated list
+<var>logins</var>. If <var>logins</var> is omitted, the user’s
+login is assumed. There can be no space between the
+‘<samp>-w</samp>’ option and its argument.
+</p></dd>
+</dl>
+
+<p><code>log</code> prints the intersection of the revisions
+selected with the options ‘<samp>-d</samp>’,
‘<samp>-s</samp>’, and
+‘<samp>-w</samp>’, intersected with the union of the revisions
+selected by ‘<samp>-b</samp>’ and ‘<samp>-r</samp>’.
+</p>
+<hr>
+<a name="log-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#log-options" accesskey="p" rel="prev">log options</a>, Up:
<a href="#log" accesskey="u" rel="up">log</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="log-examples-1"></a>
+<h4 class="appendixsubsec">A.15.2 log examples</h4>
+
+<p>Contributed examples are gratefully accepted.
+</p>
+<hr>
+<a name="rdiff"></a>
+<div class="header">
+<p>
+Next: <a href="#release" accesskey="n" rel="next">release</a>, Previous: <a
href="#log" accesskey="p" rel="prev">log</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a
name="rdiff_002d_002d_002d_0027patch_0027-format-diffs-between-releases"></a>
+<h3 class="appendixsec">A.16 rdiff—’patch’ format diffs
between releases</h3>
+<a name="index-rdiff-_0028subcommand_0029"></a>
+
+<ul>
+<li> rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules…
+</li><li> Requires: repository.
+</li><li> Changes: nothing.
+</li><li> Synonym: patch
+</li></ul>
+
+<p>Builds a Larry Wall format patch(1) file between two
+releases, that can be fed directly into the <code>patch</code>
+program to bring an old release up-to-date with the new
+release. (This is one of the few <small>CVS</small> commands that
+operates directly from the repository, and doesn’t
+require a prior checkout.) The diff output is sent to
+the standard output device.
+</p>
+<p>You can specify (using the standard ‘<samp>-r</samp>’ and
+‘<samp>-D</samp>’ options) any combination of one or two
+revisions or dates. If only one revision or date is
+specified, the patch file reflects differences between
+that revision or date and the current head revisions in
+the <small>RCS</small> file.
+</p>
+<p>Note that if the software release affected is contained
+in more than one directory, then it may be necessary to
+specify the ‘<samp>-p</samp>’ option to the <code>patch</code>
command when
+patching the old sources, so that <code>patch</code> is able to find
+the files that are located in other directories.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#rdiff-options"
accesskey="1">rdiff options</a>:</td><td> </td><td align="left"
valign="top">rdiff options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#rdiff-examples"
accesskey="2">rdiff examples</a>:</td><td> </td><td align="left"
valign="top">rdiff examples
+</td></tr>
+</table>
+
+<hr>
+<a name="rdiff-options"></a>
+<div class="header">
+<p>
+Next: <a href="#rdiff-examples" accesskey="n" rel="next">rdiff examples</a>,
Up: <a href="#rdiff" accesskey="u" rel="up">rdiff</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="rdiff-options-1"></a>
+<h4 class="appendixsubsec">A.16.1 rdiff options</h4>
+
+<p>These standard options are supported by <code>rdiff</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; don’t descend subdirectories.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Examine directories recursively. This option is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>In addition to the above, these options are available:
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Use the context diff format. This is the default format.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Create a summary change report instead of a patch. The
+summary includes information about files that were
+changed or added between the releases. It is sent to
+the standard output device. This is useful for finding
+out, for example, which files have changed between two
+dates or revisions.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>A diff of the top two revisions is sent to the standard
+output device. This is most useful for seeing what the
+last change to a file was.
+</p>
+</dd>
+<dt><code>-u</code></dt>
+<dd><p>Use the unidiff format for the context diffs.
+Remember that old versions
+of the <code>patch</code> program can’t handle the unidiff
+format, so if you plan to post this patch to the net
+you should probably not use ‘<samp>-u</samp>’.
+</p>
+</dd>
+<dt><code>-V <var>vn</var></code></dt>
+<dd><p>Expand keywords according to the rules current in
+<small>RCS</small> version <var>vn</var> (the expansion format changed with
+<small>RCS</small> version 5). Note that this option is no
+longer accepted. <small>CVS</small> will always expand keywords the
+way that <small>RCS</small> version 5 does.
+</p></dd>
+</dl>
+
+<hr>
+<a name="rdiff-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#rdiff-options" accesskey="p" rel="prev">rdiff options</a>,
Up: <a href="#rdiff" accesskey="u" rel="up">rdiff</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="rdiff-examples-1"></a>
+<h4 class="appendixsubsec">A.16.2 rdiff examples</h4>
+
+<p>Suppose you receive mail from <tt>address@hidden</tt> asking for an
+update from release 1.2 to 1.4 of the tc compiler. You
+have no such patches on hand, but with <small>CVS</small> that can
+easily be fixed with a command such as this:
+</p>
+<div class="example">
+<pre class="example">$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
+> Mail -s 'The patches you asked for' address@hidden
+</pre></div>
+
+<p>Suppose you have made release 1.3, and forked a branch
+called ‘<samp>R_1_3fix</samp>’ for bug fixes.
‘<samp>R_1_3_1</samp>’
+corresponds to release 1.3.1, which was made some time
+ago. Now, you want to see how much development has been
+done on the branch. This command can be used:
+</p>
+<div class="example">
+<pre class="example">$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
+cvs rdiff: Diffing module-name
+File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
+File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
+File bar.h,v changed from revision 1.29.2.1 to 1.2
+</pre></div>
+
+<hr>
+<a name="release"></a>
+<div class="header">
+<p>
+Next: <a href="#remove" accesskey="n" rel="next">remove</a>, Previous: <a
href="#rdiff" accesskey="p" rel="prev">rdiff</a>, Up: <a href="#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="release_002d_002d_002dIndicate-that-a-Module-is-no-longer-in-use"></a>
+<h3 class="appendixsec">A.17 release—Indicate that a Module is no longer
in use</h3>
+<a name="index-release-_0028subcommand_0029"></a>
+
+<ul>
+<li> release [-d] directories…
+</li><li> Requires: Working directory.
+</li><li> Changes: Working directory, history log.
+</li></ul>
+
+<p>This command is meant to safely cancel the effect of
+‘<samp>cvs checkout</samp>’. Since <small>CVS</small>
doesn’t lock files, it
+isn’t strictly necessary to use this command. You can
+always simply delete your working directory, if you
+like; but you risk losing changes you may have
+forgotten, and you leave no trace in the <small>CVS</small> history
+file (see <a href="#history-file">history file</a>) that you’ve
abandoned your
+checkout.
+</p>
+<p>Use ‘<samp>cvs release</samp>’ to avoid these problems. This
+command checks that no uncommitted changes are
+present; that you are executing it from immediately
+above a <small>CVS</small> working directory; and that the repository
+recorded for your files is the same as the repository
+defined in the module database.
+</p>
+<p>If all these conditions are true, ‘<samp>cvs release</samp>’
+leaves a record of its execution (attesting to your
+intentionally abandoning your checkout) in the <small>CVS</small>
+history log.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#release-options"
accesskey="1">release options</a>:</td><td> </td><td align="left"
valign="top">release options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#release-output"
accesskey="2">release output</a>:</td><td> </td><td align="left"
valign="top">release output
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#release-examples"
accesskey="3">release examples</a>:</td><td> </td><td align="left"
valign="top">release examples
+</td></tr>
+</table>
+
+<hr>
+<a name="release-options"></a>
+<div class="header">
+<p>
+Next: <a href="#release-output" accesskey="n" rel="next">release output</a>,
Up: <a href="#release" accesskey="u" rel="up">release</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="release-options-1"></a>
+<h4 class="appendixsubsec">A.17.1 release options</h4>
+
+<p>The <code>release</code> command supports one command option:
+</p>
+<dl compact="compact">
+<dt><code>-d</code></dt>
+<dd><p>Delete your working copy of the file if the release
+succeeds. If this flag is not given your files will
+remain in your working directory.
+</p>
+<p><strong>WARNING: The <code>release</code> command deletes
+all directories and files recursively. This
+has the very serious side-effect that any directory
+created inside checked-out sources, and not added to
+the repository (using the <code>add</code> command;
+see <a href="#Adding-files">Adding files</a>) will be silently
deleted—even
+if it is non-empty!</strong>
+</p></dd>
+</dl>
+
+<hr>
+<a name="release-output"></a>
+<div class="header">
+<p>
+Next: <a href="#release-examples" accesskey="n" rel="next">release
examples</a>, Previous: <a href="#release-options" accesskey="p"
rel="prev">release options</a>, Up: <a href="#release" accesskey="u"
rel="up">release</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="release-output-1"></a>
+<h4 class="appendixsubsec">A.17.2 release output</h4>
+
+<p>Before <code>release</code> releases your sources it will
+print a one-line message for any file that is not
+up-to-date.
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dt><code>P <var>file</var></code></dt>
+<dd><p>There exists a newer revision of this file in the
+repository, and you have not modified your local copy
+of the file (‘<samp>U</samp>’ and ‘<samp>P</samp>’
mean the same thing).
+</p>
+</dd>
+<dt><code>A <var>file</var></code></dt>
+<dd><p>The file has been added to your private copy of the
+sources, but has not yet been committed to the
+repository. If you delete your copy of the sources
+this file will be lost.
+</p>
+</dd>
+<dt><code>R <var>file</var></code></dt>
+<dd><p>The file has been removed from your private copy of the
+sources, but has not yet been removed from the
+repository, since you have not yet committed the
+removal. See <a href="#commit">commit</a>.
+</p>
+</dd>
+<dt><code>M <var>file</var></code></dt>
+<dd><p>The file is modified in your working directory. There
+might also be a newer revision inside the repository.
+</p>
+</dd>
+<dt><code>? <var>file</var></code></dt>
+<dd><p><var>file</var> is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for <small>CVS</small> to ignore (see the
+description of the ‘<samp>-I</samp>’ option, and
+see <a href="#cvsignore">cvsignore</a>). If you remove your working
+sources, this file will be lost.
+</p></dd>
+</dl>
+
+<hr>
+<a name="release-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#release-output" accesskey="p" rel="prev">release
output</a>, Up: <a href="#release" accesskey="u" rel="up">release</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="release-examples-1"></a>
+<h4 class="appendixsubsec">A.17.3 release examples</h4>
+
+<p>Release the <samp>tc</samp> directory, and delete your local working copy
+of the files.
+</p>
+<div class="example">
+<pre class="example">$ cd .. # <span class="roman">You must stand
immediately above the</span>
+ # <span class="roman">sources when you issue ‘<samp>cvs
release</samp>’.</span>
+$ cvs release -d tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+$
+</pre></div>
+
+<hr>
+<a name="remove"></a>
+<div class="header">
+<p>
+Next: <a href="#update" accesskey="n" rel="next">update</a>, Previous: <a
href="#release" accesskey="p" rel="prev">release</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remove_002d_002d_002dRemove-files-from-active-use"></a>
+<h3 class="appendixsec">A.18 remove—Remove files from active use</h3>
+<a name="index-remove-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: remove [-flR] [files...]
+</li><li> Requires: repository, working directory.
+</li><li> Changes: working directory.
+</li></ul>
+
+<p>The <code>remove</code> command is used to remove unwanted
+files from active use. The user normally deletes the
+files from the working directory prior to invocation
+of the <code>remove</code> command. Only the working
+directory is updated. Changes to the repository are
+not made until the <code>commit</code> command is run.
+</p>
+<p>The <code>remove</code> command does not delete files from
+from the repository. <small>CVS</small> keeps all historical
+data in the repository so that it is possible to
+reconstruct previous states of the projects under
+revision control.
+</p>
+<p>To undo <small>CVS</small> <code>remove</code> or to resurrect files
+that were previously removed, See <a href="#add">add</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#remove-options"
accesskey="1">remove options</a>:</td><td> </td><td align="left"
valign="top">remove options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#remove-examples"
accesskey="2">remove examples</a>:</td><td> </td><td align="left"
valign="top">remove examples
+</td></tr>
+</table>
+
+<hr>
+<a name="remove-options"></a>
+<div class="header">
+<p>
+Next: <a href="#remove-examples" accesskey="n" rel="next">remove examples</a>,
Up: <a href="#remove" accesskey="u" rel="up">remove</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remove-options-1"></a>
+<h4 class="appendixsubsec">A.18.1 remove options</h4>
+
+<p>These standard options are supported by <code>remove</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+</dl>
+
+<p>In addition, these options are also supported:
+</p>
+<dl compact="compact">
+<dt><code>-f</code></dt>
+<dd><p>Note that this is not the standard behavior of
+the ‘<samp>-f</samp>’ option as defined in <a
href="#Common-options">Common options</a>.
+</p>
+<p>Delete files before removing them.
+</p>
+<p>Entire directory hierarchies are easily removed
+using ‘<samp>-f</samp>’, but take note that it is not as
+easy to resurrect directory hierarchies as it is
+to remove them.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="remove-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="#remove-options" accesskey="p" rel="prev">remove
options</a>, Up: <a href="#remove" accesskey="u" rel="up">remove</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remove-examples-1"></a>
+<h4 class="appendixsubsec">A.18.2 remove examples</h4>
+
+<a name="Removing-a-file"></a>
+<h4 class="appendixsubsubsec">A.18.2.1 Removing a file</h4>
+
+<div class="example">
+<pre class="example">$ cvs remove remove.me
+cvs remove: file `remove.me' still in working directory
+cvs remove: 1 file exists; remove it first
+$ rm -f remove.me
+$ cvs remove remove.me
+cvs remove: scheduling `remove.me' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+
+$ ls remove.it
+remove.it
+$ cvs remove -f remove.it
+cvs remove: scheduling `remove.it' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+</pre></div>
+
+<a name="Removing-entire-directories"></a>
+<h4 class="appendixsubsubsec">A.18.2.2 Removing entire directories</h4>
+<div class="example">
+<pre class="example">$ tree -d a
+a
+|-- CVS
+`-- b
+ `-- CVS
+
+3 directories
+$ cvs remove -f a
+cvs remove: Removing a
+cvs remove: Removing a/b
+cvs remove: scheduling `a/b/c' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+</pre></div>
+
+<hr>
+<a name="update"></a>
+<div class="header">
+<p>
+Previous: <a href="#remove" accesskey="p" rel="prev">remove</a>, Up: <a
href="#CVS-commands" accesskey="u" rel="up">CVS commands</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="update_002d_002d_002dBring-work-tree-in-sync-with-repository"></a>
+<h3 class="appendixsec">A.19 update—Bring work tree in sync with
repository</h3>
+<a name="index-update-_0028subcommand_0029"></a>
+
+<ul>
+<li> update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D
date] [-W spec] files…
+</li><li> Requires: repository, working directory.
+</li><li> Changes: working directory.
+</li></ul>
+
+<p>After you’ve run checkout to create your private copy
+of source from the common repository, other developers
+will continue changing the central source. From time
+to time, when it is convenient in your development
+process, you can use the <code>update</code> command from
+within your working directory to reconcile your work
+with any revisions applied to the source repository
+since your last checkout or update.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#update-options"
accesskey="1">update options</a>:</td><td> </td><td align="left"
valign="top">update options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#update-output"
accesskey="2">update output</a>:</td><td> </td><td align="left"
valign="top">update output
+</td></tr>
+</table>
+
+<hr>
+<a name="update-options"></a>
+<div class="header">
+<p>
+Next: <a href="#update-output" accesskey="n" rel="next">update output</a>, Up:
<a href="#update" accesskey="u" rel="up">update</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="update-options-1"></a>
+<h4 class="appendixsubsec">A.19.1 update options</h4>
+
+<p>These standard options are available with <code>update</code>
+(see <a href="#Common-options">Common options</a> for a complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D date</code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+This option is sticky, and implies ‘<samp>-P</samp>’.
+See <a href="#Sticky-tags">Sticky tags</a> for more information on sticky
tags/dates.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r
+<var>tag</var></samp>’ flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="#Keyword-substitution">Keyword substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. See <a href="#Invoking-CVS">Invoking CVS</a> for
+more information on the <code>status</code> command.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a href="#Moving-directories">Moving
directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe files to the standard output.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Update directories recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r rev</code></dt>
+<dd><p>Retrieve revision/tag <var>rev</var>. This option is sticky,
+and implies ‘<samp>-P</samp>’.
+See <a href="#Sticky-tags">Sticky tags</a>, for more information on sticky
tags/dates.
+</p></dd>
+</dl>
+
+<p>These special options are also available with
+<code>update</code>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags, dates, or ‘<samp>-k</samp>’ options.
+Does not reset sticky ‘<samp>-k</samp>’ options on modified files.
+See <a href="#Sticky-tags">Sticky tags</a> for more information on sticky
tags/dates.
+</p>
+</dd>
+<dt><code>-C</code></dt>
+<dd><p>Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+<samp>.#<var>file</var>.<var>revision</var></samp>, however).
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Create any directories that exist in the repository if
+they’re missing from the working directory. Normally,
+<code>update</code> acts only on directories and files that
+were already enrolled in your working directory.
+</p>
+<p>This is useful for updating directories that were
+created in the repository since the initial checkout;
+but it has an unfortunate side effect. If you
+deliberately avoided certain directories in the
+repository when you created your working directory
+(either through use of a module name or by listing
+explicitly the files and directories you wanted on the
+command line), then updating with ‘<samp>-d</samp>’ will create
+those directories, which may not be what you want.
+</p>
+</dd>
+<dt><code>-I <var>name</var></code></dt>
+<dd><p>Ignore files whose names match <var>name</var> (in your
+working directory) during the update. You can specify
+‘<samp>-I</samp>’ more than once on the command line to specify
+several files to ignore. Use ‘<samp>-I !</samp>’ to avoid
+ignoring any files at all. See <a href="#cvsignore">cvsignore</a> for other
+ways to make <small>CVS</small> ignore some files.
+</p>
+</dd>
+<dt><code>-W<var>spec</var></code></dt>
+<dd><p>Specify file names that should be filtered during
+update. You can use this option repeatedly.
+</p>
+<p><var>spec</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvswrappers</samp>
+file. See <a href="#Wrappers">Wrappers</a>.
+</p>
+</dd>
+<dt><code>-j<var>revision</var></code></dt>
+<dd><p>With two ‘<samp>-j</samp>’ options, merge changes from the
+revision specified with the first ‘<samp>-j</samp>’ option to
+the revision specified with the second ‘<samp>j</samp>’ option,
+into the working directory.
+</p>
+<p>With one ‘<samp>-j</samp>’ option, merge changes from the
+ancestor revision to the revision specified with the
+‘<samp>-j</samp>’ option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the ‘<samp>-j</samp>’ option.
+</p>
+<p>Note that using a single ‘<samp>-j <var>tagname</var></samp>’
option rather than
+‘<samp>-j <var>branchname</var></samp>’ to merge changes from a
branch will
+often not remove files which were removed on the branch.
+See <a href="#Merging-adds-and-removals">Merging adds and removals</a> for
more information.
+</p>
+<p>In addition, each ‘<samp>-j</samp>’ option can contain an
optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+‘<samp>-j<var>Symbolic_Tag</var>:<var>Date_Specifier</var></samp>’.
+</p>
+<p>See <a href="#Branching-and-merging">Branching and merging</a>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="update-output"></a>
+<div class="header">
+<p>
+Previous: <a href="#update-options" accesskey="p" rel="prev">update
options</a>, Up: <a href="#update" accesskey="u" rel="up">update</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="update-output-1"></a>
+<h4 class="appendixsubsec">A.19.2 update output</h4>
+
+<p><code>update</code> and <code>checkout</code> keep you informed of
+their progress by printing a line for each file, preceded
+by one character indicating the status of the file:
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dd><p>The file was brought up to date with respect to the
+repository. This is done for any file that exists in
+the repository but not in your working directory, and for files
+that you haven’t changed but are not the most recent
+versions available in the repository.
+</p>
+</dd>
+<dt><code>P <var>file</var></code></dt>
+<dd><p>Like ‘<samp>U</samp>’, but the <small>CVS</small> server
sends a patch instead of an entire
+file. This accomplishes the same thing as ‘<samp>U</samp>’ using
less bandwidth.
+</p>
+</dd>
+<dt><code>A <var>file</var></code></dt>
+<dd><p>The file has been added to your private copy of the
+sources, and will be added to the source repository
+when you run <code>commit</code> on the file. This is a
+reminder to you that the file needs to be committed.
+</p>
+</dd>
+<dt><code>R <var>file</var></code></dt>
+<dd><p>The file has been removed from your private copy of the
+sources, and will be removed from the source repository
+when you run <code>commit</code> on the file. This is a
+reminder to you that the file needs to be committed.
+</p>
+</dd>
+<dt><code>M <var>file</var></code></dt>
+<dd><p>The file is modified in your working directory.
+</p>
+<p>‘<samp>M</samp>’ can indicate one of two states for a file
+you’re working on: either there were no modifications
+to the same file in the repository, so that your file
+remains as you last saw it; or there were modifications
+in the repository as well as in your copy, but they
+were merged successfully, without conflict, in your
+working directory.
+</p>
+<p><small>CVS</small> will print some messages if it merges your work,
+and a backup copy of your working file (as it looked
+before you ran <code>update</code>) will be made. The exact
+name of that file is printed while <code>update</code> runs.
+</p>
+</dd>
+<dt><code>C <var>file</var></code></dt>
+<dd><a name="index-_002e_0023-files"></a>
+<a name="index-_005f_005f-files-_0028VMS_0029"></a>
+<p>A conflict was detected while trying to merge your
+changes to <var>file</var> with changes from the source
+repository. <var>file</var> (the copy in your working
+directory) is now the result of attempting to merge
+the two revisions; an unmodified copy of your file
+is also in your working directory, with the name
+<samp>.#<var>file</var>.<var>revision</var></samp> where <var>revision</var>
+is the revision that your modified file started
+from. Resolve the conflict as described in
+<a href="#Conflicts-example">Conflicts example</a>.
+(Note that some systems automatically purge
+files that begin with <samp>.#</samp> if they have not been
+accessed for a few days. If you intend to keep a copy
+of your original file, it is a very good idea to rename
+it.) Under <small>VMS</small>, the file name starts with
+<samp>__</samp> rather than <samp>.#</samp>.
+</p>
+</dd>
+<dt><code>? <var>file</var></code></dt>
+<dd><p><var>file</var> is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for <small>CVS</small> to ignore (see the
+description of the ‘<samp>-I</samp>’ option, and
+see <a href="#cvsignore">cvsignore</a>).
+</p></dd>
+</dl>
+
+<hr>
+<a name="Invoking-CVS"></a>
+<div class="header">
+<p>
+Next: <a href="#Administrative-files" accesskey="n" rel="next">Administrative
files</a>, Previous: <a href="#CVS-commands" accesskey="p" rel="prev">CVS
commands</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Quick-reference-to-CVS-commands"></a>
+<h2 class="appendix">Appendix B Quick reference to CVS commands</h2>
+<a name="index-Command-reference"></a>
+<a name="index-Reference_002c-commands"></a>
+<a name="index-Invoking-CVS"></a>
+
+<p>This appendix describes how to invoke <small>CVS</small>, with
+references to where each command or feature is
+described in detail. For other references run the
+<code>cvs --help</code> command, or see <a href="#Index">Index</a>.
+</p>
+<p>A <small>CVS</small> command looks like:
+</p>
+<div class="example">
+<pre class="example">cvs [ <var>global_options</var> ] <var>command</var> [
<var>command_options</var> ] [ <var>command_args</var> ]
+</pre></div>
+
+<p>Global options:
+</p>
+<dl compact="compact">
+<dt><code>--allow-root=<var>rootdir</var></code></dt>
+<dd><p>Specify legal <small>CVSROOT</small> directory (server only) (not
+in <small>CVS</small> 1.9 and older). See <a
href="#Password-authentication-server">Password authentication server</a>.
+</p>
+</dd>
+<dt><code>-a</code></dt>
+<dd><p>Authenticate all communication (client only) (not in <small>CVS</small>
+1.9 and older). See <a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-b</code></dt>
+<dd><p>Specify RCS location (<small>CVS</small> 1.9 and older). See
+<a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-d <var>root</var></code></dt>
+<dd><p>Specify the <small>CVSROOT</small>. See <a
href="#Repository">Repository</a>.
+</p>
+</dd>
+<dt><code>-e <var>editor</var></code></dt>
+<dd><p>Edit messages with <var>editor</var>. See <a
href="#Committing-your-changes">Committing your changes</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Do not read the <samp>~/.cvsrc</samp> file. See <a
href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-H</code></dt>
+<dt><code>--help</code></dt>
+<dd><p>Print a help message. See <a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not change any files. See <a href="#Global-options">Global
options</a>.
+</p>
+</dd>
+<dt><code>-Q</code></dt>
+<dd><p>Be really quiet. See <a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Be somewhat quiet. See <a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-r</code></dt>
+<dd><p>Make new working files read-only. See <a href="#Global-options">Global
options</a>.
+</p>
+</dd>
+<dt><code>-s <var>variable</var>=<var>value</var></code></dt>
+<dd><p>Set a user variable. See <a href="#Variables">Variables</a>.
+</p>
+</dd>
+<dt><code>-T <var>tempdir</var></code></dt>
+<dd><p>Put temporary files in <var>tempdir</var>. See <a
href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Trace <small>CVS</small> execution. See <a
href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dt><code>--version</code></dt>
+<dd><p>Display version and copyright information for <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Make new working files read-write. See <a
href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-x</code></dt>
+<dd><p>Encrypt all communication (client only).
+See <a href="#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-z <var>gzip-level</var></code></dt>
+<dd><a name="index-Compression-1"></a>
+<a name="index-Gzip-1"></a>
+<p>Set the compression level (client only).
+See <a href="#Global-options">Global options</a>.
+</p></dd>
+</dl>
+
+<p>Keyword expansion modes (see <a href="#Substitution-modes">Substitution
modes</a>):
+</p>
+<div class="example">
+<pre class="example">-kkv $<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp
$
+-kkvl $<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+-kk $<i></i>Id$
+-kv file1,v 1.1 1993/12/09 03:21:13 joe Exp
+-ko <i>no expansion</i>
+-kb <i>no expansion, file is binary</i>
+</pre></div>
+
+<p>Keywords (see <a href="#Keyword-list">Keyword list</a>):
+</p>
+<div class="example">
+<pre class="example">$<i></i>Author: joe $
+$<i></i>Date: 1993/12/09 03:21:13 $
+$<i></i>Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$<i></i>Locker: harry $
+$<i></i>Name: snapshot_1_14 $
+$<i></i>RCSfile: file1,v $
+$<i></i>Revision: 1.1 $
+$<i></i>Source: /home/files/file1,v $
+$<i></i>State: Exp $
+$<i></i>Log: file1,v $
+Revision 1.1 1993/12/09 03:30:17 joe
+Initial revision
+
+</pre></div>
+
+<p>Commands, command options, and command arguments:
+</p>
+<dl compact="compact">
+<dt><code>add [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Add a new file/directory. See <a href="#Adding-files">Adding files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Set keyword expansion.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Set file description.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>admin [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Administration of history files in the repository. See
+<a href="#admin">admin</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b[<var>rev</var>]</code></dt>
+<dd><p>Set default branch. See <a href="#Reverting-local-changes">Reverting
local changes</a>.
+</p>
+</dd>
+<dt><code>-c<var>string</var></code></dt>
+<dd><p>Set comment leader.
+</p>
+</dd>
+<dt><code>-k<var>subst</var></code></dt>
+<dd><p>Set keyword substitution. See <a href="#Keyword-substitution">Keyword
substitution</a>.
+</p>
+</dd>
+<dt><code>-l[<var>rev</var>]</code></dt>
+<dd><p>Lock revision <var>rev</var>, or latest revision.
+</p>
+</dd>
+<dt><code>-m<var>rev</var>:<var>msg</var></code></dt>
+<dd><p>Replace the log message of revision <var>rev</var> with
+<var>msg</var>.
+</p>
+</dd>
+<dt><code>-o<var>range</var></code></dt>
+<dd><p>Delete revisions from the repository. See
+<a href="#admin-options">admin options</a>.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Run quietly; do not print diagnostics.
+</p>
+</dd>
+<dt><code>-s<var>state</var>[:<var>rev</var>]</code></dt>
+<dd><p>Set the state. See <a href="#admin-options">admin options</a> for more
information on possible
+states.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Set file description from standard input.
+</p>
+</dd>
+<dt><code>-t<var>file</var></code></dt>
+<dd><p>Set file description from <var>file</var>.
+</p>
+</dd>
+<dt><code>-t-<var>string</var></code></dt>
+<dd><p>Set file description to <var>string</var>.
+</p>
+</dd>
+<dt><code>-u[<var>rev</var>]</code></dt>
+<dd><p>Unlock revision <var>rev</var>, or latest revision.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>annotate [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show last revision where each line was modified. See
+<a href="#annotate">annotate</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate the most recent revision no later than
+<var>date</var>. See <a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Annotate revision <var>tag</var>. See <a href="#Common-options">Common
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>checkout [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Get a copy of the sources. See <a href="#checkout">checkout</a>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags/date/options. See <a href="#Sticky-tags">Sticky
tags</a> and <a href="#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Output the module database. See <a href="#checkout-options">checkout
options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var> (is sticky). See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Check out into <var>dir</var>. See <a
href="#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-j <var>rev</var></code></dt>
+<dd><p>Merge in changes. See <a href="#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Don’t “shorten” module paths if -d specified. See
+<a href="#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a href="#Moving-directories">Moving
directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Check out files to standard output (avoids
+stickiness). See <a href="#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var> (is sticky). See <a
href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Like -c, but include module status. See <a
href="#checkout-options">checkout options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>commit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Check changes into the repository. See <a href="#commit">commit</a>.
+</p>
+<dl compact="compact">
+<dt><code>-F <var>file</var></code></dt>
+<dd><p>Read log message from <var>file</var>. See <a
href="#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force the file to be committed; disables recursion.
+See <a href="#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Use <var>msg</var> as log message. See <a
href="#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Commit to <var>rev</var>. See <a href="#commit-options">commit
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>diff [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show differences between revisions. See <a href="#diff">diff</a>.
+In addition to the options shown below, accepts a wide
+variety of options to control output style, for example
+‘<samp>-c</samp>’ for context diffs.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date1</var></code></dt>
+<dd><p>Diff revision for date against working file. See
+<a href="#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date2</var></code></dt>
+<dd><p>Diff <var>rev1</var>/<var>date1</var> against <var>date2</var>. See
+<a href="#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Include diffs for added and removed files. See
+<a href="#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev1</var></code></dt>
+<dd><p>Diff revision for <var>rev1</var> against working file. See
+<a href="#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev2</var></code></dt>
+<dd><p>Diff <var>rev1</var>/<var>date1</var> against <var>rev2</var>. See <a
href="#diff-options">diff options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>edit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Get ready to edit a watched file. See <a href="#Editing-files">Editing
files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a <var>actions</var></code></dt>
+<dd><p>Specify actions for temporary watch, where
+<var>actions</var> is <code>edit</code>, <code>unedit</code>,
+<code>commit</code>, <code>all</code>, or <code>none</code>. See
+<a href="#Editing-files">Editing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>editors [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>See who is editing a watched file. See <a
href="#Watch-information">Watch information</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>export [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Export files from <small>CVS</small>. See <a href="#export">export</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var>. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Check out into <var>dir</var>. See <a href="#export-options">export
options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Don’t “shorten” module paths if -d specified. See
+<a href="#export-options">export options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="#export-options">export options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var>. See <a href="#Common-options">Common
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>history [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show repository access history. See <a href="#history">history</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>All users (default is self). See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-b <var>str</var></code></dt>
+<dd><p>Back to record with <var>str</var> in module/file/repos
+field. See <a href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Report on committed (modified) files. See <a
href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Since <var>date</var>. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-e</code></dt>
+<dd><p>Report on all record types. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Last modified (committed or modified report). See <a
href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-m <var>module</var></code></dt>
+<dd><p>Report on <var>module</var> (repeatable). See <a
href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-n <var>module</var></code></dt>
+<dd><p>In <var>module</var>. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-o</code></dt>
+<dd><p>Report on checked out modules. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-p <var>repository</var></code></dt>
+<dd><p>In <var>repository</var>. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Since revision <var>rev</var>. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-T</code></dt>
+<dd><p>Produce report on all TAGs. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-t <var>tag</var></code></dt>
+<dd><p>Since tag record placed in history file (by anyone).
+See <a href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-u <var>user</var></code></dt>
+<dd><p>For user <var>user</var> (repeatable). See <a
href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Working directory must match. See <a href="#history-options">history
options</a>.
+</p>
+</dd>
+<dt><code>-x <var>types</var></code></dt>
+<dd><p>Report on <var>types</var>, one or more of
+<code>TOEFWUPCGMAR</code>. See <a href="#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-z <var>zone</var></code></dt>
+<dd><p>Output for time zone <var>zone</var>. See <a
href="#history-options">history options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>import [<var>options</var>] <var>repository</var>
<var>vendor-tag</var> <var>release-tags</var>…</code></dt>
+<dd><p>Import files into <small>CVS</small>, using vendor branches. See
+<a href="#import">import</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b <var>bra</var></code></dt>
+<dd><p>Import to vendor branch <var>bra</var>. See
+<a href="#Multiple-vendor-branches">Multiple vendor branches</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Use the file’s modification time as the time of
+import. See <a href="#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Set default keyword substitution mode. See
+<a href="#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Use <var>msg</var> for log message. See
+<a href="#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-I <var>ign</var></code></dt>
+<dd><p>More files to ignore (! to reset). See
+<a href="#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>More wrappers. See <a href="#import-options">import options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>init</code></dt>
+<dd><p>Create a <small>CVS</small> repository if it doesn’t exist. See
+<a href="#Creating-a-repository">Creating a repository</a>.
+</p>
+</dd>
+<dt><code>kserver</code></dt>
+<dd><p>Kerberos authenticated server.
+See <a href="#Kerberos-authenticated">Kerberos authenticated</a>.
+</p>
+</dd>
+<dt><code>log [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Print out history information for files. See <a href="#log">log</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Only list revisions on the default branch. See <a
href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Specify dates (<var>d1</var><<var>d2</var> for range, <var>d</var>
for
+latest before). See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Only print header. See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not list tags. See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Only print name of RCS file. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-r<var>revs</var></code></dt>
+<dd><p>Only list revisions <var>revs</var>. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Only list revisions with specified states. See <a
href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Only print header and descriptive text. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Only list revisions checked in by specified logins. See <a
href="#log-options">log options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>login</code></dt>
+<dd><p>Prompt for password for authenticating server. See
+<a href="#Password-authentication-client">Password authentication client</a>.
+</p>
+</dd>
+<dt><code>logout</code></dt>
+<dd><p>Remove stored password for authenticating server. See
+<a href="#Password-authentication-client">Password authentication client</a>.
+</p>
+</dd>
+<dt><code>pserver</code></dt>
+<dd><p>Password authenticated server.
+See <a href="#Password-authentication-server">Password authentication
server</a>.
+</p>
+</dd>
+<dt><code>rannotate [<var>options</var>]
[<var>modules</var>…]</code></dt>
+<dd><p>Show last revision where each line was modified. See
+<a href="#annotate">annotate</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate the most recent revision no later than
+<var>date</var>. See <a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Annotate revision <var>tag</var>. See <a href="#Common-options">Common
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rdiff [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Show differences between releases. See <a href="#rdiff">rdiff</a>.
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Context diff output format (default). See <a
href="#rdiff-options">rdiff options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Select revisions based on <var>date</var>. See <a
href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Select revisions based on <var>rev</var>. See <a
href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Short patch - one liner per file. See <a href="#rdiff-options">rdiff
options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Top two diffs - last change made to the file. See
+<a href="#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-u</code></dt>
+<dd><p>Unidiff output format. See <a href="#rdiff-options">rdiff options</a>.
+</p>
+</dd>
+<dt><code>-V <var>vers</var></code></dt>
+<dd><p>Use RCS Version <var>vers</var> for keyword expansion (obsolete). See
+<a href="#rdiff-options">rdiff options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>release [<var>options</var>] <var>directory</var></code></dt>
+<dd><p>Indicate that a directory is no longer in use. See
+<a href="#release">release</a>.
+</p>
+<dl compact="compact">
+<dt><code>-d</code></dt>
+<dd><p>Delete the given directory. See <a href="#release-options">release
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>remove [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Remove an entry from the repository. See <a
href="#Removing-files">Removing files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-f</code></dt>
+<dd><p>Delete the file before removing it. See <a
href="#Removing-files">Removing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rlog [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Print out history information for modules. See <a href="#log">log</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Only list revisions on the default branch. See <a
href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Specify dates (<var>d1</var><<var>d2</var> for range, <var>d</var>
for
+latest before). See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Only print header. See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not list tags. See <a href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Only print name of RCS file. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-r<var>revs</var></code></dt>
+<dd><p>Only list revisions <var>revs</var>. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Only list revisions with specified states. See <a
href="#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Only print header and descriptive text. See <a href="#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Only list revisions checked in by specified logins. See <a
href="#log-options">log options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rtag [<var>options</var>] <var>tag</var>
<var>modules</var>…</code></dt>
+<dd><p>Add a symbolic tag to a module.
+See <a href="#Revisions">Revisions</a> and <a
href="#Branching-and-merging">Branching and merging</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>Clear tag from removed files that would not otherwise
+be tagged. See <a href="#Tagging-add_002fremove">Tagging add/remove</a>.
+</p>
+</dd>
+<dt><code>-b</code></dt>
+<dd><p>Create a branch named <var>tag</var>. See <a
href="#Branching-and-merging">Branching and merging</a>.
+</p>
+</dd>
+<dt><code>-B</code></dt>
+<dd><p>Used in conjunction with -F or -d, enables movement and deletion of
+branch tags. Use with extreme caution.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag revisions as of <var>date</var>. See <a
href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Delete <var>tag</var>. See <a href="#Modifying-tags">Modifying
tags</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Move <var>tag</var> if it already exists. See <a
href="#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force a head revision match if tag/date not found.
+See <a href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>No execution of tag program. See <a href="#Common-options">Common
options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Tag existing tag <var>rev</var>. See <a
href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>server</code></dt>
+<dd><p>Rsh server. See <a href="#Connecting-via-rsh">Connecting via rsh</a>.
+</p>
+</dd>
+<dt><code>status [<var>options</var>] <var>files</var>…</code></dt>
+<dd><p>Display status information in a working directory. See
+<a href="#File-status">File status</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dd><p>Include tag information for file. See <a href="#Tags">Tags</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>tag [<var>options</var>] <var>tag</var>
[<var>files</var>…]</code></dt>
+<dd><p>Add a symbolic tag to checked out version of files.
+See <a href="#Revisions">Revisions</a> and <a
href="#Branching-and-merging">Branching and merging</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Create a branch named <var>tag</var>. See <a
href="#Branching-and-merging">Branching and merging</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Check that working files are unmodified. See
+<a href="#Tagging-the-working-directory">Tagging the working directory</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag revisions as of <var>date</var>. See <a
href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Delete <var>tag</var>. See <a href="#Modifying-tags">Modifying
tags</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Move <var>tag</var> if it already exists. See <a
href="#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force a head revision match if tag/date not found.
+See <a href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Tag existing tag <var>rev</var>. See <a
href="#Tagging-by-date_002ftag">Tagging by date/tag</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>unedit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Undo an edit command. See <a href="#Editing-files">Editing files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>update [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Bring work tree in sync with repository. See
+<a href="#update">update</a>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags/date/options. See <a href="#Sticky-tags">Sticky
tags</a> and <a href="#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-C</code></dt>
+<dd><p>Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+<samp>.#<var>file</var>.<var>revision</var></samp>, however).
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var> (is sticky). See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Create directories. See <a href="#update-options">update options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-I <var>ign</var></code></dt>
+<dd><p>More files to ignore (! to reset). See
+<a href="#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-j <var>rev</var></code></dt>
+<dd><p>Merge in changes. See <a href="#update-options">update options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a href="#Moving-directories">Moving
directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Check out files to standard output (avoids
+stickiness). See <a href="#update-options">update options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var> (is sticky). See <a
href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>More wrappers. See <a href="#import-options">import options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>version</code></dt>
+<dd><a name="index-version-_0028subcommand_0029"></a>
+
+<p>Display the version of <small>CVS</small> being used. If the repository
+is remote, display both the client and server versions.
+</p>
+</dd>
+<dt><code>watch [on|off|add|remove] [<var>options</var>]
[<var>files</var>…]</code></dt>
+<dd>
+<p>on/off: turn on/off read-only checkouts of files. See
+<a href="#Setting-a-watch">Setting a watch</a>.
+</p>
+<p>add/remove: add or remove notification on actions. See
+<a href="#Getting-Notified">Getting Notified</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a <var>actions</var></code></dt>
+<dd><p>Specify actions for temporary watch, where
+<var>actions</var> is <code>edit</code>, <code>unedit</code>,
+<code>commit</code>, <code>all</code>, or <code>none</code>. See
+<a href="#Editing-files">Editing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>watchers [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>See who is watching a file. See <a href="#Watch-information">Watch
information</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<hr>
+<a name="Administrative-files"></a>
+<div class="header">
+<p>
+Next: <a href="#Environment-variables" accesskey="n" rel="next">Environment
variables</a>, Previous: <a href="#Invoking-CVS" accesskey="p"
rel="prev">Invoking CVS</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Reference-manual-for-Administrative-files"></a>
+<h2 class="appendix">Appendix C Reference manual for Administrative files</h2>
+<a name="index-Administrative-files-_0028reference_0029"></a>
+<a name="index-Files_002c-reference-manual"></a>
+<a name="index-Reference-manual-_0028files_0029"></a>
+<a name="index-CVSROOT-_0028file_0029"></a>
+
+<p>Inside the repository, in the directory
+<samp>$CVSROOT/CVSROOT</samp>, there are a number of
+supportive files for <small>CVS</small>. You can use <small>CVS</small> in a
limited
+fashion without any of them, but if they are set up
+properly they can help make life easier. For a
+discussion of how to edit them, see <a
href="#Intro-administrative-files">Intro administrative files</a>.
+</p>
+<p>The most important of these files is the <samp>modules</samp>
+file, which defines the modules inside the repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#modules"
accesskey="1">modules</a>:</td><td> </td><td align="left"
valign="top">Defining modules
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Wrappers"
accesskey="2">Wrappers</a>:</td><td> </td><td align="left"
valign="top">Specify binary-ness based on file name
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Trigger-Scripts"
accesskey="3">Trigger Scripts</a>:</td><td> </td><td align="left"
valign="top">Some notes on the commit support files and
+ taginfo, referenced below.
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#commit-files"
accesskey="4">commit files</a>:</td><td> </td><td align="left"
valign="top">The commit support files (commitinfo,
+ verifymsg, editinfo, loginfo)
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#taginfo"
accesskey="5">taginfo</a>:</td><td> </td><td align="left"
valign="top">Verifying/Logging tags
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#rcsinfo"
accesskey="6">rcsinfo</a>:</td><td> </td><td align="left"
valign="top">Templates for the log messages
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#cvsignore"
accesskey="7">cvsignore</a>:</td><td> </td><td align="left"
valign="top">Ignoring files via cvsignore
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#checkoutlist"
accesskey="8">checkoutlist</a>:</td><td> </td><td align="left"
valign="top">Adding your own administrative files
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#history-file"
accesskey="9">history file</a>:</td><td> </td><td align="left"
valign="top">History information
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Variables">Variables</a>:</td><td> </td><td align="left"
valign="top">Various variables are expanded
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#config">config</a>:</td><td> </td><td align="left"
valign="top">Miscellaneous CVS configuration
+</td></tr>
+</table>
+
+<hr>
+<a name="modules"></a>
+<div class="header">
+<p>
+Next: <a href="#Wrappers" accesskey="n" rel="next">Wrappers</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-modules-file"></a>
+<h3 class="appendixsec">C.1 The modules file</h3>
+<a name="index-Modules-_0028admin-file_0029"></a>
+<a name="index-Defining-modules-_0028reference-manual_0029"></a>
+
+<p>The <samp>modules</samp> file records your definitions of
+names for collections of source code. <small>CVS</small> will
+use these definitions if you use <small>CVS</small> to update the
+modules file (use normal commands like <code>add</code>,
+<code>commit</code>, etc).
+</p>
+<p>The <samp>modules</samp> file may contain blank lines and
+comments (lines beginning with ‘<samp>#</samp>’) as well as
+module definitions. Long lines can be continued on the
+next line by specifying a backslash (‘<samp>\</samp>’) as the
+last character on the line.
+</p>
+<p>There are three basic types of modules: alias modules,
+regular modules, and ampersand modules. The difference
+between them is the way that they map files in the
+repository to files in the working directory. In all
+of the following examples, the top-level repository
+contains a directory called <samp>first-dir</samp>, which
+contains two files, <samp>file1</samp> and <samp>file2</samp>, and a
+directory <samp>sdir</samp>. <samp>first-dir/sdir</samp> contains
+a file <samp>sfile</samp>.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Alias-modules"
accesskey="1">Alias modules</a>:</td><td> </td><td align="left"
valign="top">The simplest kind of module
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Regular-modules"
accesskey="2">Regular modules</a>:</td><td> </td><td align="left"
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Ampersand-modules"
accesskey="3">Ampersand modules</a>:</td><td> </td><td align="left"
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Excluding-directories"
accesskey="4">Excluding directories</a>:</td><td> </td><td
align="left" valign="top">Excluding directories from a module
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Module-options"
accesskey="5">Module options</a>:</td><td> </td><td align="left"
valign="top">Regular and ampersand modules can take options
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Module-program-options"
accesskey="6">Module program options</a>:</td><td> </td><td
align="left" valign="top">How the modules “program options” programs
+ are run.
+</td></tr>
+</table>
+
+<hr>
+<a name="Alias-modules"></a>
+<div class="header">
+<p>
+Next: <a href="#Regular-modules" accesskey="n" rel="next">Regular modules</a>,
Up: <a href="#modules" accesskey="u" rel="up">modules</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Alias-modules-1"></a>
+<h4 class="appendixsubsec">C.1.1 Alias modules</h4>
+<a name="index-Alias-modules"></a>
+<a name="index-_002da_002c-in-modules-file"></a>
+
+<p>Alias modules are the simplest kind of module:
+</p>
+<dl compact="compact">
+<dt><code><var>mname</var> -a <var>aliases</var>…</code></dt>
+<dd><p>This represents the simplest way of defining a module
+<var>mname</var>. The ‘<samp>-a</samp>’ flags the definition as a
+simple alias: <small>CVS</small> will treat any use of <var>mname</var> (as
+a command argument) as if the list of names
+<var>aliases</var> had been specified instead.
+<var>aliases</var> may contain either other module names or
+paths. When you use paths in aliases, <code>checkout</code>
+creates all intermediate directories in the working
+directory, just as if the path had been specified
+explicitly in the <small>CVS</small> arguments.
+</p></dd>
+</dl>
+
+<p>For example, if the modules file contains:
+</p>
+<div class="example">
+<pre class="example">amodule -a first-dir
+</pre></div>
+
+<p>then the following two commands are equivalent:
+</p>
+<div class="example">
+<pre class="example">$ cvs co amodule
+$ cvs co first-dir
+</pre></div>
+
+<p>and they each would provide output such as:
+</p>
+<div class="example">
+<pre class="example">cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+</pre></div>
+
+<hr>
+<a name="Regular-modules"></a>
+<div class="header">
+<p>
+Next: <a href="#Ampersand-modules" accesskey="n" rel="next">Ampersand
modules</a>, Previous: <a href="#Alias-modules" accesskey="p" rel="prev">Alias
modules</a>, Up: <a href="#modules" accesskey="u" rel="up">modules</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Regular-modules-1"></a>
+<h4 class="appendixsubsec">C.1.2 Regular modules</h4>
+<a name="index-Regular-modules"></a>
+
+<dl compact="compact">
+<dt><code><var>mname</var> [ options ] <var>dir</var> [
<var>files</var>… ]</code></dt>
+<dd><p>In the simplest case, this form of module definition
+reduces to ‘<samp><var>mname</var> <var>dir</var></samp>’. This
defines
+all the files in directory <var>dir</var> as module mname.
+<var>dir</var> is a relative path (from <code>$CVSROOT</code>) to a
+directory of source in the source repository. In this
+case, on checkout, a single directory called
+<var>mname</var> is created as a working directory; no
+intermediate directory levels are used by default, even
+if <var>dir</var> was a path involving several directory
+levels.
+</p></dd>
+</dl>
+
+<p>For example, if a module is defined by:
+</p>
+<div class="example">
+<pre class="example">regmodule first-dir
+</pre></div>
+
+<p>then regmodule will contain the files from first-dir:
+</p>
+<div class="example">
+<pre class="example">$ cvs co regmodule
+cvs checkout: Updating regmodule
+U regmodule/file1
+U regmodule/file2
+cvs checkout: Updating regmodule/sdir
+U regmodule/sdir/sfile
+$
+</pre></div>
+
+<p>By explicitly specifying files in the module definition
+after <var>dir</var>, you can select particular files from
+directory <var>dir</var>. Here is
+an example:
+</p>
+<div class="example">
+<pre class="example">regfiles first-dir/sdir sfile
+</pre></div>
+
+<p>With this definition, getting the regfiles module
+will create a single working directory
+<samp>regfiles</samp> containing the file listed, which
+comes from a directory deeper
+in the <small>CVS</small> source repository:
+</p>
+<div class="example">
+<pre class="example">$ cvs co regfiles
+U regfiles/sfile
+$
+</pre></div>
+
+<hr>
+<a name="Ampersand-modules"></a>
+<div class="header">
+<p>
+Next: <a href="#Excluding-directories" accesskey="n" rel="next">Excluding
directories</a>, Previous: <a href="#Regular-modules" accesskey="p"
rel="prev">Regular modules</a>, Up: <a href="#modules" accesskey="u"
rel="up">modules</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Ampersand-modules-1"></a>
+<h4 class="appendixsubsec">C.1.3 Ampersand modules</h4>
+<a name="index-Ampersand-modules"></a>
+<a name="index-_0026_002c-in-modules-file"></a>
+
+<p>A module definition can refer to other modules by
+including ‘<samp>&<var>module</var></samp>’ in its definition.
+</p><div class="example">
+<pre class="example"><var>mname</var> [ options ]
<var>&module</var>…
+</pre></div>
+
+<p>Then getting the module creates a subdirectory for each such
+module, in the directory containing the module. For
+example, if modules contains
+</p>
+<div class="example">
+<pre class="example">ampermod &first-dir
+</pre></div>
+
+<p>then a checkout will create an <code>ampermod</code> directory
+which contains a directory called <code>first-dir</code>,
+which in turns contains all the directories and files
+which live there. For example, the command
+</p>
+<div class="example">
+<pre class="example">$ cvs co ampermod
+</pre></div>
+
+<p>will create the following files:
+</p>
+<div class="example">
+<pre class="example">ampermod/first-dir/file1
+ampermod/first-dir/file2
+ampermod/first-dir/sdir/sfile
+</pre></div>
+
+<p>There is one quirk/bug: the messages that <small>CVS</small>
+prints omit the <samp>ampermod</samp>, and thus do not
+correctly display the location to which it is checking
+out the files:
+</p>
+<div class="example">
+<pre class="example">$ cvs co ampermod
+cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+$
+</pre></div>
+
+<p>Do not rely on this buggy behavior; it may get fixed in
+a future release of <small>CVS</small>.
+</p>
+
+<hr>
+<a name="Excluding-directories"></a>
+<div class="header">
+<p>
+Next: <a href="#Module-options" accesskey="n" rel="next">Module options</a>,
Previous: <a href="#Ampersand-modules" accesskey="p" rel="prev">Ampersand
modules</a>, Up: <a href="#modules" accesskey="u" rel="up">modules</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Excluding-directories-1"></a>
+<h4 class="appendixsubsec">C.1.4 Excluding directories</h4>
+<a name="index-Excluding-directories_002c-in-modules-file"></a>
+<a name="index-_0021_002c-in-modules-file"></a>
+
+<p>An alias module may exclude particular directories from
+other modules by using an exclamation mark (‘<samp>!</samp>’)
+before the name of each directory to be excluded.
+</p>
+<p>For example, if the modules file contains:
+</p>
+<div class="example">
+<pre class="example">exmodule -a !first-dir/sdir first-dir
+</pre></div>
+
+<p>then checking out the module ‘<samp>exmodule</samp>’ will check
+out everything in ‘<samp>first-dir</samp>’ except any files in
+the subdirectory ‘<samp>first-dir/sdir</samp>’.
+</p>
+<hr>
+<a name="Module-options"></a>
+<div class="header">
+<p>
+Next: <a href="#Module-program-options" accesskey="n" rel="next">Module
program options</a>, Previous: <a href="#Excluding-directories" accesskey="p"
rel="prev">Excluding directories</a>, Up: <a href="#modules" accesskey="u"
rel="up">modules</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Module-options-1"></a>
+<h4 class="appendixsubsec">C.1.5 Module options</h4>
+<a name="index-Options_002c-in-modules-file"></a>
+
+<p>Either regular modules or ampersand modules can contain
+options, which supply additional information concerning
+the module.
+</p>
+<dl compact="compact">
+<dd><a name="index-_002dd_002c-in-modules-file"></a>
+</dd>
+<dt><code>-d <var>name</var></code></dt>
+<dd><p>Name the working directory something other than the
+module name.
+</p>
+<a name="index-Export-program"></a>
+<a name="index-_002de_002c-in-modules-file"></a>
+</dd>
+<dt><code>-e <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are exported. <var>prog</var> runs with a single
+argument, the module name.
+</p>
+<a name="index-Checkout-program"></a>
+<a name="index-_002do_002c-in-modules-file"></a>
+</dd>
+<dt><code>-o <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are checked out. <var>prog</var> runs with a single
+argument, the module name. See <a href="#Module-program-options">Module
program options</a> for
+information on how <var>prog</var> is called.
+</p>
+<a name="index-Status-of-a-module"></a>
+<a name="index-Module-status"></a>
+<a name="index-_002ds_002c-in-modules-file"></a>
+</dd>
+<dt><code>-s <var>status</var></code></dt>
+<dd><p>Assign a status to the module. When the module file is
+printed with ‘<samp>cvs checkout -s</samp>’ the modules are
+sorted according to primarily module status, and
+secondarily according to the module name. This option
+has no other meaning. You can use this option for
+several things besides status: for instance, list the
+person that is responsible for this module.
+</p>
+<a name="index-Tag-program"></a>
+<a name="index-_002dt_002c-in-modules-file"></a>
+</dd>
+<dt><code>-t <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are tagged with <code>rtag</code>. <var>prog</var> runs
+with two arguments: the module name and the symbolic
+tag specified to <code>rtag</code>. It is not run
+when <code>tag</code> is executed. Generally you will find
+that the <samp>taginfo</samp> file is a better solution (see <a
href="#taginfo">taginfo</a>).
+</p></dd>
+</dl>
+
+<p>You should also see see <a href="#Module-program-options">Module program
options</a> about how the
+“program options” programs are run.
+</p>
+
+<hr>
+<a name="Module-program-options"></a>
+<div class="header">
+<p>
+Previous: <a href="#Module-options" accesskey="p" rel="prev">Module
options</a>, Up: <a href="#modules" accesskey="u" rel="up">modules</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a
name="How-the-modules-file-_0060_0060program-options_0027_0027-programs-are-run"></a>
+<h4 class="appendixsubsec">C.1.6 How the modules file “program
options” programs are run</h4>
+<a name="index-Modules-file-program-options"></a>
+<a name="index-_002dt_002c-in-modules-file-1"></a>
+<a name="index-_002do_002c-in-modules-file-1"></a>
+<a name="index-_002de_002c-in-modules-file-1"></a>
+
+<p>For checkout, rtag, and export, the program is server-based, and as such the
+following applies:-
+</p>
+<p>If using remote access methods (pserver, ext, etc.),
+<small>CVS</small> will execute this program on the server from a temporary
+directory. The path is searched for this program.
+</p>
+<p>If using “local access” (on a local or remote NFS file system,
i.e.,
+repository set just to a path),
+the program will be executed from the newly checked-out tree, if
+found there, or alternatively searched for in the path if not.
+</p>
+<p>The programs are all run after the operation has effectively
+completed.
+</p>
+
+<hr>
+<a name="Wrappers"></a>
+<div class="header">
+<p>
+Next: <a href="#Trigger-Scripts" accesskey="n" rel="next">Trigger Scripts</a>,
Previous: <a href="#modules" accesskey="p" rel="prev">modules</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-cvswrappers-file"></a>
+<h3 class="appendixsec">C.2 The cvswrappers file</h3>
+<a name="index-cvswrappers-_0028admin-file_0029"></a>
+<a name="index-CVSWRAPPERS_002c-environment-variable"></a>
+<a name="index-Wrappers"></a>
+
+
+<p>Wrappers refers to a <small>CVS</small> feature which lets you
+control certain settings based on the name of the file
+which is being operated on. The settings are ‘<samp>-k</samp>’
+for binary files, and ‘<samp>-m</samp>’ for nonmergeable text
+files.
+</p>
+<p>The ‘<samp>-m</samp>’ option
+specifies the merge methodology that should be used when
+a non-binary file is updated. <code>MERGE</code> means the usual
+<small>CVS</small> behavior: try to merge the files. <code>COPY</code>
+means that <code>cvs update</code> will refuse to merge
+files, as it also does for files specified as binary
+with ‘<samp>-kb</samp>’ (but if the file is specified as
+binary, there is no need to specify ‘<samp>-m 'COPY'</samp>’).
+<small>CVS</small> will provide the user with the
+two versions of the files, and require the user using
+mechanisms outside <small>CVS</small>, to insert any necessary
+changes.
+</p>
+<p><strong>WARNING: Do not use <code>COPY</code> with
+<small>CVS</small> 1.9 or earlier - such versions of <small>CVS</small> will
+copy one version of your file over the other, wiping
+out the previous contents.</strong>
+The ‘<samp>-m</samp>’ wrapper option only affects behavior when
+merging is done on update; it does not affect how files
+are stored. See <a href="#Binary-files">Binary files</a>, for more on
+binary files.
+</p>
+<p>The basic format of the file <samp>cvswrappers</samp> is:
+</p>
+<div class="example">
+<pre class="example">wildcard [option value][option value]...
+
+where option is one of
+-m update methodology value: MERGE or COPY
+-k keyword expansion value: expansion mode
+
+and value is a single-quote delimited value.
+</pre></div>
+
+
+<p>For example, the following command imports a
+directory, treating files whose name ends in
+‘<samp>.exe</samp>’ as binary:
+</p>
+<div class="example">
+<pre class="example">cvs import -I ! -W "*.exe -k 'b'" first-dir
vendortag reltag
+</pre></div>
+
+
+<hr>
+<a name="Trigger-Scripts"></a>
+<div class="header">
+<p>
+Next: <a href="#commit-files" accesskey="n" rel="next">commit files</a>,
Previous: <a href="#Wrappers" accesskey="p" rel="prev">Wrappers</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-Trigger-Scripts"></a>
+<h3 class="appendixsec">C.3 The Trigger Scripts</h3>
+<a name="index-Info-files"></a>
+<a name="index-Trigger-scripts"></a>
+
+<p>Several of the administrative files support triggers, or the launching
external
+scripts or programs at specific times before or after particular events. The
+individual files are discussed in the later sections, <a
href="#commit-files">commit files</a> and
+<a href="#taginfo">taginfo</a>, but some of the common elements are discussed
here.
+</p>
+<p>All the trigger scripts are launched in a copy of the user sandbox being
+committed, on the server, in client-server mode. In local mode, the scripts
+are actually launched directly from the user sandbox directory being committed.
+For most intents and purposes, the same scripts can be run in both locations
+without alteration.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#syntax"
accesskey="1">syntax</a>:</td><td> </td><td align="left"
valign="top">The common syntax
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Trigger-Script-Security"
accesskey="2">Trigger Script Security</a>:</td><td> </td><td
align="left" valign="top">Trigger script security
+</td></tr>
+</table>
+
+<hr>
+<a name="syntax"></a>
+<div class="header">
+<p>
+Next: <a href="#Trigger-Script-Security" accesskey="n" rel="next">Trigger
Script Security</a>, Up: <a href="#Trigger-Scripts" accesskey="u"
rel="up">Trigger Scripts</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-common-syntax"></a>
+<h4 class="appendixsubsec">C.3.1 The common syntax</h4>
+<a name="index-Info-files-_0028syntax_0029"></a>
+<a name="index-Syntax-of-info-files"></a>
+<a name="index-Common-syntax-of-info-files"></a>
+
+
+<p>The administrative files such as <samp>commitinfo</samp>,
+<samp>loginfo</samp>, <samp>rcsinfo</samp>, <samp>verifymsg</samp>, etc.,
+all have a common format. The purpose of the files are
+described later on. The common syntax is described
+here.
+</p>
+<a name="index-Regular-expression-syntax"></a>
+<p>Each line contains the following:
+</p><ul>
+<li> A regular expression. This is a basic regular
+expression in the syntax used by GNU emacs.
+
+</li><li> A whitespace separator—one or more spaces and/or tabs.
+
+</li><li> A file name or command-line template.
+</li></ul>
+
+<p>Blank lines are ignored. Lines that start with the
+character ‘<samp>#</samp>’ are treated as comments. Long lines
+unfortunately can <em>not</em> be broken in two parts in
+any way.
+</p>
+<p>The first regular expression that matches the current
+directory name in the repository is used. The rest of the line
+is used as a file name or command-line as appropriate.
+</p>
+
+<hr>
+<a name="Trigger-Script-Security"></a>
+<div class="header">
+<p>
+Previous: <a href="#syntax" accesskey="p" rel="prev">syntax</a>, Up: <a
href="#Trigger-Scripts" accesskey="u" rel="up">Trigger Scripts</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Security-and-the-Trigger-Scripts"></a>
+<h4 class="appendixsubsec">C.3.2 Security and the Trigger Scripts</h4>
+<a name="index-Info-files_002c-security"></a>
+<a name="index-Trigger-scripts_002c-security"></a>
+
+<p>Security is a huge subject, and implementing a secure system is a
non-trivial
+task. This section will barely touch on all the issues involved, but it is
+well to note that, as with any script you will be allowing an untrusted
+user to run on your server, there are measures you can take to help prevent
+your trigger scripts from being abused.
+</p>
+<p>For instance, since the CVS trigger scripts all run in a copy of the
user’s
+sandbox on the server, a naively coded Perl trigger script which attempts to
+use a Perl module that is not installed on the system can be hijacked by any
+user with commit access who is checking in a file with the correct name. Other
+scripting languages may be vulnerable to similar hacks.
+</p>
+<p>One way to make a script more secure, at least with Perl, is to use scripts
+which invoke the <code>-T</code>, or "taint-check" switch on their
<code>#!</code> line.
+In the most basic terms, this causes Perl to avoid running code that may have
+come from an external source. Please run the <code>perldoc perlsec</code>
command
+for more on Perl security. Again, other languages may implement other security
+verification hooks which look more or less like Perl’s
"taint-check" mechanism.
+</p>
+<hr>
+<a name="commit-files"></a>
+<div class="header">
+<p>
+Next: <a href="#rcsinfo" accesskey="n" rel="next">rcsinfo</a>, Previous: <a
href="#Trigger-Scripts" accesskey="p" rel="prev">Trigger Scripts</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-commit-support-files"></a>
+<h3 class="appendixsec">C.4 The commit support files</h3>
+<a name="index-Committing_002c-administrative-support-files"></a>
+
+<p>There are three kinds of trigger scripts (see <a
href="#Trigger-Scripts">Trigger Scripts</a>) that can be
+run at various times during a commit. They are specified in files in the
+repository, as described below. The following table summarizes the
+file names and the purpose of the corresponding programs.
+</p>
+<dl compact="compact">
+<dt><samp>commitinfo</samp></dt>
+<dd><p>The program is responsible for checking that the commit
+is allowed. If it exits with a non-zero exit status
+the commit will be aborted.
+</p>
+</dd>
+<dt><samp>verifymsg</samp></dt>
+<dd><p>The specified program is used to evaluate the log message,
+and possibly verify that it contains all required
+fields. This is most useful in combination with the
+<samp>rcsinfo</samp> file, which can hold a log message
+template (see <a href="#rcsinfo">rcsinfo</a>).
+</p>
+</dd>
+<dt><samp>editinfo</samp></dt>
+<dd><p>The specified program is used to edit the log message,
+and possibly verify that it contains all required
+fields. This is most useful in combination with the
+<samp>rcsinfo</samp> file, which can hold a log message
+template (see <a href="#rcsinfo">rcsinfo</a>). (obsolete)
+</p>
+</dd>
+<dt><samp>loginfo</samp></dt>
+<dd><p>The specified program is called when the commit is
+complete. It receives the log message and some
+additional information and can store the log message in
+a file, or mail it to appropriate persons, or maybe
+post it to a local newsgroup, or… Your
+imagination is the limit!
+</p></dd>
+</dl>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#commitinfo"
accesskey="1">commitinfo</a>:</td><td> </td><td align="left"
valign="top">Pre-commit checking
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#verifymsg"
accesskey="2">verifymsg</a>:</td><td> </td><td align="left"
valign="top">How are log messages evaluated?
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#editinfo"
accesskey="3">editinfo</a>:</td><td> </td><td align="left"
valign="top">Specifying how log messages are created
+ (obsolete)
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#loginfo"
accesskey="4">loginfo</a>:</td><td> </td><td align="left"
valign="top">Where should log messages be sent?
+</td></tr>
+</table>
+
+<hr>
+<a name="commitinfo"></a>
+<div class="header">
+<p>
+Next: <a href="#verifymsg" accesskey="n" rel="next">verifymsg</a>, Up: <a
href="#commit-files" accesskey="u" rel="up">commit files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Commitinfo"></a>
+<h4 class="appendixsubsec">C.4.1 Commitinfo</h4>
+<a name="index-commitinfo"></a>
+<a name="index-Commits_002c-precommit-verification-of"></a>
+<a name="index-Precommit-checking"></a>
+
+<p>The <samp>commitinfo</samp> file defines programs to execute
+whenever ‘<samp>cvs commit</samp>’ is about to execute. These
+programs are used for pre-commit checking to verify
+that the modified, added and removed files are really
+ready to be committed. This could be used, for
+instance, to verify that the changed files conform to
+to your site’s standards for coding practice.
+</p>
+<p>As mentioned earlier, each line in the
+<samp>commitinfo</samp> file consists of a regular expression
+and a command-line template. The template can include
+a program name and any number of arguments you wish to
+supply to it. The full path to the current source
+repository is appended to the template, followed by the
+file names of any files involved in the commit (added,
+removed, and modified files).
+</p>
+<a name="index-Exit-status_002c-of-commitinfo"></a>
+<p>The first line with a regular expression matching the
+directory within the repository will be used. If the
+command returns a non-zero exit status the commit will
+be aborted.
+</p>
+<a name="index-DEFAULT-in-commitinfo"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<a name="index-ALL-in-commitinfo"></a>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or the name ‘<samp>DEFAULT</samp>’.
+</p>
+<a name="index-commitinfo_002c-working-directory"></a>
+<a name="index-commitinfo_002c-command-environment"></a>
+<p>The command will be run in the root of the workspace
+containing the new versions of any files the user would like
+to modify (commit), <em>or in a copy of the workspace on
+the server (see <a href="#Remote-repositories">Remote repositories</a>)</em>.
If a file is
+being removed, there will be no copy of the file under the
+current directory. If a file is being added, there will be
+no corresponding archive file in the repository unless the
+file is being resurrected.
+</p>
+<p>Note that both the repository directory and the corresponding
+Attic (see <a href="#Attic">Attic</a>) directory may need to be checked to
+locate the archive file corresponding to any given file being
+committed. Much of the information about the specific commit
+request being made, including the destination branch, commit
+message, and command line options specified, is not available
+to the command.
+</p>
+
+<hr>
+<a name="verifymsg"></a>
+<div class="header">
+<p>
+Next: <a href="#editinfo" accesskey="n" rel="next">editinfo</a>, Previous: <a
href="#commitinfo" accesskey="p" rel="prev">commitinfo</a>, Up: <a
href="#commit-files" accesskey="u" rel="up">commit files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Verifying-log-messages"></a>
+<h4 class="appendixsubsec">C.4.2 Verifying log messages</h4>
+<a name="index-verifymsg-_0028admin-file_0029"></a>
+<a name="index-Log-message_002c-verifying"></a>
+
+<p>Once you have entered a log message, you can evaluate
+that message to check for specific content, such as
+a bug ID. Use the <samp>verifymsg</samp> file to
+specify a program that is used to verify the log message.
+This program could be a simple script that checks
+that the entered message contains the required fields.
+</p>
+<p>The <samp>verifymsg</samp> file is often most useful together
+with the <samp>rcsinfo</samp> file, which can be used to
+specify a log message template.
+</p>
+<p>Each line in the <samp>verifymsg</samp> file consists of a
+regular expression and a command-line template. The
+template must include a program name, and can include
+any number of arguments. The full path to the current
+log message template file is appended to the template.
+</p>
+<p>One thing that should be noted is that the ‘<samp>ALL</samp>’
+keyword is not supported. If more than one matching
+line is found, the first one is used. This can be
+useful for specifying a default verification script in a
+directory, and then overriding it in a subdirectory.
+</p>
+<a name="index-DEFAULT-in-verifymsg"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<a name="index-Exit-status_002c-of-verifymsg"></a>
+<p>If the verification script exits with a non-zero exit status,
+the commit is aborted.
+</p>
+<a name="index-verifymsg_002c-changing-the-log-message"></a>
+<p>In the default configuration, CVS allows the
+verification script to change the log message. This is
+controlled via the RereadLogAfterVerify CVSROOT/config
+option.
+</p>
+<p>When ‘<samp>RereadLogAfterVerify=always</samp>’ or
+‘<samp>RereadLogAfterVerify=stat</samp>’, the log message will
+either always be reread after the verification script
+is run or reread only if the log message file status
+has changed.
+</p>
+<p>See <a href="#config">config</a>, for more on CVSROOT/config options.
+</p>
+<p>It is NOT a good idea for a <samp>verifymsg</samp> script to
+interact directly with the user in the various
+client/server methods. For the <code>pserver</code> method,
+there is no protocol support for communicating between
+<samp>verifymsg</samp> and the client on the remote end. For the
+<code>ext</code> and <code>server</code> methods, it is possible
+for CVS to become confused by the characters going
+along the same channel as the CVS protocol
+messages. See <a href="#Remote-repositories">Remote repositories</a>, for more
+information on client/server setups. In addition, at the time
+the <samp>verifymsg</samp> script runs, the CVS
+server has locks in place in the repository. If control is
+returned to the user here then other users may be stuck waiting
+for access to the repository.
+</p>
+<p>This option can be useful if you find yourself using an
+rcstemplate that needs to be modified to remove empty
+elements or to fill in default values. It can also be
+useful if the rcstemplate has changed in the repository
+and the CVS/Template was not updated, but is able to be
+adapted to the new format by the verification script
+that is run by <samp>verifymsg</samp>.
+</p>
+<p>An example of an update might be to change all
+occurrences of ’BugId:’ to be ’DefectId:’ (which can be
+useful if the rcstemplate has recently been changed and
+there are still checked-out user trees with cached
+copies in the CVS/Template file of the older version).
+</p>
+<p>Another example of an update might be to delete a line
+that contains ’BugID: none’ from the log message after
+validation of that value as being allowed is made.
+</p>
+<p>The following is a little silly example of a
+<samp>verifymsg</samp> file, together with the corresponding
+<samp>rcsinfo</samp> file, the log message template and an
+verification script. We begin with the log message template.
+We want to always record a bug-id number on the first
+line of the log message. The rest of log message is
+free text. The following template is found in the file
+<samp>/usr/cvssupport/tc.template</samp>.
+</p>
+<div class="example">
+<pre class="example">BugId:
+</pre></div>
+
+<p>The script <samp>/usr/cvssupport/bugid.verify</samp> is used to
+evaluate the log message.
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+#
+# bugid.verify filename
+#
+# Verify that the log message contains a valid bugid
+# on the first line.
+#
+if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
+ exit 0
+elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
+ # It is okay to allow commits with 'BugId: none',
+ # but do not put that text into the real log message.
+ grep -v '^BugId:[ ]*none$' > $1.rewrite
+ mv $1.rewrite $1
+ exit 0
+else
+ echo "No BugId found."
+ exit 1
+fi
+</pre></div>
+
+<p>The <samp>verifymsg</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/bugid.verify
+</pre></div>
+
+<p>The <samp>rcsinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/tc.template
+</pre></div>
+
+<p>The <samp>config</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">RereadLogAfterVerify=always
+</pre></div>
+
+
+
+<hr>
+<a name="editinfo"></a>
+<div class="header">
+<p>
+Next: <a href="#loginfo" accesskey="n" rel="next">loginfo</a>, Previous: <a
href="#verifymsg" accesskey="p" rel="prev">verifymsg</a>, Up: <a
href="#commit-files" accesskey="u" rel="up">commit files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Editinfo"></a>
+<h4 class="appendixsubsec">C.4.3 Editinfo</h4>
+<a name="index-editinfo-_0028admin-file_0029"></a>
+<a name="index-Editor_002c-specifying-per-module"></a>
+<a name="index-Per_002dmodule-editor"></a>
+<a name="index-Log-messages_002c-editing"></a>
+
+<p><strong>The <samp>editinfo</samp> feature has been
+rendered obsolete. To set a default editor for log
+messages use the <code>CVSEDITOR</code>, <code>EDITOR</code> environment
variables
+(see <a href="#Environment-variables">Environment variables</a>) or the
‘<samp>-e</samp>’ global
+option (see <a href="#Global-options">Global options</a>). See <a
href="#verifymsg">verifymsg</a>,
+for information on the use of the <samp>verifymsg</samp>
+feature for evaluating log messages.</strong>
+</p>
+<p>If you want to make sure that all log messages look the
+same way, you can use the <samp>editinfo</samp> file to
+specify a program that is used to edit the log message.
+This program could be a custom-made editor that always
+enforces a certain style of the log message, or maybe a
+simple shell script that calls an editor, and checks
+that the entered message contains the required fields.
+</p>
+<p>If no matching line is found in the <samp>editinfo</samp>
+file, the editor specified in the environment variable
+<code>$CVSEDITOR</code> is used instead. If that variable is
+not set, then the environment variable <code>$EDITOR</code>
+is used instead. If that variable is not
+set a default will be used. See <a href="#Committing-your-changes">Committing
your changes</a>.
+</p>
+<p>The <samp>editinfo</samp> file is often most useful together
+with the <samp>rcsinfo</samp> file, which can be used to
+specify a log message template.
+</p>
+<p>Each line in the <samp>editinfo</samp> file consists of a
+regular expression and a command-line template. The
+template must include a program name, and can include
+any number of arguments. The full path to the current
+log message template file is appended to the template.
+</p>
+<p>One thing that should be noted is that the ‘<samp>ALL</samp>’
+keyword is not supported. If more than one matching
+line is found, the first one is used. This can be
+useful for specifying a default edit script in a
+module, and then overriding it in a subdirectory.
+</p>
+<a name="index-DEFAULT-in-editinfo"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>If the edit script exits with a non-zero exit status,
+the commit is aborted.
+</p>
+<p>Note: when <small>CVS</small> is accessing a remote repository,
+or when the ‘<samp>-m</samp>’ or ‘<samp>-F</samp>’
options to <code>cvs
+commit</code> are used, <samp>editinfo</samp> will not be consulted.
+There is no good workaround for this; use
+<samp>verifymsg</samp> instead.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#editinfo-example"
accesskey="1">editinfo example</a>:</td><td> </td><td align="left"
valign="top">Editinfo example
+</td></tr>
+</table>
+
+<hr>
+<a name="editinfo-example"></a>
+<div class="header">
+<p>
+Up: <a href="#editinfo" accesskey="u" rel="up">editinfo</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Editinfo-example"></a>
+<h4 class="appendixsubsubsec">C.4.3.1 Editinfo example</h4>
+
+<p>The following is a little silly example of a
+<samp>editinfo</samp> file, together with the corresponding
+<samp>rcsinfo</samp> file, the log message template and an
+editor script. We begin with the log message template.
+We want to always record a bug-id number on the first
+line of the log message. The rest of log message is
+free text. The following template is found in the file
+<samp>/usr/cvssupport/tc.template</samp>.
+</p>
+<div class="example">
+<pre class="example">BugId:
+</pre></div>
+
+<p>The script <samp>/usr/cvssupport/bugid.edit</samp> is used to
+edit the log message.
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+#
+# bugid.edit filename
+#
+# Call $EDITOR on FILENAME, and verify that the
+# resulting file contains a valid bugid on the first
+# line.
+if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
+if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
+$CVSEDITOR $1
+until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
+do echo -n "No BugId found. Edit again? ([y]/n)"
+ read ans
+ case ${ans} in
+ n*) exit 1;;
+ esac
+ $CVSEDITOR $1
+done
+</pre></div>
+
+<p>The <samp>editinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/bugid.edit
+</pre></div>
+
+<p>The <samp>rcsinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/tc.template
+</pre></div>
+
+<hr>
+<a name="loginfo"></a>
+<div class="header">
+<p>
+Previous: <a href="#editinfo" accesskey="p" rel="prev">editinfo</a>, Up: <a
href="#commit-files" accesskey="u" rel="up">commit files</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Loginfo"></a>
+<h4 class="appendixsubsec">C.4.4 Loginfo</h4>
+<a name="index-loginfo-_0028admin-file_0029"></a>
+<a name="index-Storing-log-messages"></a>
+<a name="index-Mailing-log-messages"></a>
+<a name="index-Distributing-log-messages"></a>
+<a name="index-Log-messages"></a>
+
+<p>The <samp>loginfo</samp> file is used to control where
+‘<samp>cvs commit</samp>’ log information is sent. The first
+entry on a line is a regular expression which is tested
+against the directory that the change is being made to,
+relative to the <code>$CVSROOT</code>. If a match is found, then
+the remainder of the line is a filter program that
+should expect log information on its standard input.
+Note that the filter program <strong>must</strong> read <strong>all</strong>
+of the log information or <small>CVS</small> may fail with a broken pipe
signal.
+</p>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or ‘<samp>DEFAULT</samp>’.
+</p>
+<p>The first matching regular expression is used.
+</p>
+<p>See <a href="#commit-files">commit files</a>, for a description of the
syntax of
+the <samp>loginfo</samp> file.
+</p>
+<p>The user may specify a format string as
+part of the filter. The string is composed of a
+‘<samp>%</samp>’ followed by a space, or followed by a single
+format character, or followed by a set of format
+characters surrounded by ‘<samp>{</samp>’ and
‘<samp>}</samp>’ as
+separators. The format characters are:
+</p>
+<dl compact="compact">
+<dt><tt>s</tt></dt>
+<dd><p>file name
+</p></dd>
+<dt><tt>V</tt></dt>
+<dd><p>old version number (pre-checkin)
+</p></dd>
+<dt><tt>v</tt></dt>
+<dd><p>new version number (post-checkin)
+</p></dd>
+</dl>
+
+<p>All other characters that appear in a format string
+expand to an empty field (commas separating fields are
+still provided).
+</p>
+<p>For example, some valid format strings are ‘<samp>%</samp>’,
+‘<samp>%s</samp>’, ‘<samp>%{s}</samp>’, and
‘<samp>%{sVv}</samp>’.
+</p>
+<p>The output will be a space separated string of tokens enclosed in
+quotation marks (<tt>"</tt>).
+Any embedded dollar signs (<tt>$</tt>), backticks (<tt>`</tt>),
+backslashes (<tt>\</tt>), or quotation marks will be preceded
+by a backslash (this allows the shell to correctly parse it
+as a single string, reguardless of the characters it contains).
+For backwards compatibility, the first
+token will be the repository subdirectory. The rest of the
+tokens will be comma-delimited lists of the information
+requested in the format string. For example, if
+‘<samp>/u/src/master/yoyodyne/tc</samp>’ is the repository,
‘<samp>%{sVv}</samp>’
+is the format string, and three files (<tt>ChangeLog</tt>,
+<tt>Makefile</tt>, <tt>foo.c</tt>) were modified, the output
+might be:
+</p>
+<div class="example">
+<pre class="example">"yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4
foo.c,1.12,1.13"
+</pre></div>
+
+<p>As another example, ‘<samp>%{}</samp>’ means that only the
+name of the repository will be generated.
+</p>
+<p>Note: when <small>CVS</small> is accessing a remote repository,
+<samp>loginfo</samp> will be run on the <em>remote</em>
+(i.e., server) side, not the client side (see <a
href="#Remote-repositories">Remote repositories</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#loginfo-example"
accesskey="1">loginfo example</a>:</td><td> </td><td align="left"
valign="top">Loginfo example
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Keeping-a-checked-out-copy"
accesskey="2">Keeping a checked out copy</a>:</td><td> </td><td
align="left" valign="top">Updating a tree on every checkin
+</td></tr>
+</table>
+
+<hr>
+<a name="loginfo-example"></a>
+<div class="header">
+<p>
+Next: <a href="#Keeping-a-checked-out-copy" accesskey="n" rel="next">Keeping a
checked out copy</a>, Up: <a href="#loginfo" accesskey="u" rel="up">loginfo</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Loginfo-example"></a>
+<h4 class="appendixsubsubsec">C.4.4.1 Loginfo example</h4>
+
+<p>The following <samp>loginfo</samp> file, together with the
+tiny shell-script below, appends all log messages
+to the file <samp>$CVSROOT/CVSROOT/commitlog</samp>,
+and any commits to the administrative files (inside
+the <samp>CVSROOT</samp> directory) are also logged in
+<samp>/usr/adm/cvsroot-log</samp>.
+Commits to the <samp>prog1</samp> directory are mailed to <tt>ceder</tt>.
+</p>
+<div class="example">
+<pre class="example">ALL /usr/local/bin/cvs-log
$CVSROOT/CVSROOT/commitlog $USER
+^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+^prog1 Mail -s %s ceder
+</pre></div>
+
+<p>The shell-script <samp>/usr/local/bin/cvs-log</samp> looks
+like this:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+(echo "------------------------------------------------------";
+ echo -n $2" ";
+ date;
+ echo;
+ cat) >> $1
+</pre></div>
+
+<hr>
+<a name="Keeping-a-checked-out-copy"></a>
+<div class="header">
+<p>
+Previous: <a href="#loginfo-example" accesskey="p" rel="prev">loginfo
example</a>, Up: <a href="#loginfo" accesskey="u" rel="up">loginfo</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Keeping-a-checked-out-copy-1"></a>
+<h4 class="appendixsubsubsec">C.4.4.2 Keeping a checked out copy</h4>
+
+<a name="index-Keeping-a-checked-out-copy"></a>
+<a name="index-Checked-out-copy_002c-keeping"></a>
+<a name="index-Web-pages_002c-maintaining-with-CVS"></a>
+
+<p>It is often useful to maintain a directory tree which
+contains files which correspond to the latest version
+in the repository. For example, other developers might
+want to refer to the latest sources without having to
+check them out, or you might be maintaining a web site
+with <small>CVS</small> and want every checkin to cause the files
+used by the web server to be updated.
+</p>
+<p>The way to do this is by having loginfo invoke
+<code>cvs update</code>. Doing so in the naive way will
+cause a problem with locks, so the <code>cvs update</code>
+must be run in the background.
+Here is an example for unix (this should all be on one line):
+</p>
+<div class="example">
+<pre class="example">^cyclic-pages (date; cat; (sleep 2; cd
/u/www/local-docs;
+ cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
+</pre></div>
+
+<p>This will cause checkins to repository directories
+starting with <code>cyclic-pages</code> to update the checked
+out tree in <samp>/u/www/local-docs</samp>.
+</p>
+<hr>
+<a name="rcsinfo"></a>
+<div class="header">
+<p>
+Next: <a href="#taginfo" accesskey="n" rel="next">taginfo</a>, Previous: <a
href="#commit-files" accesskey="p" rel="prev">commit files</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Rcsinfo"></a>
+<h3 class="appendixsec">C.5 Rcsinfo</h3>
+<a name="index-rcsinfo-_0028admin-file_0029"></a>
+<a name="index-Form-for-log-message"></a>
+<a name="index-Log-message-template"></a>
+<a name="index-Template-for-log-message"></a>
+
+<p>The <samp>rcsinfo</samp> file can be used to specify a form to
+edit when filling out the commit log. The
+<samp>rcsinfo</samp> file has a syntax similar to the
+<samp>verifymsg</samp>, <samp>commitinfo</samp> and <samp>loginfo</samp>
+files. See <a href="#syntax">syntax</a>. Unlike the other files the second
+part is <em>not</em> a command-line template. Instead,
+the part after the regular expression should be a full pathname to
+a file containing the log message template.
+</p>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or ‘<samp>DEFAULT</samp>’.
+</p>
+<p>The log message template will be used as a default log
+message. If you specify a log message with ‘<samp>cvs
+commit -m <var>message</var></samp>’ or ‘<samp>cvs commit -f
+<var>file</var></samp>’ that log message will override the
+template.
+</p>
+<p>See <a href="#verifymsg">verifymsg</a>, for an example <samp>rcsinfo</samp>
+file.
+</p>
+<p>When <small>CVS</small> is accessing a remote repository,
+the contents of <samp>rcsinfo</samp> at the time a directory
+is first checked out will specify a template which does
+not then change. If you edit <samp>rcsinfo</samp> or its
+templates, you may need to check out a new working
+directory.
+</p>
+<hr>
+<a name="taginfo"></a>
+<div class="header">
+<p>
+Next: <a href="#cvsignore" accesskey="n" rel="next">cvsignore</a>, Previous:
<a href="#rcsinfo" accesskey="p" rel="prev">rcsinfo</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Taginfo"></a>
+<h3 class="appendixsec">C.6 Taginfo</h3>
+<a name="index-taginfo-_0028admin-file_0029"></a>
+<a name="index-Tags_002c-logging"></a>
+<a name="index-Tags_002c-verifying"></a>
+<p>The <samp>taginfo</samp> file defines programs to execute
+when someone executes a <code>tag</code> or <code>rtag</code>
+command. The <samp>taginfo</samp> file has the standard form
+for trigger scripts (see <a href="#Trigger-Scripts">Trigger Scripts</a>),
+where each line is a regular expression
+followed by a command to execute (see <a href="#syntax">syntax</a>). The
arguments passed
+to the command are, in order, the <var>tagname</var>,
+<var>operation</var> (<code>add</code> for <code>tag</code>,
+<code>mov</code> for <code>tag -F</code>, and <code>del</code> for
+<code>tag -d</code>), <var>repository</var>, and any remaining are
+pairs of <var>filename</var> <var>revision</var>. A non-zero
+exit of the filter program will cause the tag to be
+aborted.
+</p>
+<p>Here is an example of using the <samp>taginfo</samp> file
+to log <code>tag</code> and <code>rtag</code>
+commands. In the <samp>taginfo</samp> file put:
+</p>
+<div class="example">
+<pre class="example">ALL /usr/local/cvsroot/CVSROOT/loggit
+</pre></div>
+
+<p>Where <samp>/usr/local/cvsroot/CVSROOT/loggit</samp> contains the
+following script:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+echo "$@" >>/home/kingdon/cvsroot/CVSROOT/taglog
+</pre></div>
+
+<hr>
+<a name="cvsignore"></a>
+<div class="header">
+<p>
+Next: <a href="#checkoutlist" accesskey="n" rel="next">checkoutlist</a>,
Previous: <a href="#taginfo" accesskey="p" rel="prev">taginfo</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Ignoring-files-via-cvsignore"></a>
+<h3 class="appendixsec">C.7 Ignoring files via cvsignore</h3>
+<a name="index-cvsignore-_0028admin-file_0029_002c-global"></a>
+<a name="index-Global-cvsignore"></a>
+<a name="index-Ignoring-files"></a>
+
+<p>There are certain file names that frequently occur
+inside your working copy, but that you don’t want to
+put under <small>CVS</small> control. Examples are all the object
+files that you get while you compile your sources.
+Normally, when you run ‘<samp>cvs update</samp>’, it prints a
+line for each file it encounters that it doesn’t know
+about (see <a href="#update-output">update output</a>).
+</p>
+<p><small>CVS</small> has a list of files (or sh(1) file name patterns)
+that it should ignore while running <code>update</code>,
+<code>import</code> and <code>release</code>.
+This list is constructed in the following way.
+</p>
+<ul>
+<li> The list is initialized to include certain file name
+patterns: names associated with <small>CVS</small>
+administration, or with other common source control
+systems; common names for patch files, object files,
+archive files, and editor backup files; and other names
+that are usually artifacts of assorted utilities.
+Currently, the default list of ignored file name
+patterns is:
+
+<a name="index-Ignored-files"></a>
+<a name="index-Automatically-ignored-files"></a>
+<div class="example">
+<pre class="example"> RCS SCCS CVS CVS.adm
+ RCSLOG cvslog.*
+ tags TAGS
+ .make.state .nse_depinfo
+ *~ #* .#* ,* _$* *$
+ *.old *.bak *.BAK *.orig *.rej .del-*
+ *.a *.olb *.o *.obj *.so *.exe
+ *.Z *.elc *.ln
+ core
+</pre></div>
+
+</li><li> The per-repository list in
+<samp>$CVSROOT/CVSROOT/cvsignore</samp> is appended to
+the list, if that file exists.
+
+</li><li> The per-user list in <samp>.cvsignore</samp> in your home
+directory is appended to the list, if it exists.
+
+</li><li> Any entries in the environment variable
+<code>$CVSIGNORE</code> is appended to the list.
+
+</li><li> Any ‘<samp>-I</samp>’ options given to
<small>CVS</small> is appended.
+
+</li><li> As <small>CVS</small> traverses through your directories, the
contents
+of any <samp>.cvsignore</samp> will be appended to the list.
+The patterns found in <samp>.cvsignore</samp> are only valid
+for the directory that contains them, not for
+any sub-directories.
+</li></ul>
+
+<p>In any of the 5 places listed above, a single
+exclamation mark (‘<samp>!</samp>’) clears the ignore list.
+This can be used if you want to store any file which
+normally is ignored by <small>CVS</small>.
+</p>
+<p>Specifying ‘<samp>-I !</samp>’ to <code>cvs import</code> will
import
+everything, which is generally what you want to do if
+you are importing files from a pristine distribution or
+any other source which is known to not contain any
+extraneous files. However, looking at the rules above
+you will see there is a fly in the ointment; if the
+distribution contains any <samp>.cvsignore</samp> files, then
+the patterns from those files will be processed even if
+‘<samp>-I !</samp>’ is specified. The only workaround is to
+remove the <samp>.cvsignore</samp> files in order to do the
+import. Because this is awkward, in the future
+‘<samp>-I !</samp>’ might be modified to override
+<samp>.cvsignore</samp> files in each directory.
+</p>
+<p>Note that the syntax of the ignore files consists of a
+series of lines, each of which contains a space
+separated list of filenames. This offers no clean way
+to specify filenames which contain spaces, but you can
+use a workaround like <samp>foo?bar</samp> to match a file
+named <samp>foo bar</samp> (it also matches <samp>fooxbar</samp>
+and the like). Also note that there is currently no
+way to specify comments.
+</p>
+<hr>
+<a name="checkoutlist"></a>
+<div class="header">
+<p>
+Next: <a href="#history-file" accesskey="n" rel="next">history file</a>,
Previous: <a href="#cvsignore" accesskey="p" rel="prev">cvsignore</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-checkoutlist-file"></a>
+<h3 class="appendixsec">C.8 The checkoutlist file</h3>
+<a name="index-checkoutlist"></a>
+
+<p>It may be helpful to use <small>CVS</small> to maintain your own
+files in the <samp>CVSROOT</samp> directory. For example,
+suppose that you have a script <samp>logcommit.pl</samp>
+which you run by including the following line in the
+<samp>commitinfo</samp> administrative file:
+</p>
+<div class="example">
+<pre class="example">ALL $CVSROOT/CVSROOT/logcommit.pl
+</pre></div>
+
+<p>To maintain <samp>logcommit.pl</samp> with <small>CVS</small> you would
+add the following line to the <samp>checkoutlist</samp>
+administrative file:
+</p>
+<div class="example">
+<pre class="example">logcommit.pl
+</pre></div>
+
+<p>The format of <samp>checkoutlist</samp> is one line for each
+file that you want to maintain using <small>CVS</small>, giving
+the name of the file, followed optionally by more whitespace
+and any error message that should print if the file cannot be
+checked out into CVSROOT after a commit:
+</p>
+<div class="example">
+<pre class="example">logcommit.pl Could not update CVSROOT/logcommit.pl.
+</pre></div>
+
+<p>After setting up <samp>checkoutlist</samp> in this fashion,
+the files listed there will function just like
+<small>CVS</small>’s built-in administrative files. For example,
+when checking in one of the files you should get a
+message such as:
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>and the checked out copy in the <samp>CVSROOT</samp>
+directory should be updated.
+</p>
+<p>Note that listing <samp>passwd</samp> (see <a
href="#Password-authentication-server">Password authentication server</a>) in
<samp>checkoutlist</samp> is not
+recommended for security reasons.
+</p>
+<p>For information about keeping a checkout out copy in a
+more general context than the one provided by
+<samp>checkoutlist</samp>, see <a href="#Keeping-a-checked-out-copy">Keeping a
checked out copy</a>.
+</p>
+<hr>
+<a name="history-file"></a>
+<div class="header">
+<p>
+Next: <a href="#Variables" accesskey="n" rel="next">Variables</a>, Previous:
<a href="#checkoutlist" accesskey="p" rel="prev">checkoutlist</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-history-file"></a>
+<h3 class="appendixsec">C.9 The history file</h3>
+<a name="index-History-file"></a>
+<a name="index-Log-information_002c-saving"></a>
+
+<p>The file <samp>$CVSROOT/CVSROOT/history</samp> is used
+to log information for the <code>history</code> command
+(see <a href="#history">history</a>). This file must be created to turn
+on logging. This is done automatically if the
+<code>cvs init</code> command is used to set up the
+repository (see <a href="#Creating-a-repository">Creating a repository</a>).
+</p>
+<p>The file format of the <samp>history</samp> file is
+documented only in comments in the <small>CVS</small> source
+code, but generally programs should use the <code>cvs
+history</code> command to access it anyway, in case the
+format changes with future releases of <small>CVS</small>.
+</p>
+<hr>
+<a name="Variables"></a>
+<div class="header">
+<p>
+Next: <a href="#config" accesskey="n" rel="next">config</a>, Previous: <a
href="#history-file" accesskey="p" rel="prev">history file</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Expansions-in-administrative-files"></a>
+<h3 class="appendixsec">C.10 Expansions in administrative files</h3>
+<a name="index-Internal-variables"></a>
+<a name="index-Variables"></a>
+
+<p>Sometimes in writing an administrative file, you might
+want the file to be able to know various things based
+on environment <small>CVS</small> is running in. There are
+several mechanisms to do that.
+</p>
+<p>To find the home directory of the user running <small>CVS</small>
+(from the <code>HOME</code> environment variable), use
+‘<samp>~</samp>’ followed by ‘<samp>/</samp>’ or the
end of the line.
+Likewise for the home directory of <var>user</var>, use
+‘<samp>~<var>user</var></samp>’. These variables are expanded on
+the server machine, and don’t get any reasonable
+expansion if pserver (see <a href="#Password-authenticated">Password
authenticated</a>)
+is in use; therefore user variables (see below) may be
+a better choice to customize behavior based on the user
+running <small>CVS</small>.
+</p>
+<p>One may want to know about various pieces of
+information internal to <small>CVS</small>. A <small>CVS</small> internal
+variable has the syntax <code>${<var>variable</var>}</code>,
+where <var>variable</var> starts with a letter and consists
+of alphanumeric characters and ‘<samp>_</samp>’. If the
+character following <var>variable</var> is a
+non-alphanumeric character other than ‘<samp>_</samp>’, the
+‘<samp>{</samp>’ and ‘<samp>}</samp>’ can be omitted.
The <small>CVS</small>
+internal variables are:
+</p>
+<dl compact="compact">
+<dt><code>CVSROOT</code></dt>
+<dd><a name="index-CVSROOT_002c-internal-variable"></a>
+<p>This is the absolute path to the current <small>CVS</small> root directory.
+See <a href="#Repository">Repository</a>, for a description of the various
+ways to specify this, but note that the internal
+variable contains just the directory and not any
+of the access method information.
+</p>
+</dd>
+<dt><code>RCSBIN</code></dt>
+<dd><a name="index-RCSBIN_002c-internal-variable"></a>
+<p>In <small>CVS</small> 1.9.18 and older, this specified the
+directory where <small>CVS</small> was looking for <small>RCS</small>
+programs. Because <small>CVS</small> no longer runs <small>RCS</small>
+programs, specifying this internal variable is now an
+error.
+</p>
+</dd>
+<dt><code>CVSEDITOR</code></dt>
+<dd><a name="index-CVSEDITOR_002c-internal-variable"></a>
+</dd>
+<dt><code>EDITOR</code></dt>
+<dd><a name="index-EDITOR_002c-internal-variable"></a>
+</dd>
+<dt><code>VISUAL</code></dt>
+<dd><a name="index-VISUAL_002c-internal-variable"></a>
+<p>These all expand to the same value, which is the editor
+that <small>CVS</small> is using. See <a href="#Global-options">Global
options</a>, for how
+to specify this.
+</p>
+</dd>
+<dt><code>USER</code></dt>
+<dd><a name="index-USER_002c-internal-variable"></a>
+<p>Username of the user running <small>CVS</small> (on the <small>CVS</small>
+server machine).
+When using pserver, this is the user specified in the repository
+specification which need not be the same as the username the
+server is running as (see <a href="#Password-authentication-server">Password
authentication server</a>).
+Do not confuse this with the environment variable of the same name.
+</p></dd>
+</dl>
+
+<p>If you want to pass a value to the administrative files
+which the user who is running <small>CVS</small> can specify,
+use a user variable.
+<a name="index-User-variables"></a>
+To expand a user variable, the
+administrative file contains
+<code>${=<var>variable</var>}</code>. To set a user variable,
+specify the global option ‘<samp>-s</samp>’ to <small>CVS</small>,
with
+argument <code><var>variable</var>=<var>value</var></code>. It may be
+particularly useful to specify this option via
+<samp>.cvsrc</samp> (see <a href="#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<p>For example, if you want the administrative file to
+refer to a test directory you might create a user
+variable <code>TESTDIR</code>. Then if <small>CVS</small> is invoked
+as
+</p>
+<div class="example">
+<pre class="example">cvs -s TESTDIR=/work/local/tests
+</pre></div>
+
+<p>and the
+administrative file contains <code>sh
+${=TESTDIR}/runtests</code>, then that string is expanded
+to <code>sh /work/local/tests/runtests</code>.
+</p>
+<p>All other strings containing ‘<samp>$</samp>’ are reserved;
+there is no way to quote a ‘<samp>$</samp>’ character so that
+‘<samp>$</samp>’ represents itself.
+</p>
+<p>Environment variables passed to administrative files are:
+</p>
+<dl compact="compact">
+<dd><a
name="index-environment-variables_002c-passed-to-administrative-files"></a>
+
+</dd>
+<dt><code>CVS_USER</code></dt>
+<dd><a name="index-CVS_005fUSER_002c-environment-variable"></a>
+<p>The <small>CVS</small>-specific username provided by the user, if it
+can be provided (currently just for the pserver access
+method), and to the empty string otherwise. (<code>CVS_USER</code>
+and <code>USER</code> may differ when <samp>$CVSROOT/CVSROOT/passwd</samp>
+is used to map <small>CVS</small> usernames to system usernames.)
+</p>
+</dd>
+<dt><code>LOGNAME</code></dt>
+<dd><a name="index-LOGNAME_002c-environment-variable"></a>
+<p>The username of the system user.
+</p>
+</dd>
+<dt><code>USER</code></dt>
+<dd><a name="index-USER_002c-environment-variable"></a>
+<p>Same as <code>LOGNAME</code>.
+Do not confuse this with the internal variable of the same name.
+</p></dd>
+</dl>
+
+<hr>
+<a name="config"></a>
+<div class="header">
+<p>
+Previous: <a href="#Variables" accesskey="p" rel="prev">Variables</a>, Up: <a
href="#Administrative-files" accesskey="u" rel="up">Administrative files</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="The-CVSROOT_002fconfig-configuration-file"></a>
+<h3 class="appendixsec">C.11 The CVSROOT/config configuration file</h3>
+
+<a name="index-config_002c-in-CVSROOT"></a>
+<a name="index-CVSROOT_002fconfig"></a>
+
+<p>The administrative file <samp>config</samp> contains various
+miscellaneous settings which affect the behavior of
+<small>CVS</small>. The syntax is slightly different from the
+other administrative files. Variables are not
+expanded. Lines which start with ‘<samp>#</samp>’ are
+considered comments.
+Other lines consist of a keyword, ‘<samp>=</samp>’, and a
+value. Note that this syntax is very strict.
+Extraneous spaces or tabs are not permitted.
+</p>
+<p>Currently defined keywords are:
+</p>
+<dl compact="compact">
+<dd><a name="index-RCSBIN_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>RCSBIN=<var>bindir</var></code></dt>
+<dd><p>For <small>CVS</small> 1.9.12 through 1.9.18, this setting told
+<small>CVS</small> to look for <small>RCS</small> programs in the
+<var>bindir</var> directory. Current versions of <small>CVS</small>
+do not run <small>RCS</small> programs; for compatibility this
+setting is accepted, but it does nothing.
+</p>
+<a name="index-SystemAuth_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>SystemAuth=<var>value</var></code></dt>
+<dd><p>If <var>value</var> is ‘<samp>yes</samp>’, then pserver
should check
+for users in the system’s user database if not found in
+<samp>CVSROOT/passwd</samp>. If it is ‘<samp>no</samp>’, then all
+pserver users must exist in <samp>CVSROOT/passwd</samp>.
+The default is ‘<samp>yes</samp>’. For more on pserver, see
+<a href="#Password-authenticated">Password authenticated</a>.
+</p>
+
+<a name="index-TopLevelAdmin_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>TopLevelAdmin=<var>value</var></code></dt>
+<dd><p>Modify the ‘<samp>checkout</samp>’ command to create a
+‘<samp>CVS</samp>’ directory at the top level of the new
+working directory, in addition to ‘<samp>CVS</samp>’
+directories created within checked-out directories.
+The default value is ‘<samp>no</samp>’.
+</p>
+<p>This option is useful if you find yourself performing
+many commands at the top level of your working
+directory, rather than in one of the checked out
+subdirectories. The <samp>CVS</samp> directory created there
+will mean you don’t have to specify <code>CVSROOT</code> for
+each command. It also provides a place for the
+<samp>CVS/Template</samp> file (see <a
href="#Working-directory-storage">Working directory storage</a>).
+</p>
+<a name="index-LockDir_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>LockDir=<var>directory</var></code></dt>
+<dd><p>Put <small>CVS</small> lock files in <var>directory</var> rather than
+directly in the repository. This is useful if you want
+to let users read from the repository while giving them
+write access only to <var>directory</var>, not to the
+repository.
+It can also be used to put the locks on a very fast
+in-memory file system to speed up locking and unlocking
+the repository.
+You need to create <var>directory</var>, but
+<small>CVS</small> will create subdirectories of <var>directory</var> as it
+needs them. For information on <small>CVS</small> locks, see
+<a href="#Concurrency">Concurrency</a>.
+</p>
+<p>Before enabling the LockDir option, make sure that you
+have tracked down and removed any copies of <small>CVS</small> 1.9 or
+older. Such versions neither support LockDir, nor will
+give an error indicating that they don’t support it.
+The result, if this is allowed to happen, is that some
+<small>CVS</small> users will put the locks one place, and others will
+put them another place, and therefore the repository
+could become corrupted. <small>CVS</small> 1.10 does not support
+LockDir but it will print a warning if run on a
+repository with LockDir enabled.
+</p>
+<a name="index-LogHistory_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>LogHistory=<var>value</var></code></dt>
+<dd><p>Control what is logged to the <samp>CVSROOT/history</samp> file (see <a
href="#history">history</a>).
+Default of ‘<samp>TOEFWUPCGMAR</samp>’ (or simply
‘<samp>all</samp>’) will log
+all transactions. Any subset of the default is
+legal. (For example, to only log transactions that modify the
+<samp>*,v</samp> files, use ‘<samp>LogHistory=TMAR</samp>’.)
+</p>
+<a name="index-RereadLogAfterVerify_002c-in-CVSROOT_002fconfig"></a>
+<a name="index-verifymsg_002c-changing-the-log-message-1"></a>
+</dd>
+<dt><code>RereadLogAfterVerify=<var>value</var></code></dt>
+<dd><p>Modify the ‘<samp>commit</samp>’ command such that CVS will
reread the
+log message after running the program specified by <samp>verifymsg</samp>.
+<var>value</var> may be one of ‘<samp>yes</samp>’ or
‘<samp>always</samp>’, indicating that
+the log message should always be reread; ‘<samp>no</samp>’
+or ‘<samp>never</samp>’, indicating that it should never be
+reread; or <var>value</var> may be ‘<samp>stat</samp>’, indicating
+that the file should be checked with the file system
+‘<samp>stat()</samp>’ function to see if it has changed (see
warning below)
+before rereading. The default value is ‘<samp>always</samp>’.
+</p>
+<p><strong>The ‘stat’ mode can cause CVS to pause for up to
+one extra second per directory committed. This can be less IO and
+CPU intensive but is not recommended for use with large repositories</strong>
+</p>
+<p>See <a href="#verifymsg">verifymsg</a>, for more information on how
verifymsg
+may be used.
+</p>
+<a name="index-IgnoreUnknownConfigKeys_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>IgnoreUnknownConfigKeys=<var>value</var></code></dt>
+<dd><p>If <var>value</var> is ‘<samp>yes</samp>’, then
<small>CVS</small> should
+ignore any keywords in <samp>CVSROOT/config</samp> which it
+does not recognize. This option is intended primarily
+for transitions between versions of <small>CVS</small> which
+support more configuration options in an environment
+where a read-only mirror of the current <small>CVS</small> server
+may be maintained by someone else who is not yet ready
+to upgrade to the same version. It is recommended that
+this option be used only for a short time so that
+problems with the <samp>CVSROOT/config</samp> file will be
+found quickly. The default is ‘<samp>no</samp>’.
+</p></dd>
+</dl>
+
+<hr>
+<a name="Environment-variables"></a>
+<div class="header">
+<p>
+Next: <a href="#Compatibility" accesskey="n" rel="next">Compatibility</a>,
Previous: <a href="#Administrative-files" accesskey="p"
rel="prev">Administrative files</a>, Up: <a href="#Top" accesskey="u"
rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="All-environment-variables-which-affect-CVS"></a>
+<h2 class="appendix">Appendix D All environment variables which affect CVS</h2>
+<a name="index-Environment-variables"></a>
+<a name="index-Reference-manual-for-variables"></a>
+
+<p>This is a complete list of all environment variables
+that affect <small>CVS</small>.
+</p>
+<dl compact="compact">
+<dd><a name="index-CVSIGNORE_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVSIGNORE</code></dt>
+<dd><p>A whitespace-separated list of file name patterns that
+<small>CVS</small> should ignore. See <a href="#cvsignore">cvsignore</a>.
+</p>
+<a name="index-CVSWRAPPERS_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$CVSWRAPPERS</code></dt>
+<dd><p>A whitespace-separated list of file name patterns that
+<small>CVS</small> should treat as wrappers. See <a
href="#Wrappers">Wrappers</a>.
+</p>
+<a name="index-CVSREAD_002c-environment-variable"></a>
+<a name="index-Read_002donly-files_002c-and-CVSREAD"></a>
+</dd>
+<dt><code>$CVSREAD</code></dt>
+<dd><p>If this is set, <code>checkout</code> and <code>update</code> will
+try hard to make the files in your working directory
+read-only. When this is not set, the default behavior
+is to permit modification of your working files.
+</p>
+</dd>
+<dt><code>$CVSUMASK</code></dt>
+<dd><p>Controls permissions of files in the repository. See
+<a href="#File-permissions">File permissions</a>.
+</p>
+</dd>
+<dt><code>$CVSROOT</code></dt>
+<dd><p>Should contain the full pathname to the root of the <small>CVS</small>
+source repository (where the <small>RCS</small> files are
+kept). This information must be available to <small>CVS</small> for
+most commands to execute; if <code>$CVSROOT</code> is not set,
+or if you wish to override it for one invocation, you
+can supply it on the command line: ‘<samp>cvs -d cvsroot
+cvs_command…</samp>’ Once you have checked out a working
+directory, <small>CVS</small> stores the appropriate root (in
+the file <samp>CVS/Root</samp>), so normally you only need to
+worry about this when initially checking out a working
+directory.
+</p>
+</dd>
+<dt><code>$CVSEDITOR</code></dt>
+<dd><a name="index-CVSEDITOR_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$EDITOR</code></dt>
+<dd><a name="index-EDITOR_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$VISUAL</code></dt>
+<dd><a name="index-VISUAL_002c-environment-variable-1"></a>
+<p>Specifies the program to use for recording log messages
+during commit. <code>$CVSEDITOR</code> overrides
+<code>$EDITOR</code>, which overrides <code>$VISUAL</code>.
+See <a href="#Committing-your-changes">Committing your changes</a> for more or
+<a href="#Global-options">Global options</a> for alternative ways of
specifying a
+log editor.
+</p>
+<a name="index-PATH_002c-environment-variable"></a>
+</dd>
+<dt><code>$PATH</code></dt>
+<dd><p>If <code>$RCSBIN</code> is not set, and no path is compiled
+into <small>CVS</small>, it will use <code>$PATH</code> to try to find all
+programs it uses.
+</p>
+<a name="index-HOME_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOME</code></dt>
+<dd><a name="index-HOMEPATH_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOMEPATH</code></dt>
+<dd><a name="index-HOMEDRIVE_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOMEDRIVE</code></dt>
+<dd><p>Used to locate the directory where the <samp>.cvsrc</samp>
+file, and other such files, are searched. On Unix, <small>CVS</small>
+just checks for <code>HOME</code>. On Windows NT, the system will
+set <code>HOMEDRIVE</code>, for example to ‘<samp>d:</samp>’ and
<code>HOMEPATH</code>,
+for example to <samp>\joe</samp>. On Windows 95, you’ll
+probably need to set <code>HOMEDRIVE</code> and <code>HOMEPATH</code> yourself.
+</p>
+<a name="index-CVS_005fRSH_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_RSH</code></dt>
+<dd><p>Specifies the external program which <small>CVS</small> connects with,
+when <code>:ext:</code> access method is specified.
+see <a href="#Connecting-via-rsh">Connecting via rsh</a>.
+</p>
+<a name="index-CVS_005fSSH_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_SSH</code></dt>
+<dd><p>Specifies the external program which <small>CVS</small> connects with,
+when <code>:extssh:</code> access method is specified.
+see <a href="#Connecting-via-rsh">Connecting via rsh</a>.
+</p>
+</dd>
+<dt><code>$CVS_SERVER</code></dt>
+<dd><p>Used in client-server mode when accessing a remote
+repository using <small>RSH</small>. It specifies the name of
+the program to start on the server side (and any
+necessary arguments) when accessing a remote repository
+using the <code>:ext:</code>, <code>:fork:</code>, or <code>:server:</code>
access methods.
+The default value for <code>:ext:</code> and <code>:server:</code> is
<code>cvs</code>;
+the default value for <code>:fork:</code> is the name used to run the client.
+see <a href="#Connecting-via-rsh">Connecting via rsh</a>
+</p>
+</dd>
+<dt><code>$CVS_PASSFILE</code></dt>
+<dd><p>Used in client-server mode when accessing the <code>cvs
+login server</code>. Default value is <samp>$HOME/.cvspass</samp>.
+see <a href="#Password-authentication-client">Password authentication
client</a>
+</p>
+</dd>
+<dt><code>$CVS_CLIENT_PORT</code></dt>
+<dd><p>Used in client-server mode to set the port to use when accessing the
server
+via Kerberos, GSSAPI, or <small>CVS</small>’s password authentication
protocol
+if the port is not specified in the CVSROOT.
+see <a href="#Remote-repositories">Remote repositories</a>
+</p>
+<a name="index-CVS_005fRCMD_005fPORT_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_RCMD_PORT</code></dt>
+<dd><p>Used in client-server mode. If set, specifies the port
+number to be used when accessing the <small>RCMD</small> demon on
+the server side. (Currently not used for Unix clients).
+</p>
+<a name="index-CVS_005fCLIENT_005fLOG_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_CLIENT_LOG</code></dt>
+<dd><p>Used for debugging only in client-server
+mode. If set, everything sent to the server is logged
+into <samp><code>$CVS_CLIENT_LOG</code>.in</samp> and everything
+sent from the server is logged into
+<samp><code>$CVS_CLIENT_LOG</code>.out</samp>.
+</p>
+<a name="index-CVS_005fSERVER_005fSLEEP_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_SERVER_SLEEP</code></dt>
+<dd><p>Used only for debugging the server side in
+client-server mode. If set, delays the start of the
+server child process the specified amount of
+seconds so that you can attach to it with a debugger.
+</p>
+<a
name="index-CVS_005fIGNORE_005fREMOTE_005fROOT_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_IGNORE_REMOTE_ROOT</code></dt>
+<dd><p>For <small>CVS</small> 1.10 and older, setting this variable
+prevents <small>CVS</small> from overwriting the <samp>CVS/Root</samp>
+file when the ‘<samp>-d</samp>’ global option is specified.
+Later versions of <small>CVS</small> do not rewrite
+<samp>CVS/Root</samp>, so <code>CVS_IGNORE_REMOTE_ROOT</code> has no
+effect.
+</p>
+<a name="index-COMSPEC_002c-environment-variable"></a>
+</dd>
+<dt><code>$COMSPEC</code></dt>
+<dd><p>Used under OS/2 only. It specifies the name of the
+command interpreter and defaults to <small>CMD.EXE</small>.
+</p>
+<a name="index-TMPDIR_002c-environment-variable"></a>
+</dd>
+<dt><code>$TMPDIR</code></dt>
+<dd><a name="index-TMP_002c-environment-variable"></a>
+</dd>
+<dt><code>$TMP</code></dt>
+<dd><a name="index-TEMP_002c-environment-variable"></a>
+</dd>
+<dt><code>$TEMP</code></dt>
+<dd><a name="index-Temporary-files_002c-location-of"></a>
+<p>Directory in which temporary files are located.
+The <small>CVS</small> server uses
+<code>TMPDIR</code>. See <a href="#Global-options">Global options</a>, for a
+description of how to specify this.
+Some parts of <small>CVS</small> will always use <samp>/tmp</samp> (via
+the <code>tmpnam</code> function provided by the system).
+</p>
+<p>On Windows NT, <code>TMP</code> is used (via the <code>_tempnam</code>
+function provided by the system).
+</p>
+<p>The <code>patch</code> program which is used by the <small>CVS</small>
+client uses <code>TMPDIR</code>, and if it is not set, uses
+<samp>/tmp</samp> (at least with GNU patch 2.1). Note that
+if your server and client are both running <small>CVS</small>
+1.9.10 or later, <small>CVS</small> will not invoke an external
+<code>patch</code> program.
+</p></dd>
+</dl>
+
+<hr>
+<a name="Compatibility"></a>
+<div class="header">
+<p>
+Next: <a href="#Troubleshooting" accesskey="n" rel="next">Troubleshooting</a>,
Previous: <a href="#Environment-variables" accesskey="p" rel="prev">Environment
variables</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Compatibility-between-CVS-Versions"></a>
+<h2 class="appendix">Appendix E Compatibility between CVS Versions</h2>
+
+<a name="index-CVS_002c-versions-of"></a>
+<a name="index-Versions_002c-of-CVS"></a>
+<a name="index-Compatibility_002c-between-CVS-versions"></a>
+<p>The repository format is compatible going back to
+<small>CVS</small> 1.3. But see <a href="#Watches-Compatibility">Watches
Compatibility</a>, if
+you have copies of <small>CVS</small> 1.6 or older and you want
+to use the optional developer communication features.
+</p>
+<p>The working directory format is compatible going back
+to <small>CVS</small> 1.5. It did change between <small>CVS</small> 1.3
+and <small>CVS</small> 1.5. If you run <small>CVS</small> 1.5 or newer on
+a working directory checked out with <small>CVS</small> 1.3,
+<small>CVS</small> will convert it, but to go back to <small>CVS</small>
+1.3 you need to check out a new working directory with
+<small>CVS</small> 1.3.
+</p>
+<p>The remote protocol is interoperable going back to <small>CVS</small> 1.5,
but no
+further (1.5 was the first official release with the remote protocol,
+but some older versions might still be floating around). In many
+cases you need to upgrade both the client and the server to take
+advantage of new features and bug fixes, however.
+</p>
+
+<hr>
+<a name="Troubleshooting"></a>
+<div class="header">
+<p>
+Next: <a href="#Credits" accesskey="n" rel="next">Credits</a>, Previous: <a
href="#Compatibility" accesskey="p" rel="prev">Compatibility</a>, Up: <a
href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Troubleshooting-1"></a>
+<h2 class="appendix">Appendix F Troubleshooting</h2>
+
+<p>If you are having trouble with <small>CVS</small>, this appendix
+may help. If there is a particular error message which
+you are seeing, then you can look up the message
+alphabetically. If not, you can look through the
+section on other problems to see if your problem is
+mentioned there.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#Error-messages"
accesskey="1">Error messages</a>:</td><td> </td><td align="left"
valign="top">Partial list of CVS errors
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Connection"
accesskey="2">Connection</a>:</td><td> </td><td align="left"
valign="top">Trouble making a connection to a CVS server
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Other-problems"
accesskey="3">Other problems</a>:</td><td> </td><td align="left"
valign="top">Problems not readily listed by error message
+</td></tr>
+</table>
+
+
+<hr>
+<a name="Error-messages"></a>
+<div class="header">
+<p>
+Next: <a href="#Connection" accesskey="n" rel="next">Connection</a>, Up: <a
href="#Troubleshooting" accesskey="u" rel="up">Troubleshooting</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Partial-list-of-error-messages"></a>
+<h3 class="appendixsec">F.1 Partial list of error messages</h3>
+
+<p>Here is a partial list of error messages that you may
+see from <small>CVS</small>. It is not a complete
list—<small>CVS</small>
+is capable of printing many, many error messages, often
+with parts of them supplied by the operating system,
+but the intention is to list the common and/or
+potentially confusing error messages.
+</p>
+<p>The messages are alphabetical, but introductory text
+such as ‘<samp>cvs update: </samp>’ is not considered in
+ordering them.
+</p>
+<p>In some cases the list includes messages printed by old
+versions of <small>CVS</small> (partly because users may not be
+sure which version of <small>CVS</small> they are using at any
+particular moment).
+</p>
+<dl compact="compact">
+<dt><code><var>file</var>:<var>line</var>: Assertion '<var>text</var>'
failed</code></dt>
+<dd><p>The exact format of this message may vary depending on
+your system. It indicates a bug in <small>CVS</small>, which can
+be handled as described in <a href="#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>cvs <var>command</var>: authorization failed: server <var>host</var>
rejected access</code></dt>
+<dd><p>This is a generic response when trying to connect to a
+pserver server which chooses not to provide a
+specific reason for denying authorization. Check that
+the username and password specified are correct and
+that the <code>CVSROOT</code> specified is allowed by
‘<samp>--allow-root</samp>’
+in <samp>inetd.conf</samp>. See <a href="#Password-authenticated">Password
authenticated</a>.
+</p>
+</dd>
+<dt><code>cvs <var>command</var>: conflict: removed <var>file</var> was
modified by second party</code></dt>
+<dd><p>This message indicates that you removed a file, and
+someone else modified it. To resolve the conflict,
+first run ‘<samp>cvs add <var>file</var></samp>’. If desired, look
+at the other party’s modification to decide whether you
+still want to remove it. If you don’t want to remove
+it, stop here. If you do want to remove it, proceed
+with ‘<samp>cvs remove <var>file</var></samp>’ and commit your
+removal.
+</p>
+</dd>
+<dt><code>cannot change permissions on temporary directory</code></dt>
+<dd><div class="example">
+<pre class="example">Operation not permitted
+</pre></div>
+<p>This message has been happening in a non-reproducible,
+occasional way when we run the client/server testsuite,
+both on Red Hat Linux 3.0.3 and 4.1. We haven’t been
+able to figure out what causes it, nor is it known
+whether it is specific to Linux (or even to this
+particular machine!). If the problem does occur on
+other unices, ‘<samp>Operation not permitted</samp>’ would be
+likely to read ‘<samp>Not owner</samp>’ or whatever the system
+in question uses for the unix <code>EPERM</code> error. If
+you have any information to add, please let us know as
+described in <a href="#BUGS">BUGS</a>. If you experience this error
+while using <small>CVS</small>, retrying the operation which
+produced it should work fine.
+</p>
+</dd>
+<dt><code>cvs [server aborted]: Cannot check out files into the repository
itself</code></dt>
+<dd><p>The obvious cause for this message (especially for
+non-client/server <small>CVS</small>) is that the <small>CVS</small> root
+is, for example, <samp>/usr/local/cvsroot</samp> and you try
+to check out files when you are in a subdirectory, such
+as <samp>/usr/local/cvsroot/test</samp>. However, there is a
+more subtle cause, which is that the temporary
+directory on the server is set to a subdirectory of the
+root (which is also not allowed). If this is the
+problem, set the temporary directory to somewhere else,
+for example <samp>/var/tmp</samp>; see <code>TMPDIR</code> in
+<a href="#Environment-variables">Environment variables</a>, for how to set the
+temporary directory.
+</p>
+</dd>
+<dt><code>cannot commit files as 'root'</code></dt>
+<dd><p>See ‘<samp>'root' is not allowed to commit files</samp>’.
+</p>
+</dd>
+<dt><code>cannot open CVS/Entries for reading: No such file or
directory</code></dt>
+<dd><p>This generally indicates a <small>CVS</small> internal error, and
+can be handled as with other <small>CVS</small> bugs
+(see <a href="#BUGS">BUGS</a>). Usually there is a workaround—the
+exact nature of which would depend on the situation but
+which hopefully could be figured out.
+</p>
+</dd>
+<dt><code>cvs [init aborted]: cannot open CVS/Root: No such file or
directory</code></dt>
+<dd><p>This message is harmless. Provided it is not
+accompanied by other errors, the operation has
+completed successfully. This message should not occur
+with current versions of <small>CVS</small>, but it is documented
+here for the benefit of <small>CVS</small> 1.9 and older.
+</p>
+</dd>
+<dt><code>cvs server: cannot open /root/.cvsignore: Permission
denied</code></dt>
+<dt><code>cvs [server aborted]: can't chdir(/root): Permission
denied</code></dt>
+<dd><p>See <a href="#Connection">Connection</a>.
+</p>
+</dd>
+<dt><code>cvs [checkout aborted]: cannot rename file <var>file</var> to
CVS/,,<var>file</var>: Invalid argument</code></dt>
+<dd><p>This message has been reported as intermittently
+happening with <small>CVS</small> 1.9 on Solaris 2.5. The cause is
+unknown; if you know more about what causes it, let us
+know as described in <a href="#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>cvs [<var>command</var> aborted]: cannot start server via
rcmd</code></dt>
+<dd><p>This, unfortunately, is a rather nonspecific error
+message which <small>CVS</small> 1.9 will print if you are
+running the <small>CVS</small> client and it is having trouble
+connecting to the server. Current versions of <small>CVS</small>
+should print a much more specific error message. If
+you get this message when you didn’t mean to run the
+client at all, you probably forgot to specify
+<code>:local:</code>, as described in <a href="#Repository">Repository</a>.
+</p>
+</dd>
+<dt><code>ci: <var>file</var>,v: bad diff output line: Binary files - and
/tmp/T2a22651 differ</code></dt>
+<dd><p><small>CVS</small> 1.9 and older will print this message
+when trying to check in a binary file if
+<small>RCS</small> is not correctly installed. Re-read the
+instructions that came with your <small>RCS</small> distribution
+and the <small>INSTALL</small> file in the <small>CVS</small>
+distribution. Alternately, upgrade to a current
+version of <small>CVS</small>, which checks in files itself
+rather than via <small>RCS</small>.
+</p>
+</dd>
+<dt><code>cvs checkout: could not check out <var>file</var></code></dt>
+<dd><p>With <small>CVS</small> 1.9, this can mean that the <code>co</code>
program
+(part of <small>RCS</small>) returned a failure. It should be
+preceded by another error message, however it has been
+observed without another error message and the cause is
+not well-understood. With the current version of <small>CVS</small>,
+which does not run <code>co</code>, if this message occurs
+without another error message, it is definitely a <small>CVS</small>
+bug (see <a href="#BUGS">BUGS</a>).
+</p>
+</dd>
+<dt><code>cvs [login aborted]: could not find out home directory</code></dt>
+<dd><p>This means that you need to set the environment
+variables that <small>CVS</small> uses to locate your home directory.
+See the discussion of <code>HOME</code>, <code>HOMEDRIVE</code>, and
<code>HOMEPATH</code> in
+<a href="#Environment-variables">Environment variables</a>.
+</p>
+</dd>
+<dt><code>cvs update: could not merge revision <var>rev</var> of
<var>file</var>: No such file or directory</code></dt>
+<dd><p><small>CVS</small> 1.9 and older will print this message if there was
+a problem finding the <code>rcsmerge</code> program. Make
+sure that it is in your <code>PATH</code>, or upgrade to a
+current version of <small>CVS</small>, which does not require
+an external <code>rcsmerge</code> program.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: could not patch <var>file</var>: No such file
or directory</code></dt>
+<dd><p>This means that there was a problem finding the
+<code>patch</code> program. Make sure that it is in your
+<code>PATH</code>. Note that despite appearances the message
+is <em>not</em> referring to whether it can find <var>file</var>.
+If both the client and the server are running a current
+version of <small>CVS</small>, then there is no need for an
+external patch program and you should not see this
+message. But if either client or server is running
+<small>CVS</small> 1.9, then you need <code>patch</code>.
+</p>
+</dd>
+<dt><code>cvs update: could not patch <var>file</var>; will refetch</code></dt>
+<dd><p>This means that for whatever reason the client was
+unable to apply a patch that the server sent. The
+message is nothing to be concerned about, because
+inability to apply the patch only slows things down and
+has no effect on what <small>CVS</small> does.
+</p>
+</dd>
+<dt><code>dying gasps from <var>server</var> unexpected</code></dt>
+<dd><p>There is a known bug in the server for <small>CVS</small> 1.9.18
+and older which can cause this. For me, this was
+reproducible if I used the ‘<samp>-t</samp>’ global option. It
+was fixed by Andy Piper’s 14 Nov 1997 change to
+src/filesubr.c, if anyone is curious.
+If you see the message,
+you probably can just retry the operation which failed,
+or if you have discovered information concerning its
+cause, please let us know as described in <a href="#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>end of file from server (consult above messages if any)</code></dt>
+<dd><p>The most common cause for this message is if you are
+using an external <code>rsh</code> or <code>ssh</code> program and it exited
with
+an error. In this case the <code>rsh</code> program should
+have printed a message, which will appear before the
+above message. For more information on setting up a
+<small>CVS</small> client and server, see <a
href="#Remote-repositories">Remote repositories</a>.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: EOF in key in RCS file
<var>file</var>,v</code></dt>
+<dt><code>cvs [checkout aborted]: EOF while looking for end of string in RCS
file <var>file</var>,v</code></dt>
+<dd><p>This means that there is a syntax error in the given
+<small>RCS</small> file. Note that this might be true even if
<small>RCS</small> can
+read the file OK; <small>CVS</small> does more error checking of
+errors in the RCS file. That is why you may see this
+message when upgrading from <small>CVS</small> 1.9 to <small>CVS</small>
+1.10. The likely cause for the original corruption is
+hardware, the operating system, or the like. Of
+course, if you find a case in which <small>CVS</small> seems to
+corrupting the file, by all means report it,
+(see <a href="#BUGS">BUGS</a>).
+There are quite a few variations of this error message,
+depending on exactly where in the <small>RCS</small> file <small>CVS</small>
+finds the syntax error.
+</p>
+<a name="index-mkmodules"></a>
+</dd>
+<dt><code>cvs commit: Executing 'mkmodules'</code></dt>
+<dd><p>This means that your repository is set up for a version
+of <small>CVS</small> prior to <small>CVS</small> 1.8. When using
<small>CVS</small>
+1.8 or later, the above message will be preceded by
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>If you see both messages, the database is being rebuilt
+twice, which is unnecessary but harmless. If you wish
+to avoid the duplication, and you have no versions of
+<small>CVS</small> 1.7 or earlier in use, remove <code>-i mkmodules</code>
+every place it appears in your <code>modules</code>
+file. For more information on the <code>modules</code> file,
+see <a href="#modules">modules</a>.
+</p>
+</dd>
+<dt><code>missing author</code></dt>
+<dd><p>Typically this can happen if you created an RCS file
+with your username set to empty. <small>CVS</small> will, bogusly,
+create an illegal RCS file with no value for the author
+field. The solution is to make sure your username is
+set to a non-empty value and re-create the RCS file.
+</p>
+</dd>
+<dt><code>cvs [checkout aborted]: no such tag <var>tag</var></code></dt>
+<dd><p>This message means that <small>CVS</small> isn’t familiar with
+the tag <var>tag</var>. Usually this means that you have
+mistyped a tag name; however there are (relatively
+obscure) cases in which <small>CVS</small> will require you to
+try a few other <small>CVS</small> commands involving that tag,
+before you find one which will cause <small>CVS</small> to update
+<a name="index-CVSROOT_002fval_002dtags-file_002c-forcing-tags-into"></a>
+<a name="index-val_002dtags-file_002c-forcing-tags-into"></a>
+the <samp>val-tags</samp> file; see discussion of val-tags in
+<a href="#File-permissions">File permissions</a>. You only need to worry about
+this once for a given tag; when a tag is listed in
+<samp>val-tags</samp>, it stays there. Note that using
+‘<samp>-f</samp>’ to not require tag matches does not override
+this check; see <a href="#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>cvs [<var>command</var> aborted]: out of memory</code></dt>
+<dd><p>There is insufficient (virtual) memory available to continue.
+In client/server mode, the problem is almost certainly on the server
+rather than the client;
+see <a href="#Server-requirements">Server requirements</a> for memory
estimates.
+Many systems have limits on the amount of virtual memory that a
+single process can use, so a process can run out of virtual memory
+long before the system itself has run out.
+The method of increasing the per-process limits varies depending
+on the operating system.
+</p>
+</dd>
+<dt><code>*PANIC* administration files missing</code></dt>
+<dd><p>This typically means that there is a directory named
+<small>CVS</small> but it does not contain the administrative files
+which <small>CVS</small> puts in a CVS directory. If the problem is
+that you created a CVS directory via some mechanism
+other than <small>CVS</small>, then the answer is simple, use a name
+other than <small>CVS</small>. If not, it indicates a <small>CVS</small> bug
+(see <a href="#BUGS">BUGS</a>).
+</p>
+</dd>
+<dt><code>rcs error: Unknown option: -x,v/</code></dt>
+<dd><p>This message will be followed by a usage message for
+<small>RCS</small>. It means that you have an old version of
+<small>RCS</small> (probably supplied with your operating
+system), as well as an old version of <small>CVS</small>.
+<small>CVS</small> 1.9.18 and earlier only work with <small>RCS</small>
version 5 and
+later; current versions of <small>CVS</small> do not run <small>RCS</small>
programs.
+</p>
+</dd>
+<dt><code>cvs [server aborted]: received broken pipe signal</code></dt>
+<dd><p>This message can be caused by a loginfo program that fails to
+read all of the log information from its standard input.
+If you find it happening in any other circumstances,
+please let us know as described in <a href="#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>'root' is not allowed to commit files</code></dt>
+<dd><p>When committing a permanent change, <small>CVS</small> makes a log
entry of
+who committed the change. If you are committing the change logged
+in as "root" (not under "su" or other root-priv giving
program),
+<small>CVS</small> cannot determine who is actually making the change.
+As such, by default, <small>CVS</small> disallows changes to be committed by
users
+logged in as "root". (You can disable this option by passing the
+<code>--enable-rootcommit</code> option to <samp>configure</samp> and
recompiling <small>CVS</small>.
+On some systems this means editing the appropriate <samp>config.h</samp> file
+before building <small>CVS</small>.)
+</p>
+</dd>
+<dt><code>Terminated with fatal signal 11</code></dt>
+<dd><p>This message usually indicates that <small>CVS</small> (the server, if
you’re
+using client/server mode) has run out of (virtual) memory.
+Although <small>CVS</small> tries to catch the error and issue a more
meaningful
+message, there are many circumstances where that is not possible.
+If you appear to have lots of memory available to the system,
+the problem is most likely that you’re running into a system-wide
+limit on the amount of memory a single process can use or a
+similar process-specific limit.
+The mechanisms for displaying and setting such limits vary from
+system to system, so you’ll have to consult an expert for your
+particular system if you don’t know how to do that.
+</p>
+</dd>
+<dt><code>Too many arguments!</code></dt>
+<dd><p>This message is typically printed by the <samp>log.pl</samp>
+script which is in the <samp>contrib</samp> directory in the
+<small>CVS</small> source distribution. In some versions of
+<small>CVS</small>, <samp>log.pl</samp> has been part of the default
+<small>CVS</small> installation. The <samp>log.pl</samp> script gets
+called from the <samp>loginfo</samp> administrative file.
+Check that the arguments passed in <samp>loginfo</samp> match
+what your version of <samp>log.pl</samp> expects. In
+particular, the <samp>log.pl</samp> from <small>CVS</small> 1.3 and
+older expects the log file as an argument whereas the
+<samp>log.pl</samp> from <small>CVS</small> 1.5 and newer expects the
+log file to be specified with a ‘<samp>-f</samp>’ option. Of
+course, if you don’t need <samp>log.pl</samp> you can just
+comment it out of <samp>loginfo</samp>.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: unexpected EOF reading
<var>file</var>,v</code></dt>
+<dd><p>See ‘<samp>EOF in key in RCS file</samp>’.
+</p>
+</dd>
+<dt><code>cvs [login aborted]: unrecognized auth response from
<var>server</var></code></dt>
+<dd><p>This message typically means that the server is not set
+up properly. For example, if <samp>inetd.conf</samp> points
+to a nonexistent cvs executable. To debug it further,
+find the log file which inetd writes
+(<samp>/var/log/messages</samp> or whatever inetd uses on
+your system). For details, see <a href="#Connection">Connection</a>, and
+<a href="#Password-authentication-server">Password authentication server</a>.
+</p>
+</dd>
+<dt><code>cvs commit: Up-to-date check failed for `<var>file</var>'</code></dt>
+<dd><p>This means that someone else has committed a change to
+that file since the last time that you did a <code>cvs
+update</code>. So before proceeding with your <code>cvs
+commit</code> you need to <code>cvs update</code>. <small>CVS</small> will
merge
+the changes that you made and the changes that the
+other person made. If it does not detect any conflicts
+it will report ‘<samp>M <var>file</var></samp>’ and you are ready
+to <code>cvs commit</code>. If it detects conflicts it will
+print a message saying so, will report ‘<samp>C
<var>file</var></samp>’,
+and you need to manually resolve the
+conflict. For more details on this process see
+<a href="#Conflicts-example">Conflicts example</a>.
+</p>
+</dd>
+<dt><code>Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1
file2 file3</code></dt>
+<dd><div class="example">
+<pre class="example">Only one of [exEX3] allowed
+</pre></div>
+<p>This indicates a problem with the installation of
+<code>diff3</code> and <code>rcsmerge</code>. Specifically
+<code>rcsmerge</code> was compiled to look for GNU diff3, but
+it is finding unix diff3 instead. The exact text of
+the message will vary depending on the system. The
+simplest solution is to upgrade to a current version of
+<small>CVS</small>, which does not rely on external
+<code>rcsmerge</code> or <code>diff3</code> programs.
+</p>
+</dd>
+<dt><code>warning: unrecognized response `<var>text</var>' from cvs
server</code></dt>
+<dd><p>If <var>text</var> contains a valid response (such as
+‘<samp>ok</samp>’) followed by an extra carriage return
+character (on many systems this will cause the second
+part of the message to overwrite the first part), then
+it probably means that you are using the ‘<samp>:ext:</samp>’
+access method with a version of rsh, such as most
+non-unix rsh versions, which does not by default
+provide a transparent data stream. In such cases you
+probably want to try ‘<samp>:server:</samp>’ instead of
+‘<samp>:ext:</samp>’. If <var>text</var> is something else, this
+may signify a problem with your <small>CVS</small> server.
+Double-check your installation against the instructions
+for setting up the <small>CVS</small> server.
+</p>
+</dd>
+<dt><code>cvs commit: [<var>time</var>] waiting for <var>user</var>'s lock in
<var>directory</var></code></dt>
+<dd><p>This is a normal message, not an error. See
+<a href="#Concurrency">Concurrency</a>, for more details.
+</p>
+</dd>
+<dt><code>cvs commit: warning: editor session failed</code></dt>
+<dd><a name="index-Exit-status_002c-of-editor"></a>
+<p>This means that the editor which <small>CVS</small> is using exits with a
nonzero
+exit status. Some versions of vi will do this even when there was not
+a problem editing the file. If so, point the
+<code>CVSEDITOR</code> environment variable to a small script
+such as:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+vi $*
+exit 0
+</pre></div>
+
+</dd>
+<dt><code>cvs update: warning: <var>file</var> was lost</code></dt>
+<dd><p>This means that the working copy of <var>file</var> has been deleted
+but it has not been removed from <small>CVS</small>.
+This is nothing to be concerned about,
+the update will just recreate the local file from the repository.
+(This is a convenient way to discard local changes to a file:
+just delete it and then run <code>cvs update</code>.)
+</p>
+</dd>
+<dt><code>cvs update: warning: <var>file</var> is not (any longer)
pertinent</code></dt>
+<dd><p>This means that the working copy of <var>file</var> has been deleted,
+it has not been removed from <small>CVS</small> in the current working
directory,
+but it has been removed from <small>CVS</small> in some other working
directory.
+This is nothing to be concerned about,
+the update would have removed the local file anyway.
+</p>
+</dd>
+</dl>
+
+<hr>
+<a name="Connection"></a>
+<div class="header">
+<p>
+Next: <a href="#Other-problems" accesskey="n" rel="next">Other problems</a>,
Previous: <a href="#Error-messages" accesskey="p" rel="prev">Error
messages</a>, Up: <a href="#Troubleshooting" accesskey="u"
rel="up">Troubleshooting</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Trouble-making-a-connection-to-a-CVS-server"></a>
+<h3 class="appendixsec">F.2 Trouble making a connection to a CVS server</h3>
+
+<p>This section concerns what to do if you are having
+trouble making a connection to a <small>CVS</small> server. If
+you are running the <small>CVS</small> command line client
+running on Windows, first upgrade the client to
+<small>CVS</small> 1.9.12 or later. The error reporting in
+earlier versions provided much less information about
+what the problem was. If the client is non-Windows,
+<small>CVS</small> 1.9 should be fine.
+</p>
+<p>If the error messages are not sufficient to track down
+the problem, the next steps depend largely on which
+access method you are using.
+</p>
+<dl compact="compact">
+<dd><a name="index-_003aext_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:ext:</code></dt>
+<dd><p>Try running the rsh program from the command line. For
+example: "rsh servername cvs -v" should print <small>CVS</small>
+version information. If this doesn’t work, you need to
+fix it before you can worry about <small>CVS</small> problems.
+</p>
+<a name="index-_003aserver_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:server:</code></dt>
+<dd><p>You don’t need a command line rsh program to use this
+access method, but if you have an rsh program around,
+it may be useful as a debugging tool. Follow the
+directions given for :ext:.
+</p>
+<a name="index-_003apserver_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:pserver:</code></dt>
+<dd><p>Errors along the lines of "connection refused" typically
indicate
+that inetd isn’t even listening for connections on port 2401
+whereas errors like "connection reset by peer",
+"received broken pipe signal", "recv() from server: EOF",
+or "end of file from server"
+typically indicate that inetd is listening for
+connections but is unable to start <small>CVS</small> (this is frequently
+caused by having an incorrect path in <samp>inetd.conf</samp>
+or by firewall software rejecting the connection).
+"unrecognized auth response" errors are caused by a bad command
+line in <samp>inetd.conf</samp>, typically an invalid option or forgetting
+to put the ‘<samp>pserver</samp>’ command at the end of the line.
+Another less common problem is invisible control characters that
+your editor "helpfully" added without you noticing.
+</p>
+<p>One good debugging tool is to "telnet servername
+2401". After connecting, send any text (for example
+"foo" followed by return). If <small>CVS</small> is working
+correctly, it will respond with
+</p>
+<div class="example">
+<pre class="example">cvs [pserver aborted]: bad auth protocol start: foo
+</pre></div>
+
+<p>If instead you get:
+</p>
+<div class="example">
+<pre class="example">Usage: cvs [cvs-options] command
[command-options-and-arguments]
+...
+</pre></div>
+
+<p>then you’re missing the ‘<samp>pserver</samp>’ command at
the end of the
+line in <samp>inetd.conf</samp>; check to make sure that the entire command
+is on one line and that it’s complete.
+</p>
+<p>Likewise, if you get something like:
+</p>
+<div class="example">
+<pre class="example">Unknown command: `pserved'
+
+CVS commands are:
+ add Add a new file/directory to the repository
+...
+</pre></div>
+
+<p>then you’ve misspelled ‘<samp>pserver</samp>’ in some
way. If it isn’t
+obvious, check for invisible control characters (particularly
+carriage returns) in <samp>inetd.conf</samp>.
+</p>
+<p>If it fails to work at all, then make sure inetd is working
+right. Change the invocation in <samp>inetd.conf</samp> to run the
+echo program instead of cvs. For example:
+</p>
+<div class="example">
+<pre class="example">2401 stream tcp nowait root /bin/echo echo hello
+</pre></div>
+
+<p>After making that change and instructing inetd to
+re-read its configuration file, "telnet servername
+2401" should show you the text hello and then the
+server should close the connection. If this doesn’t
+work, you need to fix it before you can worry about
+<small>CVS</small> problems.
+</p>
+<p>On AIX systems, the system will often have its own
+program trying to use port 2401. This is AIX’s problem
+in the sense that port 2401 is registered for use with
+<small>CVS</small>. I hear that there is an AIX patch available
+to address this problem.
+</p>
+<p>Another good debugging tool is the ‘<samp>-d</samp>’
+(debugging) option to inetd. Consult your system
+documentation for more information.
+</p>
+<p>If you seem to be connecting but get errors like:
+</p>
+<div class="example">
+<pre class="example">cvs server: cannot open /root/.cvsignore: Permission
denied
+cvs [server aborted]: can't chdir(/root): Permission denied
+</pre></div>
+
+<p>then you probably haven’t specified ‘<samp>-f</samp>’ in
<samp>inetd.conf</samp>.
+(In releases prior to <small>CVS</small> 1.11.1, this problem can be caused by
+your system setting the <code>$HOME</code> environment variable
+for programs being run by inetd. In this case, you can either
+have inetd run a shell script that unsets <code>$HOME</code> and then runs
+<small>CVS</small>, or you can use <code>env</code> to run <small>CVS</small>
with a pristine
+environment.)
+</p>
+<p>If you can connect successfully for a while but then can’t,
+you’ve probably hit inetd’s rate limit.
+(If inetd receives too many requests for the same service
+in a short period of time, it assumes that something is wrong
+and temporarily disables the service.)
+Check your inetd documentation to find out how to adjust the
+rate limit (some versions of inetd have a single rate limit,
+others allow you to set the limit for each service separately.)
+</p></dd>
+</dl>
+
+<hr>
+<a name="Other-problems"></a>
+<div class="header">
+<p>
+Previous: <a href="#Connection" accesskey="p" rel="prev">Connection</a>, Up:
<a href="#Troubleshooting" accesskey="u" rel="up">Troubleshooting</a>
[<a href="#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Other-common-problems"></a>
+<h3 class="appendixsec">F.3 Other common problems</h3>
+
+<p>Here is a list of problems which do not fit into the
+above categories. They are in no particular order.
+</p>
+<ul>
+<li> On Windows, if there is a 30 second or so delay when
+you run a <small>CVS</small> command, it may mean that you have
+your home directory set to <samp>C:/</samp>, for example (see
+<code>HOMEDRIVE</code> and <code>HOMEPATH</code> in
+<a href="#Environment-variables">Environment variables</a>).
<small>CVS</small> expects the home
+directory to not end in a slash, for example <samp>C:</samp>
+or <samp>C:\cvs</samp>.
+
+</li><li> If you are running <small>CVS</small> 1.9.18 or older, and
+<code>cvs update</code> finds a conflict and tries to
+merge, as described in <a href="#Conflicts-example">Conflicts example</a>, but
+doesn’t tell you there were conflicts, then you may
+have an old version of <small>RCS</small>. The easiest solution
+probably is to upgrade to a current version of
+<small>CVS</small>, which does not rely on external <small>RCS</small>
+programs.
+</li></ul>
+
+<hr>
+<a name="Credits"></a>
+<div class="header">
+<p>
+Next: <a href="#BUGS" accesskey="n" rel="next">BUGS</a>, Previous: <a
href="#Troubleshooting" accesskey="p" rel="prev">Troubleshooting</a>, Up: <a
href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Credits-1"></a>
+<h2 class="appendix">Appendix G Credits</h2>
+
+<a name="index-Contributors-_0028manual_0029"></a>
+<a name="index-Credits-_0028manual_0029"></a>
+<p>Roland Pesch, then of Cygnus Support <<tt>address@hidden</tt>>
+wrote the manual pages which were distributed with
+<small>CVS</small> 1.3. Much of their text was copied into this
+manual. He also read an early draft
+of this manual and contributed many ideas and
+corrections.
+</p>
+<p>The mailing-list <code>info-cvs</code> is sometimes
+informative. I have included information from postings
+made by the following persons:
+David G. Grubbs <<tt>address@hidden</tt>>.
+</p>
+<p>Some text has been extracted from the man pages for
+<small>RCS</small>.
+</p>
+<p>The <small>CVS</small> <small>FAQ</small> by David G. Grubbs has provided
+useful material. The <small>FAQ</small> is no longer maintained,
+however, and this manual is about the closest thing there
+is to a successor (with respect to documenting how to
+use <small>CVS</small>, at least).
+</p>
+<p>In addition, the following persons have helped by
+telling me about mistakes I’ve made:
+</p>
+<div class="display">
+<pre class="display">Roxanne Brunskill <<tt>address@hidden</tt>>,
+Kathy Dyer <<tt>address@hidden</tt>>,
+Karl Pingle <<tt>address@hidden</tt>>,
+Thomas A Peterson <<tt>address@hidden</tt>>,
+Inge Wallin <<tt>address@hidden</tt>>,
+Dirk Koschuetzki <<tt>address@hidden</tt>>
+and Michael Brown <<tt>address@hidden</tt>>.
+</pre></div>
+
+<p>The list of contributors here is not comprehensive; for a more
+complete list of who has contributed to this manual see
+the file <samp>doc/ChangeLog</samp> in the <small>CVS</small> source
+distribution.
+</p>
+<hr>
+<a name="BUGS"></a>
+<div class="header">
+<p>
+Next: <a href="#Index" accesskey="n" rel="next">Index</a>, Previous: <a
href="#Credits" accesskey="p" rel="prev">Credits</a>, Up: <a href="#Top"
accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Dealing-with-bugs-in-CVS-or-this-manual"></a>
+<h2 class="appendix">Appendix H Dealing with bugs in CVS or this manual</h2>
+
+<a name="index-Bugs-in-this-manual-or-CVS"></a>
+<p>Neither <small>CVS</small> nor this manual is perfect, and they
+probably never will be. If you are having trouble
+using <small>CVS</small>, or think you have found a bug, there
+are a number of things you can do about it. Note that
+if the manual is unclear, that can be considered a bug
+in the manual, so these problems are often worth doing
+something about as well as problems with <small>CVS</small> itself.
+</p>
+<a name="index-Reporting-bugs"></a>
+<a name="index-Bugs_002c-reporting"></a>
+<a name="index-Errors_002c-reporting"></a>
+<ul>
+<li> If you want someone to help you and fix bugs that you
+report, there are companies which will do that for a
+fee. One such company is:
+
+<a name="index-Ximbiot"></a>
+<a name="index-Support_002c-getting-CVS-support"></a>
+<div class="example">
+<pre class="example">Ximbiot LLC
+Suite 230
+200 Diversion St.
+Rochester Hills, MI 48307-6636
+USA
+Email: address@hidden
+Phone: (248) 835-1260
+Fax: (248) 835-1263
+<a href="http://ximbiot.com/">http://ximbiot.com/</a>
+
+</pre></div>
+
+</li><li> If you got <small>CVS</small> through a distributor, such as an
+operating system vendor or a vendor of freeware
+<small>CD-ROM</small>s, you may wish to see whether the
+distributor provides support. Often, they will provide
+no support or minimal support, but this may vary from
+distributor to distributor.
+
+</li><li> If you have the skills and time to do so, you may wish
+to fix the bug yourself. If you wish to submit your
+fix for inclusion in future releases of <small>CVS</small>, see
+the file <small>HACKING</small> in the <small>CVS</small> source
+distribution. It contains much more information on the
+process of submitting fixes.
+
+</li><li> There may be resources on the net which can help. A
+good place to start is:
+
+<div class="example">
+<pre class="example"><a
href="http://cvs.nongnu.org/">http://cvs.nongnu.org/</a>
+</pre></div>
+
+<p>If you are so inspired, increasing the information
+available on the net is likely to be appreciated. For
+example, before the standard <small>CVS</small> distribution
+worked on Windows 95, there was a web page with some
+explanation and patches for running <small>CVS</small> on Windows
+95, and various people helped out by mentioning this
+page on mailing lists or newsgroups when the subject
+came up.
+</p>
+</li><li> It is also possible to report bugs to <a
href="mailto:address@hidden">address@hidden</a>.
+Note that someone may or may not want to do anything
+with your bug report—if you need a solution consider
+one of the options mentioned above. People probably do
+want to hear about bugs which are particularly severe
+in consequences and/or easy to fix, however. You can
+also increase your odds by being as clear as possible
+about the exact nature of the bug and any other
+relevant information. The way to report bugs is to
+send email to <a href="mailto:address@hidden">address@hidden</a>. Note
+that submissions to <a href="mailto:address@hidden">address@hidden</a> may be
distributed
+under the terms of the <small>GNU</small> Public License, so if
+you don’t like this, don’t submit them. There is
+usually no justification for sending mail directly to
+one of the <small>CVS</small> maintainers rather than to
+<a href="mailto:address@hidden">address@hidden</a>; those maintainers who want
to hear
+about such bug reports read <a
href="mailto:address@hidden">address@hidden</a>. Also note
+that sending a bug report to other mailing lists or
+newsgroups is <em>not</em> a substitute for sending it to
+<a href="mailto:address@hidden">address@hidden</a>. It is fine to discuss
<small>CVS</small> bugs on
+whatever forum you prefer, but there are not
+necessarily any maintainers reading bug reports sent
+anywhere except <a href="mailto:address@hidden">address@hidden</a>.
+</li></ul>
+
+<a name="index-Known-bugs-in-this-manual-or-CVS"></a>
+<p>People often ask if there is a list of known bugs or
+whether a particular bug is a known one. The file
+<small>BUGS</small> in the <small>CVS</small> source distribution is one
+list of known bugs, but it doesn’t necessarily try to
+be comprehensive. Perhaps there will never be a
+comprehensive, detailed list of known bugs.
+</p>
+<hr>
+<a name="Index"></a>
+<div class="header">
+<p>
+Previous: <a href="#BUGS" accesskey="p" rel="prev">BUGS</a>, Up: <a
href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Index-1"></a>
+<h2 class="unnumbered">Index</h2>
+<a name="index-Index"></a>
+
+<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter"
href="#Index_cp_symbol-1"><b>!</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-2"><b>#</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-3"><b>&</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-4"><b>-</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-5"><b>.</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-6"><b>/</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-7"><b>:</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-8"><b><</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-9"><b>=</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-10"><b>></b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-11"><b>_</b></a>
+
+<br>
+<a class="summary-letter" href="#Index_cp_letter-A"><b>A</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-B"><b>B</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-C"><b>C</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-D"><b>D</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-E"><b>E</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-F"><b>F</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-G"><b>G</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-H"><b>H</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-I"><b>I</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-J"><b>J</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-K"><b>K</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-L"><b>L</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-M"><b>M</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-N"><b>N</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-O"><b>O</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-P"><b>P</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-R"><b>R</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-S"><b>S</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-T"><b>T</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-U"><b>U</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-V"><b>V</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-W"><b>W</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-X"><b>X</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-Z"><b>Z</b></a>
+
+</td></tr></table>
+<table class="index-cp" border="0">
+<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left">
Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-1">!</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_0021_002c-in-modules-file">!,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Excluding-directories">Excluding directories</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-2">#</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002elock_002c-removing">#cvs.lock,
removing</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002elock_002c-technical-details">#cvs.lock, technical
details</a>:</td><td> </td><td valign="top"><a
href="#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002erfl_002c-and-backups">#cvs.rfl, and
backups</a>:</td><td> </td><td valign="top"><a href="#Backing-up">Backing
up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002erfl_002c-removing">#cvs.rfl,
removing</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002erfl_002c-technical-details">#cvs.rfl, technical
details</a>:</td><td> </td><td valign="top"><a
href="#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002etfl">#cvs.tfl</a>:</td><td> </td><td
valign="top"><a href="#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002ewfl_002c-removing">#cvs.wfl,
removing</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0023cvs_002ewfl_002c-technical-details">#cvs.wfl, technical
details</a>:</td><td> </td><td valign="top"><a
href="#Locks">Locks</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-3">&</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_0026_002c-in-modules-file">&, in modules
file</a>:</td><td> </td><td valign="top"><a
href="#Ampersand-modules">Ampersand modules</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-4">-</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002da_002c-in-modules-file">-a,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Alias-modules">Alias modules</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002dd_002c-in-modules-file">-d,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002de_002c-in-modules-file">-e,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002de_002c-in-modules-file-1">-e, in modules
file</a>:</td><td> </td><td valign="top"><a
href="#Module-program-options">Module program options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002dj-_0028merging-branches_0029">-j (merging
branches)</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002dj-_0028merging-branches_0029_002c-and-keyword-substitution">-j
(merging branches), and keyword substitution</a>:</td><td> </td><td
valign="top"><a href="#Merging-and-keywords">Merging and keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002dk-_0028keyword-substitution_0029">-k (keyword
substitution)</a>:</td><td> </td><td valign="top"><a
href="#Substitution-modes">Substitution modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002dkk_002c-to-avoid-conflicts-during-a-merge">-kk, to avoid
conflicts during a merge</a>:</td><td> </td><td valign="top"><a
href="#Merging-and-keywords">Merging and keywords</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002do_002c-in-modules-file">-o,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002do_002c-in-modules-file-1">-o, in modules
file</a>:</td><td> </td><td valign="top"><a
href="#Module-program-options">Module program options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002ds_002c-in-modules-file">-s,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002dt_002c-in-modules-file">-t,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002dt_002c-in-modules-file-1">-t, in modules
file</a>:</td><td> </td><td valign="top"><a
href="#Module-program-options">Module program options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-5">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002e_0023-files">.#
files</a>:</td><td> </td><td valign="top"><a href="#update-output">update
output</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002ebashrc_002c-setting-CVSROOT-in">.bashrc, setting CVSROOT
in</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002ecshrc_002c-setting-CVSROOT-in">.cshrc, setting CVSROOT
in</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002ecvsrc-file">.cvsrc
file</a>:</td><td> </td><td valign="top"><a
href="#g_t_007e_002f_002ecvsrc">~/.cvsrc</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002eprofile_002c-setting-CVSROOT-in">.profile, setting CVSROOT
in</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002etcshrc_002c-setting-CVSROOT-in">.tcshrc, setting CVSROOT
in</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-6">/</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_002fusr_002flocal_002fcvsroot_002c-as-example-repository">/usr/local/cvsroot,
as example repository</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-7">:</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003aext_003a_002c-setting-up">:ext:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003aext_003a_002c-troubleshooting">:ext:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="#Connection">Connection</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003aextssh_003a_002c-setting-up">:extssh:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003afork_003a_002c-setting-up">:fork:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-fork">Connecting via fork</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003agserver_003a_002c-setting-up">:gserver:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#GSSAPI-authenticated">GSSAPI authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003akserver_003a_002c-setting-up">:kserver:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Kerberos-authenticated">Kerberos authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003alocal_003a_002c-setting-up">:local:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003apserver_003a_002c-setting-up">:pserver:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003apserver_003a_002c-troubleshooting">:pserver:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="#Connection">Connection</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003aserver_003a_002c-setting-up">:server:, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003aserver_003a_002c-troubleshooting">:server:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="#Connection">Connection</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-8"><</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003c_003c_003c_003c_003c_003c_003c"><<<<<<<</a>:</td><td> </td><td
valign="top"><a href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-9">=</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003d_003d_003d_003d_003d_003d_003d">=======</a>:</td><td> </td><td
valign="top"><a href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-10">></a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_003e_003e_003e_003e_003e_003e_003e">>>>>>>></a>:</td><td> </td><td
valign="top"><a href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-11">_</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-_005f_005f-files-_0028VMS_0029">__ files
(VMS)</a>:</td><td> </td><td valign="top"><a href="#update-output">update
output</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Abandoning-work">Abandoning
work</a>:</td><td> </td><td valign="top"><a href="#Editing-files">Editing
files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Access-a-branch">Access a
branch</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-add-_0028subcommand_0029">add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Adding-files">Adding files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-add-_0028subcommand_0029-1">add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#add">add</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Adding-a-tag">Adding a
tag</a>:</td><td> </td><td valign="top"><a href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Adding-files">Adding
files</a>:</td><td> </td><td valign="top"><a href="#Adding-files">Adding
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Admin-_0028subcommand_0029">Admin
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#admin">admin</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Administrative-files-_0028intro_0029">Administrative files
(intro)</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Administrative-files-_0028reference_0029">Administrative files
(reference)</a>:</td><td> </td><td valign="top"><a
href="#Administrative-files">Administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Administrative-files_002c-editing-them">Administrative files,
editing them</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Alias-modules">Alias
modules</a>:</td><td> </td><td valign="top"><a href="#Alias-modules">Alias
modules</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-ALL-in-commitinfo">ALL in
commitinfo</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Ampersand-modules">Ampersand
modules</a>:</td><td> </td><td valign="top"><a
href="#Ampersand-modules">Ampersand modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-annotate-_0028subcommand_0029">annotate
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#annotate">annotate</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Atomic-transactions_002c-lack-of">Atomic transactions, lack
of</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Attic">Attic</a>:</td><td> </td><td valign="top"><a
href="#Attic">Attic</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Authenticated-client_002c-using">Authenticated client,
using</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Authenticating-server_002c-setting-up">Authenticating server,
setting up</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Authentication_002c-stream">Authentication,
stream</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Author-keyword">Author
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Automatically-ignored-files">Automatically ignored
files</a>:</td><td> </td><td valign="top"><a
href="#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Avoiding-editor-invocation">Avoiding editor
invocation</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-B">B</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Backing-up_002c-repository">Backing up,
repository</a>:</td><td> </td><td valign="top"><a
href="#Backing-up">Backing up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Base-directory_002c-in-CVS-directory">Base directory, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-BASE_002c-as-reserved-tag-name">BASE, as reserved tag
name</a>:</td><td> </td><td valign="top"><a href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-BASE_002c-special-tag">BASE,
special tag</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Baserev-file_002c-in-CVS-directory">Baserev file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Baserev_002etmp-file_002c-in-CVS-directory">Baserev.tmp file, in
CVS directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Bill-of-materials">Bill of
materials</a>:</td><td> </td><td valign="top"><a
href="#Builds">Builds</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Binary-files">Binary
files</a>:</td><td> </td><td valign="top"><a href="#Binary-files">Binary
files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch-merge-example">Branch
merge example</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch-number">Branch
number</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch-number-1">Branch
number</a>:</td><td> </td><td valign="top"><a
href="#Branches-and-revisions">Branches and revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Branch-tags_002c-deleting">Branch tags,
deleting</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch-tags_002c-moving">Branch
tags, moving</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-accessing">Branch,
accessing</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-check-out">Branch,
check out</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-creating-a">Branch,
creating a</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-identifying">Branch,
identifying</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-retrieving">Branch,
retrieving</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branch_002c-vendor_002d">Branch,
vendor-</a>:</td><td> </td><td valign="top"><a
href="#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branches-motivation">Branches
motivation</a>:</td><td> </td><td valign="top"><a
href="#Branches-motivation">Branches motivation</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Branches_002c-copying-changes-between">Branches, copying changes
between</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Branches_002c-sticky">Branches,
sticky</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Branching">Branching</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Bringing-a-file-up-to-date">Bringing a file up to
date</a>:</td><td> </td><td valign="top"><a
href="#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Bugs-in-this-manual-or-CVS">Bugs
in this manual or CVS</a>:</td><td> </td><td valign="top"><a
href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Bugs_002c-reporting">Bugs,
reporting</a>:</td><td> </td><td valign="top"><a
href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Builds">Builds</a>:</td><td> </td><td valign="top"><a
href="#Builds">Builds</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Changes_002c-copying-between-branches">Changes, copying between
branches</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Changing-a-log-message">Changing
a log message</a>:</td><td> </td><td valign="top"><a
href="#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Check-out-a-branch">Check out a
branch</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Checked-out-copy_002c-keeping">Checked out copy,
keeping</a>:</td><td> </td><td valign="top"><a
href="#Keeping-a-checked-out-copy">Keeping a checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Checking-out-source">Checking
out source</a>:</td><td> </td><td valign="top"><a
href="#Getting-the-source">Getting the source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-checkout-_0028subcommand_0029">checkout
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#checkout">checkout</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Checkout-program">Checkout
program</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Checkout_002c-as-term-for-getting-ready-to-edit">Checkout, as term
for getting ready to edit</a>:</td><td> </td><td valign="top"><a
href="#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Checkout_002c-example">Checkout,
example</a>:</td><td> </td><td valign="top"><a
href="#Getting-the-source">Getting the source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-checkoutlist">checkoutlist</a>:</td><td> </td><td
valign="top"><a href="#checkoutlist">checkoutlist</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Choosing_002c-reserved-or-unreserved-checkouts">Choosing, reserved
or unreserved checkouts</a>:</td><td> </td><td valign="top"><a
href="#Choosing-a-model">Choosing a model</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Cleaning-up">Cleaning
up</a>:</td><td> </td><td valign="top"><a href="#Cleaning-up">Cleaning
up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Client_002fServer-Operation">Client/Server
Operation</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Client_002fServer-Operation_002c-port-specification">Client/Server
Operation, port specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Client_002fServer-Operation_002c-port-specification-1">Client/Server
Operation, port specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-co-_0028subcommand_0029">co
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#checkout">checkout</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Command-reference">Command
reference</a>:</td><td> </td><td valign="top"><a
href="#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Command-structure">Command
structure</a>:</td><td> </td><td valign="top"><a
href="#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Comment-leader">Comment
leader</a>:</td><td> </td><td valign="top"><a href="#admin-options">admin
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-commit-_0028subcommand_0029">commit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#commit">commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-commitinfo"><samp>commitinfo</samp></a>:</td><td> </td><td
valign="top"><a href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-commitinfo_002c-command-environment"><samp>commitinfo</samp>,
command environment</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-commitinfo_002c-working-directory"><samp>commitinfo</samp>,
working directory</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Commits_002c-precommit-verification-of">Commits, precommit
verification of</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Committing-changes-to-files">Committing changes to
files</a>:</td><td> </td><td valign="top"><a
href="#Committing-your-changes">Committing your changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Committing_002c-administrative-support-files">Committing,
administrative support files</a>:</td><td> </td><td valign="top"><a
href="#commit-files">commit files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Committing_002c-when-to">Committing, when
to</a>:</td><td> </td><td valign="top"><a href="#When-to-commit">When to
commit</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Common-options">Common
options</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Common-syntax-of-info-files">Common syntax of info
files</a>:</td><td> </td><td valign="top"><a
href="#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Compatibility_002c-between-CVS-versions">Compatibility, between
CVS versions</a>:</td><td> </td><td valign="top"><a
href="#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Compression">Compression</a>:</td><td> </td><td
valign="top"><a href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Compression-1">Compression</a>:</td><td> </td><td
valign="top"><a href="#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-COMSPEC_002c-environment-variable">COMSPEC, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-config_002c-in-CVSROOT">config,
in CVSROOT</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Conflict-markers">Conflict
markers</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Conflict-resolution">Conflict
resolution</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Conflicts-_0028merge-example_0029">Conflicts (merge
example)</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Contributors-_0028CVS-program_0029">Contributors (CVS
program)</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Contributors-_0028manual_0029">Contributors
(manual)</a>:</td><td> </td><td valign="top"><a
href="#Credits">Credits</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Copying-a-repository">Copying a
repository</a>:</td><td> </td><td valign="top"><a
href="#Moving-a-repository">Moving a repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Copying-changes">Copying
changes</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Correcting-a-log-message">Correcting a log
message</a>:</td><td> </td><td valign="top"><a href="#admin-options">admin
options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Creating-a-branch">Creating a
branch</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Creating-a-project">Creating a
project</a>:</td><td> </td><td valign="top"><a
href="#Starting-a-new-project">Starting a new project</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Creating-a-repository">Creating
a repository</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-repository">Creating a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Credits-_0028CVS-program_0029">Credits (CVS
program)</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Credits-_0028manual_0029">Credits
(manual)</a>:</td><td> </td><td valign="top"><a
href="#Credits">Credits</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS-1_002e6_002c-and-watches">CVS 1.6, and
watches</a>:</td><td> </td><td valign="top"><a
href="#Watches-Compatibility">Watches Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS-command-structure">CVS
command structure</a>:</td><td> </td><td valign="top"><a
href="#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS-directory_002c-in-repository">CVS directory, in
repository</a>:</td><td> </td><td valign="top"><a
href="#CVS-in-repository">CVS in repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS-directory_002c-in-working-directory">CVS directory, in working
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS-passwd-file">CVS passwd
file</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002c-history-of">CVS,
history of</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002c-introduction-to">CVS,
introduction to</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002c-versions-of">CVS,
versions of</a>:</td><td> </td><td valign="top"><a
href="#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002fBase-directory">CVS/Base
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fBaserev-file">CVS/Baserev file</a>:</td><td> </td><td
valign="top"><a href="#Working-directory-storage">Working directory
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fBaserev_002etmp-file">CVS/Baserev.tmp
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fEntries-file">CVS/Entries file</a>:</td><td> </td><td
valign="top"><a href="#Working-directory-storage">Working directory
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fEntries_002eBackup-file">CVS/Entries.Backup
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fEntries_002eLog-file">CVS/Entries.Log
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fEntries_002eStatic-file">CVS/Entries.Static
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002fNotify-file">CVS/Notify
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fNotify_002etmp-file">CVS/Notify.tmp
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fRepository-file">CVS/Repository
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002fRoot-file">CVS/Root
file</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVS_002fTag-file">CVS/Tag
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_002fTemplate-file">CVS/Template
file</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-cvsadmin">cvsadmin</a>:</td><td> </td><td valign="top"><a
href="#admin">admin</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSEDITOR_002c-environment-variable">CVSEDITOR, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Committing-your-changes">Committing your changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSEDITOR_002c-environment-variable-1">CVSEDITOR, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSEDITOR_002c-internal-variable">CVSEDITOR, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-cvsignore-_0028admin-file_0029_002c-global">cvsignore (admin
file), global</a>:</td><td> </td><td valign="top"><a
href="#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSIGNORE_002c-environment-variable">CVSIGNORE, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSREAD_002c-environment-variable">CVSREAD, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSREAD_002c-overriding">CVSREAD,
overriding</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-cvsroot">cvsroot</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-CVSROOT-_0028file_0029">CVSROOT
(file)</a>:</td><td> </td><td valign="top"><a
href="#Administrative-files">Administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-environment-variable">CVSROOT, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-internal-variable">CVSROOT, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-module-name">CVSROOT, module
name</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-multiple-repositories">CVSROOT, multiple
repositories</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-overriding">CVSROOT,
overriding</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002c-storage-of-files">CVSROOT, storage of
files</a>:</td><td> </td><td valign="top"><a
href="#CVSROOT-storage">CVSROOT storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002fconfig">CVSROOT/config</a>:</td><td> </td><td
valign="top"><a href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002fEmptydir-directory">CVSROOT/Emptydir
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002fval_002dtags-file_002c-and-read_002donly-access-to-projects">CVSROOT/val-tags
file, and read-only access to projects</a>:</td><td> </td><td
valign="top"><a href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSROOT_002fval_002dtags-file_002c-forcing-tags-into">CVSROOT/val-tags
file, forcing tags into</a>:</td><td> </td><td valign="top"><a
href="#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSUMASK_002c-environment-variable">CVSUMASK, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-cvswrappers-_0028admin-file_0029">cvswrappers (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSWRAPPERS_002c-environment-variable">CVSWRAPPERS, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVSWRAPPERS_002c-environment-variable-1">CVSWRAPPERS, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fCLIENT_005fLOG_002c-environment-variable">CVS_CLIENT_LOG,
environment variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fCLIENT_005fPORT">CVS_CLIENT_PORT</a>:</td><td> </td><td
valign="top"><a href="#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fIGNORE_005fREMOTE_005fROOT_002c-environment-variable">CVS_IGNORE_REMOTE_ROOT,
environment variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fPASSFILE_002c-environment-variable">CVS_PASSFILE,
environment variable</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fRCMD_005fPORT_002c-environment-variable">CVS_RCMD_PORT,
environment variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fRSH_002c-environment-variable">CVS_RSH, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fSERVER_002c-and-_003afork_003a">CVS_SERVER, and
:fork:</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-fork">Connecting via fork</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fSERVER_002c-environment-variable">CVS_SERVER, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fSERVER_005fSLEEP_002c-environment-variable">CVS_SERVER_SLEEP,
environment variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fSSH_002c-environment-variable">CVS_SSH, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-CVS_005fUSER_002c-environment-variable">CVS_USER, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Date-keyword">Date
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Dates">Dates</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Dead-state">Dead
state</a>:</td><td> </td><td valign="top"><a
href="#Attic">Attic</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Decimal-revision-number">Decimal
revision number</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DEFAULT-in-commitinfo">DEFAULT
in commitinfo</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DEFAULT-in-editinfo">DEFAULT in
editinfo</a>:</td><td> </td><td valign="top"><a
href="#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DEFAULT-in-verifymsg">DEFAULT in
<samp>verifymsg</samp></a>:</td><td> </td><td valign="top"><a
href="#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Defining-a-module">Defining a
module</a>:</td><td> </td><td valign="top"><a
href="#Defining-the-module">Defining the module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Defining-modules-_0028intro_0029">Defining modules
(intro)</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Defining-modules-_0028reference-manual_0029">Defining modules
(reference manual)</a>:</td><td> </td><td valign="top"><a
href="#modules">modules</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Deleting-branch-tags">Deleting
branch tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Deleting-files">Deleting
files</a>:</td><td> </td><td valign="top"><a
href="#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Deleting-revisions">Deleting
revisions</a>:</td><td> </td><td valign="top"><a
href="#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Deleting-sticky-tags">Deleting
sticky tags</a>:</td><td> </td><td valign="top"><a
href="#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Deleting-tags">Deleting
tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Descending-directories">Descending
directories</a>:</td><td> </td><td valign="top"><a
href="#Recursive-behavior">Recursive behavior</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Device-nodes">Device
nodes</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Diff">Diff</a>:</td><td> </td><td valign="top"><a
href="#Viewing-differences">Viewing differences</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-diff-_0028subcommand_0029">diff
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#diff">diff</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Differences_002c-merging">Differences,
merging</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Directories_002c-moving">Directories,
moving</a>:</td><td> </td><td valign="top"><a
href="#Moving-directories">Moving directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Directories_002c-removing">Directories,
removing</a>:</td><td> </td><td valign="top"><a
href="#Removing-directories">Removing directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Directory_002c-descending">Directory,
descending</a>:</td><td> </td><td valign="top"><a
href="#Recursive-behavior">Recursive behavior</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Disjoint-repositories">Disjoint
repositories</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Distributing-log-messages">Distributing log
messages</a>:</td><td> </td><td valign="top"><a
href="#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-driver_002ec-_0028merge-example_0029">driver.c (merge
example)</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-edit-_0028subcommand_0029">edit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-editinfo-_0028admin-file_0029">editinfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Editing-administrative-files">Editing administrative
files</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Editing-the-modules-file">Editing the modules
file</a>:</td><td> </td><td valign="top"><a
href="#Defining-the-module">Defining the module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Editor_002c-avoiding-invocation-of">Editor, avoiding invocation
of</a>:</td><td> </td><td valign="top"><a href="#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-EDITOR_002c-environment-variable">EDITOR, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Committing-your-changes">Committing your changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-EDITOR_002c-environment-variable-1">EDITOR, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-EDITOR_002c-internal-variable">EDITOR, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-EDITOR_002c-overriding">EDITOR,
overriding</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Editor_002c-specifying-per-module">Editor, specifying per
module</a>:</td><td> </td><td valign="top"><a
href="#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-editors-_0028subcommand_0029">editors
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Watch-information">Watch information</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-emerge">emerge</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Emptydir_002c-in-CVSROOT-directory">Emptydir, in CVSROOT
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Encryption">Encryption</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Entries-file_002c-in-CVS-directory">Entries file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Entries_002eBackup-file_002c-in-CVS-directory">Entries.Backup
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Entries_002eLog-file_002c-in-CVS-directory">Entries.Log file, in
CVS directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Entries_002eStatic-file_002c-in-CVS-directory">Entries.Static
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Environment-variables">Environment
variables</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-environment-variables_002c-passed-to-administrative-files">environment
variables, passed to administrative files</a>:</td><td> </td><td
valign="top"><a href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Errors_002c-reporting">Errors,
reporting</a>:</td><td> </td><td valign="top"><a
href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Example-of-a-work_002dsession">Example of a
work-session</a>:</td><td> </td><td valign="top"><a
href="#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Example-of-merge">Example of
merge</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Example_002c-branch-merge">Example, branch
merge</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Excluding-directories_002c-in-modules-file">Excluding directories,
in modules file</a>:</td><td> </td><td valign="top"><a
href="#Excluding-directories">Excluding directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Exit-status_002c-of-commitinfo">Exit status, of
commitinfo</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Exit-status_002c-of-CVS">Exit
status, of CVS</a>:</td><td> </td><td valign="top"><a
href="#Exit-status">Exit status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Exit-status_002c-of-editor">Exit
status, of editor</a>:</td><td> </td><td valign="top"><a
href="#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Exit-status_002c-of-verifymsg">Exit status, of
<samp>verifymsg</samp></a>:</td><td> </td><td valign="top"><a
href="#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-export-_0028subcommand_0029">export
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#export">export</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Export-program">Export
program</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Fetching-source">Fetching
source</a>:</td><td> </td><td valign="top"><a
href="#Getting-the-source">Getting the source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-File-had-conflicts-on-merge">File had conflicts on
merge</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-File-locking">File
locking</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-File-permissions_002c-general">File permissions,
general</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-File-permissions_002c-Windows_002dspecific">File permissions,
Windows-specific</a>:</td><td> </td><td valign="top"><a
href="#Windows-permissions">Windows permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-File-status">File
status</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Files_002c-moving">Files,
moving</a>:</td><td> </td><td valign="top"><a href="#Moving-files">Moving
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Files_002c-reference-manual">Files, reference
manual</a>:</td><td> </td><td valign="top"><a
href="#Administrative-files">Administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Fixing-a-log-message">Fixing a
log message</a>:</td><td> </td><td valign="top"><a
href="#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Forcing-a-tag-match">Forcing a
tag match</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-fork_002c-access-method">fork,
access method</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-fork">Connecting via fork</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Form-for-log-message">Form for
log message</a>:</td><td> </td><td valign="top"><a
href="#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Format-of-CVS-commands">Format
of CVS commands</a>:</td><td> </td><td valign="top"><a
href="#Structure">Structure</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-G">G</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Getting-started">Getting
started</a>:</td><td> </td><td valign="top"><a href="#A-sample-session">A
sample session</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Getting-the-source">Getting the
source</a>:</td><td> </td><td valign="top"><a
href="#Getting-the-source">Getting the source</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Global-cvsignore">Global
cvsignore</a>:</td><td> </td><td valign="top"><a
href="#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Global-options">Global
options</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Group_002c-UNIX-file-permissions_002c-in-repository">Group, UNIX
file permissions, in repository</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification">gserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">gserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-GSSAPI">GSSAPI</a>:</td><td> </td><td valign="top"><a
href="#GSSAPI-authenticated">GSSAPI authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Gzip">Gzip</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Gzip-1">Gzip</a>:</td><td> </td><td valign="top"><a
href="#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-H">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Hard-links">Hard
links</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-HEAD_002c-as-reserved-tag-name">HEAD, as reserved tag
name</a>:</td><td> </td><td valign="top"><a href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HEAD_002c-special-tag">HEAD,
special tag</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Header-keyword">Header
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-history-_0028subcommand_0029">history
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#history">history</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-History-browsing">History
browsing</a>:</td><td> </td><td valign="top"><a
href="#History-browsing">History browsing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-History-file">History
file</a>:</td><td> </td><td valign="top"><a href="#history-file">history
file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-History-files">History
files</a>:</td><td> </td><td valign="top"><a
href="#Repository-files">Repository files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-History-of-CVS">History of
CVS</a>:</td><td> </td><td valign="top"><a href="#What-is-CVS_003f">What
is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-HOME_002c-environment-variable">HOME, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-HOMEDRIVE_002c-environment-variable">HOMEDRIVE, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-HOMEPATH_002c-environment-variable">HOMEPATH, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Id-keyword">Id
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Ident-_0028shell-command_0029">Ident (shell
command)</a>:</td><td> </td><td valign="top"><a
href="#Using-keywords">Using keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Identifying-a-branch">Identifying a
branch</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Identifying-files">Identifying
files</a>:</td><td> </td><td valign="top"><a
href="#Keyword-substitution">Keyword substitution</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Ignored-files">Ignored
files</a>:</td><td> </td><td valign="top"><a
href="#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-IgnoreUnknownConfigKeys_002c-in-CVSROOT_002fconfig">IgnoreUnknownConfigKeys,
in CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Ignoring-files">Ignoring
files</a>:</td><td> </td><td valign="top"><a
href="#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-import-_0028subcommand_0029">import
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#import">import</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Importing-files">Importing
files</a>:</td><td> </td><td valign="top"><a href="#From-files">From
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Importing-files_002c-from-other-version-control-systems">Importing
files, from other version control systems</a>:</td><td> </td><td
valign="top"><a href="#From-other-version-control-systems">From other version
control systems</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Importing-modules">Importing
modules</a>:</td><td> </td><td valign="top"><a href="#First-import">First
import</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Index">Index</a>:</td><td> </td><td valign="top"><a
href="#Index">Index</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-inetd_002c-configuring-for-pserver">inetd, configuring for
pserver</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Info-files">Info
files</a>:</td><td> </td><td valign="top"><a
href="#Trigger-Scripts">Trigger Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Info-files-_0028syntax_0029">Info files
(syntax)</a>:</td><td> </td><td valign="top"><a
href="#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Info-files_002c-security">Info
files, security</a>:</td><td> </td><td valign="top"><a
href="#Trigger-Script-Security">Trigger Script Security</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Informing-others">Informing
others</a>:</td><td> </td><td valign="top"><a
href="#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-init-_0028subcommand_0029">init
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-repository">Creating a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Installed-images-_0028VMS_0029">Installed images
(VMS)</a>:</td><td> </td><td valign="top"><a href="#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Internal-variables">Internal
variables</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Introduction-to-CVS">Introduction to
CVS</a>:</td><td> </td><td valign="top"><a href="#What-is-CVS_003f">What
is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Invoking-CVS">Invoking
CVS</a>:</td><td> </td><td valign="top"><a href="#Invoking-CVS">Invoking
CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Isolation">Isolation</a>:</td><td> </td><td valign="top"><a
href="#History-browsing">History browsing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-J">J</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Join">Join</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Keeping-a-checked-out-copy">Keeping a checked out
copy</a>:</td><td> </td><td valign="top"><a
href="#Keeping-a-checked-out-copy">Keeping a checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Kerberos_002c-using-_003agserver_003a">Kerberos, using
:gserver:</a>:</td><td> </td><td valign="top"><a
href="#GSSAPI-authenticated">GSSAPI authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Kerberos_002c-using-_003akserver_003a">Kerberos, using
:kserver:</a>:</td><td> </td><td valign="top"><a
href="#Kerberos-authenticated">Kerberos authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Kerberos_002c-using-kerberized-rsh">Kerberos, using kerberized
rsh</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Keyword-expansion">Keyword
expansion</a>:</td><td> </td><td valign="top"><a
href="#Keyword-substitution">Keyword substitution</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Keyword-List">Keyword
List</a>:</td><td> </td><td valign="top"><a href="#Keyword-list">Keyword
list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Keyword-substitution">Keyword
substitution</a>:</td><td> </td><td valign="top"><a
href="#Keyword-substitution">Keyword substitution</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Keyword-substitution_002c-and-merging">Keyword substitution, and
merging</a>:</td><td> </td><td valign="top"><a
href="#Merging-and-keywords">Merging and keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Keyword-substitution_002c-changing-modes">Keyword substitution,
changing modes</a>:</td><td> </td><td valign="top"><a
href="#Substitution-modes">Substitution modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Kflag">Kflag</a>:</td><td> </td><td valign="top"><a
href="#Substitution-modes">Substitution modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-kinit">kinit</a>:</td><td> </td><td valign="top"><a
href="#Kerberos-authenticated">Kerberos authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Known-bugs-in-this-manual-or-CVS">Known bugs in this manual or
CVS</a>:</td><td> </td><td valign="top"><a href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification">kserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">kserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Layout-of-repository">Layout of
repository</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Left_002dhand-options">Left-hand
options</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Linear-development">Linear
development</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Link_002c-symbolic_002c-importing">Link, symbolic,
importing</a>:</td><td> </td><td valign="top"><a
href="#import-output">import output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-List_002c-mailing-list">List,
mailing list</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Locally-Added">Locally
Added</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Locally-Modified">Locally
Modified</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Locally-Removed">Locally
Removed</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-LockDir_002c-in-CVSROOT_002fconfig">LockDir, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Locker-keyword">Locker
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Locking-files">Locking
files</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Locks_002c-cvs_002c-and-backups">Locks, cvs, and
backups</a>:</td><td> </td><td valign="top"><a href="#Backing-up">Backing
up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Locks_002c-cvs_002c-introduction">Locks, cvs,
introduction</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Locks_002c-cvs_002c-technical-details">Locks, cvs, technical
details</a>:</td><td> </td><td valign="top"><a
href="#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-log-_0028subcommand_0029">log
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#log">log</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-information_002c-saving">Log
information, saving</a>:</td><td> </td><td valign="top"><a
href="#history-file">history file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-keyword">Log
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-message-entry">Log message
entry</a>:</td><td> </td><td valign="top"><a
href="#Committing-your-changes">Committing your changes</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-message-template">Log
message template</a>:</td><td> </td><td valign="top"><a
href="#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-message_002c-correcting">Log
message, correcting</a>:</td><td> </td><td valign="top"><a
href="#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-message_002c-verifying">Log
message, verifying</a>:</td><td> </td><td valign="top"><a
href="#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-messages">Log
messages</a>:</td><td> </td><td valign="top"><a
href="#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Log-messages_002c-editing">Log
messages, editing</a>:</td><td> </td><td valign="top"><a
href="#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-LogHistory_002c-in-CVSROOT_002fconfig">LogHistory, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Login-_0028subcommand_0029">Login
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-loginfo-_0028admin-file_0029">loginfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-LOGNAME_002c-environment-variable">LOGNAME, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Logout-_0028subcommand_0029">Logout
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Mail_002c-automatic-mail-on-commit">Mail, automatic mail on
commit</a>:</td><td> </td><td valign="top"><a
href="#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Mailing-list">Mailing
list</a>:</td><td> </td><td valign="top"><a href="#What-is-CVS_003f">What
is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Mailing-log-messages">Mailing
log messages</a>:</td><td> </td><td valign="top"><a
href="#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Main-trunk-and-branches">Main
trunk and branches</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-make">make</a>:</td><td> </td><td valign="top"><a
href="#Builds">Builds</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Many-repositories">Many
repositories</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Markers_002c-conflict">Markers,
conflict</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Merge_002c-an-example">Merge, an
example</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Merge_002c-branch-example">Merge, branch
example</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Merging">Merging</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Merging-a-branch">Merging a
branch</a>:</td><td> </td><td valign="top"><a
href="#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Merging-a-file">Merging a
file</a>:</td><td> </td><td valign="top"><a
href="#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Merging-two-revisions">Merging
two revisions</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Merging_002c-and-keyword-substitution">Merging, and keyword
substitution</a>:</td><td> </td><td valign="top"><a
href="#Merging-and-keywords">Merging and keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-mkmodules">mkmodules</a>:</td><td> </td><td valign="top"><a
href="#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Modifications_002c-copying-between-branches">Modifications,
copying between branches</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Module-status">Module
status</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Module_002c-defining">Module,
defining</a>:</td><td> </td><td valign="top"><a
href="#Defining-the-module">Defining the module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Modules-_0028admin-file_0029">Modules (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#modules">modules</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Modules-file">Modules
file</a>:</td><td> </td><td valign="top"><a
href="#Intro-administrative-files">Intro administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Modules-file-program-options">Modules file program
options</a>:</td><td> </td><td valign="top"><a
href="#Module-program-options">Module program options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Modules-file_002c-changing">Modules file,
changing</a>:</td><td> </td><td valign="top"><a
href="#Defining-the-module">Defining the module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-modules_002edb">modules.db</a>:</td><td> </td><td
valign="top"><a href="#CVSROOT-storage">CVSROOT storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-modules_002edir">modules.dir</a>:</td><td> </td><td
valign="top"><a href="#CVSROOT-storage">CVSROOT storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-modules_002epag">modules.pag</a>:</td><td> </td><td
valign="top"><a href="#CVSROOT-storage">CVSROOT storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Motivation-for-branches">Motivation for
branches</a>:</td><td> </td><td valign="top"><a
href="#Branches-motivation">Branches motivation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Moving-a-repository">Moving a
repository</a>:</td><td> </td><td valign="top"><a
href="#Moving-a-repository">Moving a repository</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Moving-branch-tags">Moving
branch tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Moving-directories">Moving
directories</a>:</td><td> </td><td valign="top"><a
href="#Moving-directories">Moving directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Moving-files">Moving
files</a>:</td><td> </td><td valign="top"><a href="#Moving-files">Moving
files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Moving-tags">Moving
tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Multiple-developers">Multiple
developers</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Multiple-repositories">Multiple
repositories</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Name-keyword">Name
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Name_002c-symbolic-_0028tag_0029">Name, symbolic
(tag)</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Needs-Checkout">Needs
Checkout</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Needs-Merge">Needs
Merge</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Needs-Patch">Needs
Patch</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Newsgroups">Newsgroups</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-notify-_0028admin-file_0029">notify (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Notify-file_002c-in-CVS-directory">Notify file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Notify_002etmp-file_002c-in-CVS-directory">Notify.tmp file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Number_002c-branch">Number,
branch</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Number_002c-branch-1">Number,
branch</a>:</td><td> </td><td valign="top"><a
href="#Branches-and-revisions">Branches and revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Number_002c-revision_002d">Number,
revision-</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Option-defaults">Option
defaults</a>:</td><td> </td><td valign="top"><a
href="#g_t_007e_002f_002ecvsrc">~/.cvsrc</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Options_002c-global">Options,
global</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Options_002c-in-modules-file">Options, in modules
file</a>:</td><td> </td><td valign="top"><a href="#Module-options">Module
options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Outdating-revisions">Outdating
revisions</a>:</td><td> </td><td valign="top"><a
href="#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Overlap">Overlap</a>:</td><td> </td><td valign="top"><a
href="#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Overriding-CVSREAD">Overriding
CVSREAD</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Overriding-CVSROOT">Overriding
CVSROOT</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Overriding-EDITOR">Overriding
EDITOR</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Overriding-RCSBIN">Overriding
RCSBIN</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Overriding-TMPDIR">Overriding
TMPDIR</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Overview">Overview</a>:</td><td> </td><td valign="top"><a
href="#Overview">Overview</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Ownership_002c-saving-in-CVS">Ownership, saving in
CVS</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Parallel-repositories">Parallel
repositories</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-passwd-_0028admin-file_0029">passwd (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Password-client_002c-using">Password client,
using</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-client">Password authentication
client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Password-server_002c-setting-up">Password server, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-PATH_002c-environment-variable">PATH, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Per_002ddirectory-sticky-tags_002fdates">Per-directory sticky
tags/dates</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Per_002dmodule-editor">Per-module
editor</a>:</td><td> </td><td valign="top"><a
href="#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Permissions_002c-general">Permissions,
general</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Permissions_002c-saving-in-CVS">Permissions, saving in
CVS</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Permissions_002c-Windows_002dspecific">Permissions,
Windows-specific</a>:</td><td> </td><td valign="top"><a
href="#Windows-permissions">Windows permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Policy">Policy</a>:</td><td> </td><td valign="top"><a
href="#When-to-commit">When to commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-port_002c-specifying-for-remote-repositories">port, specifying for
remote repositories</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-port_002c-specifying-for-remote-repositories-1">port, specifying
for remote repositories</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Precommit-checking">Precommit
checking</a>:</td><td> </td><td valign="top"><a
href="#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification">pserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">pserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-pserver-_0028subcommand_0029">pserver
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-PVCS_002c-importing-files-from">PVCS, importing files
from</a>:</td><td> </td><td valign="top"><a
href="#From-other-version-control-systems">From other version control
systems</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RCS-history-files">RCS history
files</a>:</td><td> </td><td valign="top"><a
href="#Repository-files">Repository files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RCS-revision-numbers">RCS
revision numbers</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-RCS_002c-importing-files-from">RCS, importing files
from</a>:</td><td> </td><td valign="top"><a
href="#From-other-version-control-systems">From other version control
systems</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RCS_002dstyle-locking">RCS-style
locking</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-RCSBIN_002c-in-CVSROOT_002fconfig">RCSBIN, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-RCSBIN_002c-internal-variable">RCSBIN, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RCSBIN_002c-overriding">RCSBIN,
overriding</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RCSfile-keyword">RCSfile
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-rcsinfo-_0028admin-file_0029">rcsinfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-rdiff-_0028subcommand_0029">rdiff
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#rdiff">rdiff</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Read_002donly-files_002c-and-_002dr">Read-only files, and
-r</a>:</td><td> </td><td valign="top"><a href="#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Read_002donly-files_002c-and-CVSREAD">Read-only files, and
CVSREAD</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Read_002donly-files_002c-and-watches">Read-only files, and
watches</a>:</td><td> </td><td valign="top"><a
href="#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Read_002donly-files_002c-in-repository">Read-only files, in
repository</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Read_002donly-mode">Read-only
mode</a>:</td><td> </td><td valign="top"><a href="#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Read_002donly-repository-access">Read-only repository
access</a>:</td><td> </td><td valign="top"><a
href="#Read_002donly-access">Read-only access</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-readers-_0028admin-file_0029">readers (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Read_002donly-access">Read-only access</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Recursive-_0028directory-descending_0029">Recursive (directory
descending)</a>:</td><td> </td><td valign="top"><a
href="#Recursive-behavior">Recursive behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Reference-manual-_0028files_0029">Reference manual
(files)</a>:</td><td> </td><td valign="top"><a
href="#Administrative-files">Administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Reference-manual-for-variables">Reference manual for
variables</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Reference_002c-commands">Reference,
commands</a>:</td><td> </td><td valign="top"><a
href="#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Regular-expression-syntax">Regular expression
syntax</a>:</td><td> </td><td valign="top"><a
href="#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Regular-modules">Regular
modules</a>:</td><td> </td><td valign="top"><a
href="#Regular-modules">Regular modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-release-_0028subcommand_0029">release
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#release">release</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Releases_002c-revisions-and-versions">Releases, revisions and
versions</a>:</td><td> </td><td valign="top"><a
href="#Versions-revisions-releases">Versions revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Releasing-your-working-copy">Releasing your working
copy</a>:</td><td> </td><td valign="top"><a href="#Cleaning-up">Cleaning
up</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Remote-repositories">Remote
repositories</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Remote-repositories_002c-port-specification">Remote repositories,
port specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Remote-repositories_002c-port-specification-1">Remote
repositories, port specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Remove-_0028subcommand_0029">Remove
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-remove-_0028subcommand_0029">remove
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#remove">remove</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Removing-a-change">Removing a
change</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Removing-branch-tags">Removing
branch tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Removing-directories">Removing
directories</a>:</td><td> </td><td valign="top"><a
href="#Removing-directories">Removing directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Removing-files">Removing
files</a>:</td><td> </td><td valign="top"><a
href="#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Removing-tags">Removing
tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Removing-your-working-copy">Removing your working
copy</a>:</td><td> </td><td valign="top"><a href="#Cleaning-up">Cleaning
up</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Renaming-directories">Renaming
directories</a>:</td><td> </td><td valign="top"><a
href="#Moving-directories">Moving directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Renaming-files">Renaming
files</a>:</td><td> </td><td valign="top"><a href="#Moving-files">Moving
files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Renaming-tags">Renaming
tags</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Replacing-a-log-message">Replacing a log
message</a>:</td><td> </td><td valign="top"><a href="#admin-options">admin
options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Reporting-bugs">Reporting
bugs</a>:</td><td> </td><td valign="top"><a href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repositories_002c-multiple">Repositories,
multiple</a>:</td><td> </td><td valign="top"><a
href="#Multiple-repositories">Multiple repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repositories_002c-remote">Repositories,
remote</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repositories_002c-remote_002c-port-specification">Repositories,
remote, port specification</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repositories_002c-remote_002c-port-specification-1">Repositories,
remote, port specification</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository-_0028intro_0029">Repository
(intro)</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository-file_002c-in-CVS-directory">Repository file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository_002c-backing-up">Repository, backing
up</a>:</td><td> </td><td valign="top"><a href="#Backing-up">Backing
up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository_002c-example">Repository,
example</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository_002c-how-data-is-stored">Repository, how data is
stored</a>:</td><td> </td><td valign="top"><a
href="#Repository-storage">Repository storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository_002c-moving">Repository,
moving</a>:</td><td> </td><td valign="top"><a
href="#Moving-a-repository">Moving a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Repository_002c-setting-up">Repository, setting
up</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-repository">Creating a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-RereadLogAfterVerify_002c-in-CVSROOT_002fconfig">RereadLogAfterVerify,
in CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Reserved-checkouts">Reserved
checkouts</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Resetting-sticky-tags">Resetting
sticky tags</a>:</td><td> </td><td valign="top"><a
href="#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Resolving-a-conflict">Resolving
a conflict</a>:</td><td> </td><td valign="top"><a
href="#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Restoring-old-version-of-removed-file">Restoring old version of
removed file</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Resurrecting-old-version-of-dead-file">Resurrecting old version of
dead file</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Retrieve-a-branch">Retrieve a
branch</a>:</td><td> </td><td valign="top"><a
href="#Accessing-branches">Accessing branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Retrieving-an-old-revision-using-tags">Retrieving an old revision
using tags</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Reverting-to-repository-version">Reverting to repository
version</a>:</td><td> </td><td valign="top"><a
href="#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Revision-keyword">Revision
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Revision-management">Revision
management</a>:</td><td> </td><td valign="top"><a
href="#Revision-management">Revision management</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Revision-numbers">Revision
numbers</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Revision-numbers-_0028branches_0029">Revision numbers
(branches)</a>:</td><td> </td><td valign="top"><a
href="#Branches-and-revisions">Branches and revisions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Revision-tree">Revision
tree</a>:</td><td> </td><td valign="top"><a
href="#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Revision-tree_002c-making-branches">Revision tree, making
branches</a>:</td><td> </td><td valign="top"><a
href="#Branching-and-merging">Branching and merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Revisions_002c-merging-differences-between">Revisions, merging
differences between</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Revisions_002c-versions-and-releases">Revisions, versions and
releases</a>:</td><td> </td><td valign="top"><a
href="#Versions-revisions-releases">Versions revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Right_002dhand-options">Right-hand
options</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Root-file_002c-in-CVS-directory">Root file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Specifying-a-repository">Specifying a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-rsh">rsh</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-rsh-replacements-_0028Kerberized_002c-SSH_002c-_0026c_0029">rsh
replacements (Kerberized, SSH, &c)</a>:</td><td> </td><td
valign="top"><a href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rtag-_0028subcommand_0029">rtag
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Tagging-by-date_002ftag">Tagging by date/tag</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-rtag_002c-creating-a-branch-using">rtag, creating a branch
using</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Saving-space">Saving
space</a>:</td><td> </td><td valign="top"><a href="#admin-options">admin
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-SCCS_002c-importing-files-from">SCCS, importing files
from</a>:</td><td> </td><td valign="top"><a
href="#From-other-version-control-systems">From other version control
systems</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Security_002c-file-permissions-in-repository">Security, file
permissions in repository</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Security_002c-GSSAPI">Security,
GSSAPI</a>:</td><td> </td><td valign="top"><a
href="#GSSAPI-authenticated">GSSAPI authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Security_002c-Kerberos">Security,
Kerberos</a>:</td><td> </td><td valign="top"><a
href="#Kerberos-authenticated">Kerberos authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Security_002c-of-pserver">Security, of
pserver</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-security">Password authentication
security</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Security_002c-setuid">Security,
setuid</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Server_002c-CVS">Server,
CVS</a>:</td><td> </td><td valign="top"><a
href="#Remote-repositories">Remote repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Server_002c-temporary-directories">Server, temporary
directories</a>:</td><td> </td><td valign="top"><a
href="#Server-temporary-directory">Server temporary directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Setgid">Setgid</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Setting-up-a-repository">Setting
up a repository</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-repository">Creating a repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Setuid">Setuid</a>:</td><td> </td><td valign="top"><a
href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Source-keyword">Source
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Source_002c-getting-CVS-source">Source, getting CVS
source</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Source_002c-getting-from-CVS">Source, getting from
CVS</a>:</td><td> </td><td valign="top"><a
href="#Getting-the-source">Getting the source</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Special-files">Special
files</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Specifying-dates">Specifying
dates</a>:</td><td> </td><td valign="top"><a href="#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Spreading-information">Spreading
information</a>:</td><td> </td><td valign="top"><a
href="#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-ssh">ssh</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-SSH-_0028rsh-replacement_0029">SSH (rsh
replacement)</a>:</td><td> </td><td valign="top"><a
href="#Connecting-via-rsh">Connecting via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Starting-a-project-with-CVS">Starting a project with
CVS</a>:</td><td> </td><td valign="top"><a
href="#Starting-a-new-project">Starting a new project</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-State-keyword">State
keyword</a>:</td><td> </td><td valign="top"><a
href="#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Status-of-a-file">Status of a
file</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Status-of-a-module">Status of a
module</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Sticky-date">Sticky
date</a>:</td><td> </td><td valign="top"><a href="#Sticky-tags">Sticky
tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Sticky-tags">Sticky
tags</a>:</td><td> </td><td valign="top"><a href="#Sticky-tags">Sticky
tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Sticky-tags_002c-resetting">Sticky tags,
resetting</a>:</td><td> </td><td valign="top"><a
href="#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Sticky-tags_002fdates_002c-per_002ddirectory">Sticky tags/dates,
per-directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Storing-log-messages">Storing
log messages</a>:</td><td> </td><td valign="top"><a
href="#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Stream-authentication">Stream
authentication</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Structure">Structure</a>:</td><td> </td><td valign="top"><a
href="#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Subdirectories">Subdirectories</a>:</td><td> </td><td
valign="top"><a href="#Recursive-behavior">Recursive behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Support_002c-getting-CVS-support">Support, getting CVS
support</a>:</td><td> </td><td valign="top"><a
href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Symbolic-link_002c-importing">Symbolic link,
importing</a>:</td><td> </td><td valign="top"><a
href="#import-output">import output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Symbolic-links">Symbolic
links</a>:</td><td> </td><td valign="top"><a href="#Special-Files">Special
Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Symbolic-name-_0028tag_0029">Symbolic name
(tag)</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Syntax-of-info-files">Syntax of
info files</a>:</td><td> </td><td valign="top"><a
href="#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-SystemAuth_002c-in-CVSROOT_002fconfig">SystemAuth, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-tag-_0028subcommand_0029">tag
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Tagging-the-working-directory">Tagging the working
directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Tag-file_002c-in-CVS-directory">Tag file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tag-program">Tag
program</a>:</td><td> </td><td valign="top"><a
href="#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-tag_002c-command_002c-introduction">tag, command,
introduction</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-tag_002c-creating-a-branch-using">tag, creating a branch
using</a>:</td><td> </td><td valign="top"><a
href="#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tag_002c-example">Tag,
example</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Tag_002c-retrieving-old-revisions">Tag, retrieving old
revisions</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tag_002c-symbolic-name">Tag,
symbolic name</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-taginfo-_0028admin-file_0029">taginfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Tags">Tags</a>:</td><td> </td><td valign="top"><a
href="#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-deleting">Tags,
deleting</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-logging">Tags,
logging</a>:</td><td> </td><td valign="top"><a
href="#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-moving">Tags,
moving</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-renaming">Tags,
renaming</a>:</td><td> </td><td valign="top"><a
href="#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-sticky">Tags,
sticky</a>:</td><td> </td><td valign="top"><a href="#Sticky-tags">Sticky
tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tags_002c-verifying">Tags,
verifying</a>:</td><td> </td><td valign="top"><a
href="#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-tc_002c-Trivial-Compiler-_0028example_0029">tc, Trivial Compiler
(example)</a>:</td><td> </td><td valign="top"><a
href="#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Team-of-developers">Team of
developers</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-TEMP_002c-environment-variable">TEMP, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Template-file_002c-in-CVS-directory">Template file, in CVS
directory</a>:</td><td> </td><td valign="top"><a
href="#Working-directory-storage">Working directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Template-for-log-message">Template for log
message</a>:</td><td> </td><td valign="top"><a
href="#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Temporary-directories_002c-and-server">Temporary directories, and
server</a>:</td><td> </td><td valign="top"><a
href="#Server-temporary-directory">Server temporary directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Temporary-files_002c-location-of">Temporary files, location
of</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Third_002dparty-sources">Third-party
sources</a>:</td><td> </td><td valign="top"><a
href="#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Time">Time</a>:</td><td> </td><td valign="top"><a
href="#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Timezone_002c-in-input">Timezone, in
input</a>:</td><td> </td><td valign="top"><a href="#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Timezone_002c-in-output">Timezone, in
output</a>:</td><td> </td><td valign="top"><a href="#log">log</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-TMP_002c-environment-variable">TMP, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-TMPDIR_002c-environment-variable">TMPDIR, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-TMPDIR_002c-overriding">TMPDIR,
overriding</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-TopLevelAdmin_002c-in-CVSROOT_002fconfig">TopLevelAdmin, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Trace">Trace</a>:</td><td> </td><td valign="top"><a
href="#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Traceability">Traceability</a>:</td><td> </td><td
valign="top"><a href="#History-browsing">History browsing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Tracking-sources">Tracking
sources</a>:</td><td> </td><td valign="top"><a
href="#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Transactions_002c-atomic_002c-lack-of">Transactions, atomic, lack
of</a>:</td><td> </td><td valign="top"><a
href="#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Trigger-scripts">Trigger
scripts</a>:</td><td> </td><td valign="top"><a
href="#Trigger-Scripts">Trigger Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Trigger-scripts_002c-security">Trigger scripts,
security</a>:</td><td> </td><td valign="top"><a
href="#Trigger-Script-Security">Trigger Script Security</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Trivial-Compiler-_0028example_0029">Trivial Compiler
(example)</a>:</td><td> </td><td valign="top"><a
href="#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Typical-repository">Typical
repository</a>:</td><td> </td><td valign="top"><a
href="#Repository">Repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Umask_002c-for-repository-files">Umask, for repository
files</a>:</td><td> </td><td valign="top"><a href="#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Undoing-a-change">Undoing a
change</a>:</td><td> </td><td valign="top"><a
href="#Merging-two-revisions">Merging two revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-unedit-_0028subcommand_0029">unedit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Unknown">Unknown</a>:</td><td> </td><td valign="top"><a
href="#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Unreserved-checkouts">Unreserved
checkouts</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Unresolved-Conflict">Unresolved
Conflict</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Up_002dto_002ddate">Up-to-date</a>:</td><td> </td><td
valign="top"><a href="#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-update-_0028subcommand_0029">update
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#update">update</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Update_002c-introduction">Update,
introduction</a>:</td><td> </td><td valign="top"><a
href="#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-update_002c-to-display-file-status">update, to display file
status</a>:</td><td> </td><td valign="top"><a href="#File-status">File
status</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Updating-a-file">Updating a
file</a>:</td><td> </td><td valign="top"><a
href="#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-User-aliases">User
aliases</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-User-variables">User
variables</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-USER_002c-environment-variable">USER, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-USER_002c-internal-variable">USER, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-users-_0028admin-file_0029">users (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-V">V</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-val_002dtags-file_002c-and-read_002donly-access-to-projects">val-tags
file, and read-only access to projects</a>:</td><td> </td><td
valign="top"><a href="#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-val_002dtags-file_002c-forcing-tags-into">val-tags file, forcing
tags into</a>:</td><td> </td><td valign="top"><a
href="#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Variables">Variables</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Vendor">Vendor</a>:</td><td> </td><td valign="top"><a
href="#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Vendor-branch">Vendor
branch</a>:</td><td> </td><td valign="top"><a
href="#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-verifymsg-_0028admin-file_0029"><samp>verifymsg</samp> (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-verifymsg_002c-changing-the-log-message"><samp>verifymsg</samp>,
changing the log message</a>:</td><td> </td><td valign="top"><a
href="#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-verifymsg_002c-changing-the-log-message-1"><samp>verifymsg</samp>,
changing the log message</a>:</td><td> </td><td valign="top"><a
href="#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-version-_0028subcommand_0029">version
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Versions_002c-of-CVS">Versions,
of CVS</a>:</td><td> </td><td valign="top"><a
href="#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Versions_002c-revisions-and-releases">Versions, revisions and
releases</a>:</td><td> </td><td valign="top"><a
href="#Versions-revisions-releases">Versions revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Viewing-differences">Viewing
differences</a>:</td><td> </td><td valign="top"><a
href="#Viewing-differences">Viewing differences</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-VISUAL_002c-environment-variable">VISUAL, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Committing-your-changes">Committing your changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-VISUAL_002c-environment-variable-1">VISUAL, environment
variable</a>:</td><td> </td><td valign="top"><a
href="#Environment-variables">Environment variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-VISUAL_002c-internal-variable">VISUAL, internal
variable</a>:</td><td> </td><td valign="top"><a
href="#Variables">Variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-W">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-watch-add-_0028subcommand_0029">watch add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-watch-off-_0028subcommand_0029">watch off
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-watch-on-_0028subcommand_0029">watch on
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-watch-remove-_0028subcommand_0029">watch remove
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-watchers-_0028subcommand_0029">watchers
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="#Watch-information">Watch information</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Watches">Watches</a>:</td><td> </td><td valign="top"><a
href="#Watches">Watches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-wdiff-_0028import-example_0029">wdiff (import
example)</a>:</td><td> </td><td valign="top"><a href="#First-import">First
import</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Web-pages_002c-maintaining-with-CVS">Web pages, maintaining with
CVS</a>:</td><td> </td><td valign="top"><a
href="#Keeping-a-checked-out-copy">Keeping a checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-What-_0028shell-command_0029">What (shell
command)</a>:</td><td> </td><td valign="top"><a
href="#Using-keywords">Using keywords</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-What-branches-are-good-for">What
branches are good for</a>:</td><td> </td><td valign="top"><a
href="#Branches-motivation">Branches motivation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-What-is-CVS-not_003f">What is
CVS not?</a>:</td><td> </td><td valign="top"><a
href="#What-is-CVS-not_003f">What is CVS not?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-What-is-CVS_003f">What is
CVS?</a>:</td><td> </td><td valign="top"><a href="#What-is-CVS_003f">What
is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-When-to-commit">When to
commit</a>:</td><td> </td><td valign="top"><a href="#When-to-commit">When
to commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Windows_002c-and-permissions">Windows, and
permissions</a>:</td><td> </td><td valign="top"><a
href="#Windows-permissions">Windows permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Work_002dsession_002c-example-of">Work-session, example
of</a>:</td><td> </td><td valign="top"><a href="#A-sample-session">A
sample session</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Working-copy">Working
copy</a>:</td><td> </td><td valign="top"><a
href="#Multiple-developers">Multiple developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Working-copy_002c-removing">Working copy,
removing</a>:</td><td> </td><td valign="top"><a
href="#Cleaning-up">Cleaning up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Wrappers">Wrappers</a>:</td><td> </td><td valign="top"><a
href="#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-writers-_0028admin-file_0029">writers (admin
file)</a>:</td><td> </td><td valign="top"><a
href="#Read_002donly-access">Read-only access</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-X">X</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Ximbiot">Ximbiot</a>:</td><td> </td><td valign="top"><a
href="#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-xinetd_002c-configuring-for-pserver">xinetd, configuring for
pserver</a>:</td><td> </td><td valign="top"><a
href="#Password-authentication-server">Password authentication
server</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-Z">Z</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Zone_002c-time_002c-in-input">Zone, time, in
input</a>:</td><td> </td><td valign="top"><a href="#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Zone_002c-time_002c-in-output">Zone, time, in
output</a>:</td><td> </td><td valign="top"><a href="#log">log</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter"
href="#Index_cp_symbol-1"><b>!</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-2"><b>#</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-3"><b>&</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-4"><b>-</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-5"><b>.</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-6"><b>/</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-7"><b>:</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-8"><b><</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-9"><b>=</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-10"><b>></b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-11"><b>_</b></a>
+
+<br>
+<a class="summary-letter" href="#Index_cp_letter-A"><b>A</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-B"><b>B</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-C"><b>C</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-D"><b>D</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-E"><b>E</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-F"><b>F</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-G"><b>G</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-H"><b>H</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-I"><b>I</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-J"><b>J</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-K"><b>K</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-L"><b>L</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-M"><b>M</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-N"><b>N</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-O"><b>O</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-P"><b>P</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-R"><b>R</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-S"><b>S</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-T"><b>T</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-U"><b>U</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-V"><b>V</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-W"><b>W</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-X"><b>X</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-Z"><b>Z</b></a>
+
+</td></tr></table>
+
+<hr>
+
+
+
+</body>
+</html>
Index: cvs.html.gz
===================================================================
RCS file: cvs.html.gz
diff -N cvs.html.gz
Binary files /dev/null and /tmp/cvs3KAKvN differ
Index: cvs.html_node.tar.gz
===================================================================
RCS file: cvs.html_node.tar.gz
diff -N cvs.html_node.tar.gz
Binary files /dev/null and /tmp/cvs8QsKbO differ
Index: cvs.info.tar.gz
===================================================================
RCS file: cvs.info.tar.gz
diff -N cvs.info.tar.gz
Binary files /dev/null and /tmp/cvsmVelUQ differ
Index: cvs.pdf
===================================================================
RCS file: cvs.pdf
diff -N cvs.pdf
Binary files /dev/null and /tmp/cvs5yHpyR differ
Index: cvs.texi.tar.gz
===================================================================
RCS file: cvs.texi.tar.gz
diff -N cvs.texi.tar.gz
Binary files /dev/null and /tmp/cvsz7IT8P differ
Index: cvs.txt
===================================================================
RCS file: cvs.txt
diff -N cvs.txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ cvs.txt 28 Dec 2015 15:57:44 -0000 1.1
@@ -0,0 +1,10681 @@
+
+1 Overview
+2 The Repository
+3 Starting a project with CVS
+4 Revisions
+5 Branching and merging
+6 Recursive behavior
+7 Adding, removing, and renaming files and directories
+8 History browsing
+9 Handling binary files
+10 Multiple developers
+11 Revision management
+12 Keyword substitution
+13 Tracking third-party sources
+14 How your build system interacts with CVS
+15 Special Files
+Appendix A Guide to CVS commands
+Appendix B Quick reference to CVS commands
+Appendix C Reference manual for Administrative files
+Appendix D All environment variables which affect CVS
+Appendix E Compatibility between CVS Versions
+Appendix F Troubleshooting
+Appendix G Credits
+Appendix H Dealing with bugs in CVS or this manual
+Index
+
+1 Overview
+ 1.1 What is CVS?
+ 1.2 What is CVS not?
+ 1.3 A sample session
+ 1.3.1 Getting the source
+ 1.3.2 Committing your changes
+ 1.3.3 Cleaning up
+ 1.3.4 Viewing differences
+2 The Repository
+ 2.1 Telling CVS where your repository is
+ 2.2 How data is stored in the repository
+ 2.2.1 Where files are stored within the repository
+ 2.2.2 File permissions
+ 2.2.3 File Permission issues specific to Windows
+ 2.2.4 The attic
+ 2.2.5 The CVS directory in the repository
+ 2.2.6 CVS locks in the repository
+ 2.2.7 How files are stored in the CVSROOT directory
+ 2.3 How data is stored in the working directory
+ 2.4 The administrative files
+ 2.4.1 Editing administrative files
+ 2.5 Multiple repositories
+ 2.6 Creating a repository
+ 2.7 Backing up a repository
+ 2.8 Moving a repository
+ 2.9 Remote repositories
+ 2.9.1 Server requirements
+ 2.9.2 Connecting with rsh or ssh
+ 2.9.3 Direct connection with password authentication
+ 2.9.3.1 Setting up the server for password authentication
+ 2.9.3.2 Using the client with password authentication
+ 2.9.3.3 Security considerations with password authentication
+ 2.9.4 Direct connection with GSSAPI
+ 2.9.5 Direct connection with Kerberos
+ 2.9.6 Connecting with fork
+ 2.10 Read-only repository access
+ 2.11 Temporary directories for the server
+3 Starting a project with CVS
+ 3.1 Setting up the files
+ 3.1.1 Creating a directory tree from a number of files
+ 3.1.2 Creating Files From Other Version Control Systems
+ 3.1.3 Creating a directory tree from scratch
+ 3.2 Defining the module
+4 Revisions
+ 4.1 Revision numbers
+ 4.2 Versions, revisions and releases
+ 4.3 Assigning revisions
+ 4.4 Tags-Symbolic revisions
+ 4.5 Specifying what to tag from the working directory
+ 4.6 Specifying what to tag by date or revision
+ 4.7 Deleting, moving, and renaming tags
+ 4.8 Tagging and adding and removing files
+ 4.9 Sticky tags
+5 Branching and merging
+ 5.1 What branches are good for
+ 5.2 Creating a branch
+ 5.3 Accessing branches
+ 5.4 Branches and revisions
+ 5.5 Magic branch numbers
+ 5.6 Merging an entire branch
+ 5.7 Merging from a branch several times
+ 5.8 Merging differences between any two revisions
+ 5.9 Merging can add or remove files
+ 5.10 Merging and keywords
+6 Recursive behavior
+7 Adding, removing, and renaming files and directories
+ 7.1 Adding files to a directory
+ 7.2 Removing files
+ 7.3 Removing directories
+ 7.4 Moving and renaming files
+ 7.4.1 The Normal way to Rename
+ 7.4.2 Moving the history file
+ 7.4.3 Copying the history file
+ 7.5 Moving and renaming directories
+8 History browsing
+ 8.1 Log messages
+ 8.2 The history database
+ 8.3 User-defined logging
+9 Handling binary files
+ 9.1 The issues with binary files
+ 9.2 How to store binary files
+10 Multiple developers
+ 10.1 File status
+ 10.2 Bringing a file up to date
+ 10.3 Conflicts example
+ 10.4 Informing others about commits
+ 10.5 Several developers simultaneously attempting to run CVS
+ 10.6 Mechanisms to track who is editing files
+ 10.6.1 Telling CVS to watch certain files
+ 10.6.2 Telling CVS to notify you
+ 10.6.3 How to edit a file which is being watched
+ 10.6.4 Information about who is watching and editing
+ 10.6.5 Using watches with old versions of CVS
+ 10.7 Choosing between reserved or unreserved checkouts
+11 Revision management
+ 11.1 When to commit?
+12 Keyword substitution
+ 12.1 Keyword List
+ 12.2 Using keywords
+ 12.3 Avoiding substitution
+ 12.4 Substitution modes
+ 12.5 Problems with the $Log$ keyword.
+13 Tracking third-party sources
+ 13.1 Importing for the first time
+ 13.2 Updating with the import command
+ 13.3 Reverting to the latest vendor release
+ 13.4 How to handle binary files with cvs import
+ 13.5 How to handle keyword substitution with cvs import
+ 13.6 Multiple vendor branches
+14 How your build system interacts with CVS
+15 Special Files
+Appendix A Guide to CVS commands
+ A.1 Overall structure of CVS commands
+ A.2 CVS's exit status
+ A.3 Default options and the ~/.cvsrc file
+ A.4 Global options
+ A.5 Common command options
+ A.6 add--Add files and directories to the repository
+ A.6.1 add options
+ A.6.2 add examples
+ A.6.2.1 Adding a directory
+ A.6.2.2 Adding a file
+ A.6.2.3 Undoing a 'remove' command
+ A.7 admin--Administration
+ A.7.1 admin options
+ A.8 annotate--What revision modified each line of a file?
+ A.8.1 annotate options
+ A.8.2 annotate example
+ A.9 checkout--Check out sources for editing
+ A.9.1 checkout options
+ A.9.2 checkout examples
+ A.10 commit--Check files into the repository
+ A.10.1 commit options
+ A.10.2 commit examples
+ A.10.2.1 Committing to a branch
+ A.10.2.2 Creating the branch after editing
+ A.11 diff--Show differences between revisions
+ A.11.1 diff options
+ A.11.1.1 Line group formats
+ A.11.1.2 Line formats
+ A.11.2 diff examples
+ A.12 export--Export sources from CVS, similar to checkout
+ A.12.1 export options
+ A.13 history--Show status of files and users
+ A.13.1 history options
+ A.14 import--Import sources into CVS, using vendor branches
+ A.14.1 import options
+ A.14.2 import output
+ A.14.3 import examples
+ A.15 log--Print out log information for files
+ A.15.1 log options
+ A.15.2 log examples
+ A.16 rdiff--'patch' format diffs between releases
+ A.16.1 rdiff options
+ A.16.2 rdiff examples
+ A.17 release--Indicate that a Module is no longer in use
+ A.17.1 release options
+ A.17.2 release output
+ A.17.3 release examples
+ A.18 remove--Remove files from active use
+ A.18.1 remove options
+ A.18.2 remove examples
+ A.18.2.1 Removing a file
+ A.18.2.2 Removing entire directories
+ A.19 update--Bring work tree in sync with repository
+ A.19.1 update options
+ A.19.2 update output
+Appendix B Quick reference to CVS commands
+Appendix C Reference manual for Administrative files
+ C.1 The modules file
+ C.1.1 Alias modules
+ C.1.2 Regular modules
+ C.1.3 Ampersand modules
+ C.1.4 Excluding directories
+ C.1.5 Module options
+ C.1.6 How the modules file "program options" programs are run
+ C.2 The cvswrappers file
+ C.3 The Trigger Scripts
+ C.3.1 The common syntax
+ C.3.2 Security and the Trigger Scripts
+ C.4 The commit support files
+ C.4.1 Commitinfo
+ C.4.2 Verifying log messages
+ C.4.3 Editinfo
+ C.4.3.1 Editinfo example
+ C.4.4 Loginfo
+ C.4.4.1 Loginfo example
+ C.4.4.2 Keeping a checked out copy
+ C.5 Rcsinfo
+ C.6 Taginfo
+ C.7 Ignoring files via cvsignore
+ C.8 The checkoutlist file
+ C.9 The history file
+ C.10 Expansions in administrative files
+ C.11 The CVSROOT/config configuration file
+Appendix D All environment variables which affect CVS
+Appendix E Compatibility between CVS Versions
+Appendix F Troubleshooting
+ F.1 Partial list of error messages
+ F.2 Trouble making a connection to a CVS server
+ F.3 Other common problems
+Appendix G Credits
+Appendix H Dealing with bugs in CVS or this manual
+Index
+CVS--Concurrent Versions System v1.11.23
+****************************************
+
+This info manual describes how to use and administer CVS version
+1.11.23.
+
+Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+Portions
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Derek R. Price,
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Ximbiot
+ <http://ximbiot.com>,
+ Copyright (C) 1992, 1993, 1999 Signum Support AB,
+ and Copyright (C) others.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided also
+that the entire resulting derived work is distributed under the terms of
+a permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+1 Overview
+**********
+
+This chapter is for people who have never used CVS, and perhaps have
+never used version control software before.
+
+ If you are already familiar with CVS and are just trying to learn a
+particular feature or remember a certain command, you can probably skip
+everything here.
+
+1.1 What is CVS?
+================
+
+CVS is a version control system. Using it, you can record the history
+of your source files.
+
+ For example, bugs sometimes creep in when software is modified, and
+you might not detect the bug until a long time after you make the
+modification. With CVS, you can easily retrieve old versions to see
+exactly which change caused the bug. This can sometimes be a big help.
+
+ You could of course save every version of every file you have ever
+created. This would however waste an enormous amount of disk space.
+CVS stores all the versions of a file in a single file in a clever way
+that only stores the differences between versions.
+
+ CVS also helps you if you are part of a group of people working on
+the same project. It is all too easy to overwrite each others' changes
+unless you are extremely careful. Some editors, like GNU Emacs, try to
+make sure that two people never modify the same file at the same time.
+Unfortunately, if someone is using another editor, that safeguard will
+not work. CVS solves this problem by insulating the different
+developers from each other. Every developer works in his own directory,
+and CVS merges the work when each developer is done.
+
+ CVS started out as a bunch of shell scripts written by Dick Grune,
+posted to the newsgroup 'comp.sources.unix' in the volume 6 release of
+July, 1986. While no actual code from these shell scripts is present in
+the current version of CVS much of the CVS conflict resolution
+algorithms come from them.
+
+ In April, 1989, Brian Berliner designed and coded CVS. Jeff Polk
+later helped Brian with the design of the CVS module and vendor branch
+support.
+
+ You can get CVS in a variety of ways, including free download from
+the Internet. For more information on downloading CVS and other CVS
+topics, see:
+
+ <http://cvs.nongnu.org/>
+
+ There is a mailing list, known as <address@hidden>, devoted to
+CVS. To subscribe or unsubscribe write to
+<address@hidden>. If you prefer a Usenet group, there is a
+one-way mirror (posts to the email list are usually sent to the news
+group, but not vice versa) of <address@hidden> at
+<news:gnu.cvs.help>. The right Usenet group for posts is
+<news:comp.software.config-mgmt> which is for CVS discussions (along
+with other configuration management systems). In the future, it might
+be possible to create a 'comp.software.config-mgmt.cvs', but probably
+only if there is sufficient CVS traffic on
+<news:comp.software.config-mgmt>.
+
+ You can also subscribe to the <address@hidden> mailing list,
+described in more detail in *note BUGS::. To subscribe send mail to
+<address@hidden>. There is a two-way Usenet mirror (posts
+to the Usenet group are usually sent to the email list and vice versa)
+of <address@hidden> named <news:gnu.cvs.bug>.
+
+1.2 What is CVS not?
+====================
+
+CVS can do a lot of things for you, but it does not try to be everything
+for everyone.
+
+CVS is not a build system.
+
+ Though the structure of your repository and modules file interact
+ with your build system (e.g. 'Makefile's), they are essentially
+ independent.
+
+ CVS does not dictate how you build anything. It merely stores
+ files for retrieval in a tree structure you devise.
+
+ CVS does not dictate how to use disk space in the checked out
+ working directories. If you write your 'Makefile's or scripts in
+ every directory so they have to know the relative positions of
+ everything else, you wind up requiring the entire repository to be
+ checked out.
+
+ If you modularize your work, and construct a build system that will
+ share files (via links, mounts, 'VPATH' in 'Makefile's, etc.), you
+ can arrange your disk usage however you like.
+
+ But you have to remember that _any_ such system is a lot of work to
+ construct and maintain. CVS does not address the issues involved.
+
+ Of course, you should place the tools created to support such a
+ build system (scripts, 'Makefile's, etc.) under CVS.
+
+ Figuring out what files need to be rebuilt when something changes
+ is, again, something to be handled outside the scope of CVS. One
+ traditional approach is to use 'make' for building, and use some
+ automated tool for generating the dependencies which 'make' uses.
+
+ See *note Builds::, for more information on doing builds in
+ conjunction with CVS.
+
+CVS is not a substitute for management.
+
+ Your managers and project leaders are expected to talk to you
+ frequently enough to make certain you are aware of schedules, merge
+ points, branch names and release dates. If they don't, CVS can't
+ help.
+
+ CVS is an instrument for making sources dance to your tune. But
+ you are the piper and the composer. No instrument plays itself or
+ writes its own music.
+
+CVS is not a substitute for developer communication.
+
+ When faced with conflicts within a single file, most developers
+ manage to resolve them without too much effort. But a more general
+ definition of "conflict" includes problems too difficult to solve
+ without communication between developers.
+
+ CVS cannot determine when simultaneous changes within a single
+ file, or across a whole collection of files, will logically
+ conflict with one another. Its concept of a "conflict" is purely
+ textual, arising when two changes to the same base file are near
+ enough to spook the merge (i.e., 'diff3') command.
+
+ CVS does not claim to help at all in figuring out non-textual or
+ distributed conflicts in program logic.
+
+ For example: Say you change the arguments to function 'X' defined
+ in file 'A'. At the same time, someone edits file 'B', adding new
+ calls to function 'X' using the old arguments. You are outside the
+ realm of CVS's competence.
+
+ Acquire the habit of reading specs and talking to your peers.
+
+CVS does not have change control
+
+ Change control refers to a number of things. First of all it can
+ mean "bug-tracking", that is being able to keep a database of
+ reported bugs and the status of each one (Is it fixed? In what
+ release? Has the bug submitter agreed that it is fixed?). For
+ interfacing CVS to an external bug-tracking system, see the
+ 'rcsinfo' and 'verifymsg' files (*note Administrative files::).
+
+ Another aspect of change control is keeping track of the fact that
+ changes to several files were in fact changed together as one
+ logical change. If you check in several files in a single 'cvs
+ commit' operation, CVS then forgets that those files were checked
+ in together, and the fact that they have the same log message is
+ the only thing tying them together. Keeping a GNU style
+ 'ChangeLog' can help somewhat.
+
+ Another aspect of change control, in some systems, is the ability
+ to keep track of the status of each change. Some changes have been
+ written by a developer, others have been reviewed by a second
+ developer, and so on. Generally, the way to do this with CVS is to
+ generate a diff (using 'cvs diff' or 'diff') and email it to
+ someone who can then apply it using the 'patch' utility. This is
+ very flexible, but depends on mechanisms outside CVS to make sure
+ nothing falls through the cracks.
+
+CVS is not an automated testing program
+
+ It should be possible to enforce mandatory use of a test suite
+ using the 'commitinfo' file. I haven't heard a lot about projects
+ trying to do that or whether there are subtle gotchas, however.
+
+CVS does not have a built-in process model
+
+ Some systems provide ways to ensure that changes or releases go
+ through various steps, with various approvals as needed.
+ Generally, one can accomplish this with CVS but it might be a
+ little more work. In some cases you'll want to use the
+ 'commitinfo', 'loginfo', 'rcsinfo', or 'verifymsg' files, to
+ require that certain steps be performed before cvs will allow a
+ checkin. Also consider whether features such as branches and tags
+ can be used to perform tasks such as doing work in a development
+ tree and then merging certain changes over to a stable tree only
+ once they have been proven.
+
+1.3 A sample session
+====================
+
+As a way of introducing CVS, we'll go through a typical work-session
+using CVS. The first thing to understand is that CVS stores all files
+in a centralized "repository" (*note Repository::); this section assumes
+that a repository is set up.
+
+ Suppose you are working on a simple compiler. The source consists of
+a handful of C files and a 'Makefile'. The compiler is called 'tc'
+(Trivial Compiler), and the repository is set up so that there is a
+module called 'tc'.
+
+1.3.1 Getting the source
+------------------------
+
+The first thing you must do is to get your own working copy of the
+source for 'tc'. For this, you use the 'checkout' command:
+
+ $ cvs checkout tc
+
+This will create a new directory called 'tc' and populate it with the
+source files.
+
+ $ cd tc
+ $ ls
+ CVS Makefile backend.c driver.c frontend.c parser.c
+
+ The 'CVS' directory is used internally by CVS. Normally, you should
+not modify or remove any of the files in it.
+
+ You start your favorite editor, hack away at 'backend.c', and a
+couple of hours later you have added an optimization pass to the
+compiler. A note to RCS and SCCS users: There is no need to lock the
+files that you want to edit. *Note Multiple developers::, for an
+explanation.
+
+1.3.2 Committing your changes
+-----------------------------
+
+When you have checked that the compiler is still compilable you decide
+to make a new version of 'backend.c'. This will store your new
+'backend.c' in the repository and make it available to anyone else who
+is using that same repository.
+
+ $ cvs commit backend.c
+
+CVS starts an editor, to allow you to enter a log message. You type in
+"Added an optimization pass.", save the temporary file, and exit the
+editor.
+
+ The environment variable '$CVSEDITOR' determines which editor is
+started. If '$CVSEDITOR' is not set, then if the environment variable
+'$EDITOR' is set, it will be used. If both '$CVSEDITOR' and '$EDITOR'
+are not set then there is a default which will vary with your operating
+system, for example 'vi' for unix or 'notepad' for Windows NT/95.
+
+ In addition, CVS checks the '$VISUAL' environment variable. Opinions
+vary on whether this behavior is desirable and whether future releases
+of CVS should check '$VISUAL' or ignore it. You will be OK either way
+if you make sure that '$VISUAL' is either unset or set to the same thing
+as '$EDITOR'.
+
+ When CVS starts the editor, it includes a list of files which are
+modified. For the CVS client, this list is based on comparing the
+modification time of the file against the modification time that the
+file had when it was last gotten or updated. Therefore, if a file's
+modification time has changed but its contents have not, it will show up
+as modified. The simplest way to handle this is simply not to worry
+about it--if you proceed with the commit CVS will detect that the
+contents are not modified and treat it as an unmodified file. The next
+'update' will clue CVS in to the fact that the file is unmodified, and
+it will reset its stored timestamp so that the file will not show up in
+future editor sessions.
+
+ If you want to avoid starting an editor you can specify the log
+message on the command line using the '-m' flag instead, like this:
+
+ $ cvs commit -m "Added an optimization pass" backend.c
+
+1.3.3 Cleaning up
+-----------------
+
+Before you turn to other tasks you decide to remove your working copy of
+tc. One acceptable way to do that is of course
+
+ $ cd ..
+ $ rm -r tc
+
+but a better way is to use the 'release' command (*note release::):
+
+ $ cd ..
+ $ cvs release -d tc
+ M driver.c
+ ? tc
+ You have [1] altered files in this repository.
+ Are you sure you want to release (and delete) directory `tc': n
+ ** `release' aborted by user choice.
+
+ The 'release' command checks that all your modifications have been
+committed. If history logging is enabled it also makes a note in the
+history file. *Note history file::.
+
+ When you use the '-d' flag with 'release', it also removes your
+working copy.
+
+ In the example above, the 'release' command wrote a couple of lines
+of output. '? tc' means that the file 'tc' is unknown to CVS. That is
+nothing to worry about: 'tc' is the executable compiler, and it should
+not be stored in the repository. *Note cvsignore::, for information
+about how to make that warning go away. *Note release output::, for a
+complete explanation of all possible output from 'release'.
+
+ 'M driver.c' is more serious. It means that the file 'driver.c' has
+been modified since it was checked out.
+
+ The 'release' command always finishes by telling you how many
+modified files you have in your working copy of the sources, and then
+asks you for confirmation before deleting any files or making any note
+in the history file.
+
+ You decide to play it safe and answer 'n <RET>' when 'release' asks
+for confirmation.
+
+1.3.4 Viewing differences
+-------------------------
+
+You do not remember modifying 'driver.c', so you want to see what has
+happened to that file.
+
+ $ cd tc
+ $ cvs diff driver.c
+
+ This command runs 'diff' to compare the version of 'driver.c' that
+you checked out with your working copy. When you see the output you
+remember that you added a command line option that enabled the
+optimization pass. You check it in, and release the module.
+
+ $ cvs commit -m "Added an optimization pass" driver.c
+ Checking in driver.c;
+ /usr/local/cvsroot/tc/driver.c,v <-- driver.c
+ new revision: 1.2; previous revision: 1.1
+ done
+ $ cd ..
+ $ cvs release -d tc
+ ? tc
+ You have [0] altered files in this repository.
+ Are you sure you want to release (and delete) directory `tc': y
+
+2 The Repository
+****************
+
+The CVS "repository" stores a complete copy of all the files and
+directories which are under version control.
+
+ Normally, you never access any of the files in the repository
+directly. Instead, you use CVS commands to get your own copy of the
+files into a "working directory", and then work on that copy. When
+you've finished a set of changes, you check (or "commit") them back into
+the repository. The repository then contains the changes which you have
+made, as well as recording exactly what you changed, when you changed
+it, and other such information. Note that the repository is not a
+subdirectory of the working directory, or vice versa; they should be in
+separate locations.
+
+ CVS can access a repository by a variety of means. It might be on
+the local computer, or it might be on a computer across the room or
+across the world. To distinguish various ways to access a repository,
+the repository name can start with an "access method". For example, the
+access method ':local:' means to access a repository directory, so the
+repository ':local:/usr/local/cvsroot' means that the repository is in
+'/usr/local/cvsroot' on the computer running CVS. For information on
+other access methods, see *note Remote repositories::.
+
+ If the access method is omitted, then if the repository starts with
+'/', then ':local:' is assumed. If it does not start with '/' then
+either ':ext:' or ':server:' is assumed. For example, if you have a
+local repository in '/usr/local/cvsroot', you can use
+'/usr/local/cvsroot' instead of ':local:/usr/local/cvsroot'. But if
+(under Windows NT, for example) your local repository is
+'c:\src\cvsroot', then you must specify the access method, as in
+':local:c:/src/cvsroot'.
+
+ The repository is split in two parts. '$CVSROOT/CVSROOT' contains
+administrative files for CVS. The other directories contain the actual
+user-defined modules.
+
+2.1 Telling CVS where your repository is
+========================================
+
+There are several ways to tell CVS where to find the repository. You
+can name the repository on the command line explicitly, with the '-d'
+(for "directory") option:
+
+ cvs -d /usr/local/cvsroot checkout yoyodyne/tc
+
+ Or you can set the '$CVSROOT' environment variable to an absolute
+path to the root of the repository, '/usr/local/cvsroot' in this
+example. To set '$CVSROOT', 'csh' and 'tcsh' users should have this
+line in their '.cshrc' or '.tcshrc' files:
+
+ setenv CVSROOT /usr/local/cvsroot
+
+'sh' and 'bash' users should instead have these lines in their
+'.profile' or '.bashrc':
+
+ CVSROOT=/usr/local/cvsroot
+ export CVSROOT
+
+ A repository specified with '-d' will override the '$CVSROOT'
+environment variable. Once you've checked a working copy out from the
+repository, it will remember where its repository is (the information is
+recorded in the 'CVS/Root' file in the working copy).
+
+ The '-d' option and the 'CVS/Root' file both override the '$CVSROOT'
+environment variable. If '-d' option differs from 'CVS/Root', the
+former is used. Of course, for proper operation they should be two ways
+of referring to the same repository.
+
+2.2 How data is stored in the repository
+========================================
+
+For most purposes it isn't important _how_ CVS stores information in the
+repository. In fact, the format has changed in the past, and is likely
+to change in the future. Since in almost all cases one accesses the
+repository via CVS commands, such changes need not be disruptive.
+
+ However, in some cases it may be necessary to understand how CVS
+stores data in the repository, for example you might need to track down
+CVS locks (*note Concurrency::) or you might need to deal with the file
+permissions appropriate for the repository.
+
+2.2.1 Where files are stored within the repository
+--------------------------------------------------
+
+The overall structure of the repository is a directory tree
+corresponding to the directories in the working directory. For example,
+supposing the repository is in
+
+ /usr/local/cvsroot
+
+here is a possible directory tree (showing only the directories):
+
+ /usr
+ |
+ +--local
+ | |
+ | +--cvsroot
+ | | |
+ | | +--CVSROOT
+ | (administrative files)
+ |
+ +--gnu
+ | |
+ | +--diff
+ | | (source code to GNU diff)
+ | |
+ | +--rcs
+ | | (source code to RCS)
+ | |
+ | +--cvs
+ | (source code to CVS)
+ |
+ +--yoyodyne
+ |
+ +--tc
+ | |
+ | +--man
+ | |
+ | +--testing
+ |
+ +--(other Yoyodyne software)
+
+ With the directories are "history files" for each file under version
+control. The name of the history file is the name of the corresponding
+file with ',v' appended to the end. Here is what the repository for the
+'yoyodyne/tc' directory might look like:
+ $CVSROOT
+ |
+ +--yoyodyne
+ | |
+ | +--tc
+ | | |
+ +--Makefile,v
+ +--backend.c,v
+ +--driver.c,v
+ +--frontend.c,v
+ +--parser.c,v
+ +--man
+ | |
+ | +--tc.1,v
+ |
+ +--testing
+ |
+ +--testpgm.t,v
+ +--test2.t,v
+
+ The history files contain, among other things, enough information to
+recreate any revision of the file, a log of all commit messages and the
+user-name of the person who committed the revision. The history files
+are known as "RCS files", because the first program to store files in
+that format was a version control system known as RCS. For a full
+description of the file format, see the 'man' page 'rcsfile(5)',
+distributed with RCS, or the file 'doc/RCSFILES' in the CVS source
+distribution. This file format has become very common--many systems
+other than CVS or RCS can at least import history files in this format.
+
+ The RCS files used in CVS differ in a few ways from the standard
+format. The biggest difference is magic branches; for more information
+see *note Magic branch numbers::. Also in CVS the valid tag names are a
+subset of what RCS accepts; for CVS's rules see *note Tags::.
+
+2.2.2 File permissions
+----------------------
+
+All ',v' files are created read-only, and you should not change the
+permission of those files. The directories inside the repository should
+be writable by the persons that have permission to modify the files in
+each directory. This normally means that you must create a UNIX group
+(see group(5)) consisting of the persons that are to edit the files in a
+project, and set up the repository so that it is that group that owns
+the directory. (On some systems, you also need to set the
+set-group-ID-on-execution bit on the repository directories (see
+chmod(1)) so that newly-created files and directories get the group-ID
+of the parent directory rather than that of the current process.)
+
+ This means that you can only control access to files on a
+per-directory basis.
+
+ Note that users must also have write access to check out files,
+because CVS needs to create lock files (*note Concurrency::). You can
+use LockDir in CVSROOT/config to put the lock files somewhere other than
+in the repository if you want to allow read-only access to some
+directories (*note config::).
+
+ Also note that users must have write access to the 'CVSROOT/val-tags'
+file. CVS uses it to keep track of what tags are valid tag names (it is
+sometimes updated when tags are used, as well as when they are created).
+
+ Each RCS file will be owned by the user who last checked it in. This
+has little significance; what really matters is who owns the
+directories.
+
+ CVS tries to set up reasonable file permissions for new directories
+that are added inside the tree, but you must fix the permissions
+manually when a new directory should have different permissions than its
+parent directory. If you set the 'CVSUMASK' environment variable, that
+will control the file permissions which CVS uses in creating directories
+and/or files in the repository. 'CVSUMASK' does not affect the file
+permissions in the working directory; such files have the permissions
+which are typical for newly created files, except that sometimes CVS
+creates them read-only (see the sections on watches, *note Setting a
+watch::; -r, *note Global options::; or 'CVSREAD', *note Environment
+variables::).
+
+ Note that using the client/server CVS (*note Remote repositories::),
+there is no good way to set 'CVSUMASK'; the setting on the client
+machine has no effect. If you are connecting with 'rsh', you can set
+'CVSUMASK' in '.bashrc' or '.cshrc', as described in the documentation
+for your operating system. This behavior might change in future
+versions of CVS; do not rely on the setting of 'CVSUMASK' on the client
+having no effect.
+
+ Using pserver, you will generally need stricter permissions on the
+CVSROOT directory and directories above it in the tree; see *note
+Password authentication security::.
+
+ Some operating systems have features which allow a particular program
+to run with the ability to perform operations which the caller of the
+program could not. For example, the set user ID (setuid) or set group
+ID (setgid) features of unix or the installed image feature of VMS. CVS
+was not written to use such features and therefore attempting to install
+CVS in this fashion will provide protection against only accidental
+lapses; anyone who is trying to circumvent the measure will be able to
+do so, and depending on how you have set it up may gain access to more
+than just CVS. You may wish to instead consider pserver. It shares
+some of the same attributes, in terms of possibly providing a false
+sense of security or opening security holes wider than the ones you are
+trying to fix, so read the documentation on pserver security carefully
+if you are considering this option (*note Password authentication
+security::).
+
+2.2.3 File Permission issues specific to Windows
+------------------------------------------------
+
+Some file permission issues are specific to Windows operating systems
+(Windows 95, Windows NT, and presumably future operating systems in this
+family. Some of the following might apply to OS/2 but I'm not sure).
+
+ If you are using local CVS and the repository is on a networked file
+system which is served by the Samba SMB server, some people have
+reported problems with permissions. Enabling WRITE=YES in the samba
+configuration is said to fix/workaround it. Disclaimer: I haven't
+investigated enough to know the implications of enabling that option,
+nor do I know whether there is something which CVS could be doing
+differently in order to avoid the problem. If you find something out,
+please let us know as described in *note BUGS::.
+
+2.2.4 The attic
+---------------
+
+You will notice that sometimes CVS stores an RCS file in the 'Attic'.
+For example, if the CVSROOT is '/usr/local/cvsroot' and we are talking
+about the file 'backend.c' in the directory 'yoyodyne/tc', then the file
+normally would be in
+
+ /usr/local/cvsroot/yoyodyne/tc/backend.c,v
+
+but if it goes in the attic, it would be in
+
+ /usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v
+
+instead. It should not matter from a user point of view whether a file
+is in the attic; CVS keeps track of this and looks in the attic when it
+needs to. But in case you want to know, the rule is that the RCS file
+is stored in the attic if and only if the head revision on the trunk has
+state 'dead'. A 'dead' state means that file has been removed, or never
+added, for that revision. For example, if you add a file on a branch,
+it will have a trunk revision in 'dead' state, and a branch revision in
+a non-'dead' state.
+
+2.2.5 The CVS directory in the repository
+-----------------------------------------
+
+The 'CVS' directory in each repository directory contains information
+such as file attributes (in a file called 'CVS/fileattr'. In the future
+additional files may be added to this directory, so implementations
+should silently ignore additional files.
+
+ This behavior is implemented only by CVS 1.7 and later; for details
+see *note Watches Compatibility::.
+
+ The format of the 'fileattr' file is a series of entries of the
+following form (where '{' and '}' means the text between the braces can
+be repeated zero or more times):
+
+ ENT-TYPE FILENAME <tab> ATTRNAME = ATTRVAL {; ATTRNAME = ATTRVAL}
+<linefeed>
+
+ ENT-TYPE is 'F' for a file, in which case the entry specifies the
+attributes for that file.
+
+ ENT-TYPE is 'D', and FILENAME empty, to specify default attributes to
+be used for newly added files.
+
+ Other ENT-TYPE are reserved for future expansion. CVS 1.9 and older
+will delete them any time it writes file attributes. CVS 1.10 and later
+will preserve them.
+
+ Note that the order of the lines is not significant; a program
+writing the fileattr file may rearrange them at its convenience.
+
+ There is currently no way of quoting tabs or line feeds in the
+filename, '=' in ATTRNAME, ';' in ATTRVAL, etc. Note: some
+implementations also don't handle a NUL character in any of the fields,
+but implementations are encouraged to allow it.
+
+ By convention, ATTRNAME starting with '_' is for an attribute given
+special meaning by CVS; other ATTRNAMEs are for user-defined attributes
+(or will be, once implementations start supporting user-defined
+attributes).
+
+ Built-in attributes:
+
+'_watched'
+ Present means the file is watched and should be checked out
+ read-only.
+
+'_watchers'
+ Users with watches for this file. Value is WATCHER > TYPE { ,
+ WATCHER > TYPE } where WATCHER is a username, and TYPE is zero or
+ more of edit,unedit,commit separated by '+' (that is, nothing if
+ none; there is no "none" or "all" keyword).
+
+'_editors'
+ Users editing this file. Value is EDITOR > VAL { , EDITOR > VAL }
+ where EDITOR is a username, and VAL is TIME+HOSTNAME+PATHNAME,
+ where TIME is when the 'cvs edit' command (or equivalent) happened,
+ and HOSTNAME and PATHNAME are for the working directory.
+
+ Example:
+
+ Ffile1 _watched=;_watchers=joe>edit,mary>commit
+ Ffile2 _watched=;_editors=sue>8 Jan 1975+workstn1+/home/sue/cvs
+ D _watched=
+
+means that the file 'file1' should be checked out read-only.
+Furthermore, joe is watching for edits and mary is watching for commits.
+The file 'file2' should be checked out read-only; sue started editing it
+on 8 Jan 1975 in the directory '/home/sue/cvs' on the machine
+'workstn1'. Future files which are added should be checked out
+read-only. To represent this example here, we have shown a space after
+'D', 'Ffile1', and 'Ffile2', but in fact there must be a single tab
+character there and no spaces.
+
+2.2.6 CVS locks in the repository
+---------------------------------
+
+For an introduction to CVS locks focusing on user-visible behavior, see
+*note Concurrency::. The following section is aimed at people who are
+writing tools which want to access a CVS repository without interfering
+with other tools accessing the same repository. If you find yourself
+confused by concepts described here, like "read lock", "write lock", and
+"deadlock", you might consult the literature on operating systems or
+databases.
+
+ Any file in the repository with a name starting with '#cvs.rfl.' is a
+read lock. Any file in the repository with a name starting with
+'#cvs.wfl' is a write lock. Old versions of CVS (before CVS 1.5) also
+created files with names starting with '#cvs.tfl', but they are not
+discussed here. The directory '#cvs.lock' serves as a master lock.
+That is, one must obtain this lock first before creating any of the
+other locks.
+
+ To obtain a read lock, first create the '#cvs.lock' directory. This
+operation must be atomic (which should be true for creating a directory
+under most operating systems). If it fails because the directory
+already existed, wait for a while and try again. After obtaining the
+'#cvs.lock' lock, create a file whose name is '#cvs.rfl.' followed by
+information of your choice (for example, hostname and process
+identification number). Then remove the '#cvs.lock' directory to
+release the master lock. Then proceed with reading the repository.
+When you are done, remove the '#cvs.rfl' file to release the read lock.
+
+ To obtain a write lock, first create the '#cvs.lock' directory, as
+with read locks. Then check that there are no files whose names start
+with '#cvs.rfl.'. If there are, remove '#cvs.lock', wait for a while,
+and try again. If there are no readers, then create a file whose name
+is '#cvs.wfl' followed by information of your choice (for example,
+hostname and process identification number). Hang on to the '#cvs.lock'
+lock. Proceed with writing the repository. When you are done, first
+remove the '#cvs.wfl' file and then the '#cvs.lock' directory. Note
+that unlike the '#cvs.rfl' file, the '#cvs.wfl' file is just
+informational; it has no effect on the locking operation beyond what is
+provided by holding on to the '#cvs.lock' lock itself.
+
+ Note that each lock (write lock or read lock) only locks a single
+directory in the repository, including 'Attic' and 'CVS' but not
+including subdirectories which represent other directories under version
+control. To lock an entire tree, you need to lock each directory (note
+that if you fail to obtain any lock you need, you must release the whole
+tree before waiting and trying again, to avoid deadlocks).
+
+ Note also that CVS expects write locks to control access to
+individual 'foo,v' files. RCS has a scheme where the ',foo,' file
+serves as a lock, but CVS does not implement it and so taking out a CVS
+write lock is recommended. See the comments at rcs_internal_lockfile in
+the CVS source code for further discussion/rationale.
+
+2.2.7 How files are stored in the CVSROOT directory
+---------------------------------------------------
+
+The '$CVSROOT/CVSROOT' directory contains the various administrative
+files. In some ways this directory is just like any other directory in
+the repository; it contains RCS files whose names end in ',v', and many
+of the CVS commands operate on it the same way. However, there are a
+few differences.
+
+ For each administrative file, in addition to the RCS file, there is
+also a checked out copy of the file. For example, there is an RCS file
+'loginfo,v' and a file 'loginfo' which contains the latest revision
+contained in 'loginfo,v'. When you check in an administrative file, CVS
+should print
+
+ cvs commit: Rebuilding administrative file database
+
+and update the checked out copy in '$CVSROOT/CVSROOT'. If it does not,
+there is something wrong (*note BUGS::). To add your own files to the
+files to be updated in this fashion, you can add them to the
+'checkoutlist' administrative file (*note checkoutlist::).
+
+ By default, the 'modules' file behaves as described above. If the
+modules file is very large, storing it as a flat text file may make
+looking up modules slow (I'm not sure whether this is as much of a
+concern now as when CVS first evolved this feature; I haven't seen
+benchmarks). Therefore, by making appropriate edits to the CVS source
+code one can store the modules file in a database which implements the
+'ndbm' interface, such as Berkeley db or GDBM. If this option is in use,
+then the modules database will be stored in the files 'modules.db',
+'modules.pag', and/or 'modules.dir'.
+
+ For information on the meaning of the various administrative files,
+see *note Administrative files::.
+
+2.3 How data is stored in the working directory
+===============================================
+
+While we are discussing CVS internals which may become visible from time
+to time, we might as well talk about what CVS puts in the 'CVS'
+directories in the working directories. As with the repository, CVS
+handles this information and one can usually access it via CVS commands.
+But in some cases it may be useful to look at it, and other programs,
+such as the 'jCVS' graphical user interface or the 'VC' package for
+emacs, may need to look at it. Such programs should follow the
+recommendations in this section if they hope to be able to work with
+other programs which use those files, including future versions of the
+programs just mentioned and the command-line CVS client.
+
+ The 'CVS' directory contains several files. Programs which are
+reading this directory should silently ignore files which are in the
+directory but which are not documented here, to allow for future
+expansion.
+
+ The files are stored according to the text file convention for the
+system in question. This means that working directories are not
+portable between systems with differing conventions for storing text
+files. This is intentional, on the theory that the files being managed
+by CVS probably will not be portable between such systems either.
+
+'Root'
+ This file contains the current CVS root, as described in *note
+ Specifying a repository::.
+
+'Repository'
+ This file contains the directory within the repository which the
+ current directory corresponds with. It can be either an absolute
+ pathname or a relative pathname; CVS has had the ability to read
+ either format since at least version 1.3 or so. The relative
+ pathname is relative to the root, and is the more sensible
+ approach, but the absolute pathname is quite common and
+ implementations should accept either. For example, after the
+ command
+
+ cvs -d :local:/usr/local/cvsroot checkout yoyodyne/tc
+
+ 'Root' will contain
+
+ :local:/usr/local/cvsroot
+
+ and 'Repository' will contain either
+
+ /usr/local/cvsroot/yoyodyne/tc
+
+ or
+
+ yoyodyne/tc
+
+ If the particular working directory does not correspond to a
+ directory in the repository, then 'Repository' should contain
+ 'CVSROOT/Emptydir'.
+
+'Entries'
+ This file lists the files and directories in the working directory.
+ The first character of each line indicates what sort of line it is.
+ If the character is unrecognized, programs reading the file should
+ silently skip that line, to allow for future expansion.
+
+ If the first character is '/', then the format is:
+
+ /NAME/REVISION/TIMESTAMP[+CONFLICT]/OPTIONS/TAGDATE
+
+ where '[' and ']' are not part of the entry, but instead indicate
+ that the '+' and conflict marker are optional. NAME is the name of
+ the file within the directory. REVISION is the revision that the
+ file in the working derives from, or '0' for an added file, or '-'
+ followed by a revision for a removed file. TIMESTAMP is the
+ timestamp of the file at the time that CVS created it; if the
+ timestamp differs with the actual modification time of the file it
+ means the file has been modified. It is stored in the format used
+ by the ISO C asctime() function (for example, 'Sun Apr 7 01:29:26
+ 1996'). One may write a string which is not in that format, for
+ example, 'Result of merge', to indicate that the file should always
+ be considered to be modified. This is not a special case; to see
+ whether a file is modified a program should take the timestamp of
+ the file and simply do a string compare with TIMESTAMP. If there
+ was a conflict, CONFLICT can be set to the modification time of the
+ file after the file has been written with conflict markers (*note
+ Conflicts example::). Thus if CONFLICT is subsequently the same as
+ the actual modification time of the file it means that the user has
+ obviously not resolved the conflict. OPTIONS contains sticky
+ options (for example '-kb' for a binary file). TAGDATE contains
+ 'T' followed by a tag name, or 'D' for a date, followed by a sticky
+ tag or date. Note that if TIMESTAMP contains a pair of timestamps
+ separated by a space, rather than a single timestamp, you are
+ dealing with a version of CVS earlier than CVS 1.5 (not documented
+ here).
+
+ The timezone on the timestamp in CVS/Entries (local or universal)
+ should be the same as the operating system stores for the timestamp
+ of the file itself. For example, on Unix the file's timestamp is
+ in universal time (UT), so the timestamp in CVS/Entries should be
+ too. On VMS, the file's timestamp is in local time, so CVS on VMS
+ should use local time. This rule is so that files do not appear to
+ be modified merely because the timezone changed (for example, to or
+ from summer time).
+
+ If the first character of a line in 'Entries' is 'D', then it
+ indicates a subdirectory. 'D' on a line all by itself indicates
+ that the program which wrote the 'Entries' file does record
+ subdirectories (therefore, if there is such a line and no other
+ lines beginning with 'D', one knows there are no subdirectories).
+ Otherwise, the line looks like:
+
+ D/NAME/FILLER1/FILLER2/FILLER3/FILLER4
+
+ where NAME is the name of the subdirectory, and all the FILLER
+ fields should be silently ignored, for future expansion. Programs
+ which modify 'Entries' files should preserve these fields.
+
+ The lines in the 'Entries' file can be in any order.
+
+'Entries.Log'
+ This file does not record any information beyond that in 'Entries',
+ but it does provide a way to update the information without having
+ to rewrite the entire 'Entries' file, including the ability to
+ preserve the information even if the program writing 'Entries' and
+ 'Entries.Log' abruptly aborts. Programs which are reading the
+ 'Entries' file should also check for 'Entries.Log'. If the latter
+ exists, they should read 'Entries' and then apply the changes
+ mentioned in 'Entries.Log'. After applying the changes, the
+ recommended practice is to rewrite 'Entries' and then delete
+ 'Entries.Log'. The format of a line in 'Entries.Log' is a single
+ character command followed by a space followed by a line in the
+ format specified for a line in 'Entries'. The single character
+ command is 'A' to indicate that the entry is being added, 'R' to
+ indicate that the entry is being removed, or any other character to
+ indicate that the entire line in 'Entries.Log' should be silently
+ ignored (for future expansion). If the second character of the
+ line in 'Entries.Log' is not a space, then it was written by an
+ older version of CVS (not documented here).
+
+ Programs which are writing rather than reading can safely ignore
+ 'Entries.Log' if they so choose.
+
+'Entries.Backup'
+ This is a temporary file. Recommended usage is to write a new
+ entries file to 'Entries.Backup', and then to rename it
+ (atomically, where possible) to 'Entries'.
+
+'Entries.Static'
+ The only relevant thing about this file is whether it exists or
+ not. If it exists, then it means that only part of a directory was
+ gotten and CVS will not create additional files in that directory.
+ To clear it, use the 'update' command with the '-d' option, which
+ will get the additional files and remove 'Entries.Static'.
+
+'Tag'
+ This file contains per-directory sticky tags or dates. The first
+ character is 'T' for a branch tag, 'N' for a non-branch tag, or 'D'
+ for a date, or another character to mean the file should be
+ silently ignored, for future expansion. This character is followed
+ by the tag or date. Note that per-directory sticky tags or dates
+ are used for things like applying to files which are newly added;
+ they might not be the same as the sticky tags or dates on
+ individual files. For general information on sticky tags and
+ dates, see *note Sticky tags::.
+
+'Notify'
+ This file stores notifications (for example, for 'edit' or
+ 'unedit') which have not yet been sent to the server. Its format
+ is not yet documented here.
+
+'Notify.tmp'
+ This file is to 'Notify' as 'Entries.Backup' is to 'Entries'. That
+ is, to write 'Notify', first write the new contents to 'Notify.tmp'
+ and then (atomically where possible), rename it to 'Notify'.
+
+'Base'
+ If watches are in use, then an 'edit' command stores the original
+ copy of the file in the 'Base' directory. This allows the 'unedit'
+ command to operate even if it is unable to communicate with the
+ server.
+
+'Baserev'
+ The file lists the revision for each of the files in the 'Base'
+ directory. The format is:
+
+ BNAME/REV/EXPANSION
+
+ where EXPANSION should be ignored, to allow for future expansion.
+
+'Baserev.tmp'
+ This file is to 'Baserev' as 'Entries.Backup' is to 'Entries'.
+ That is, to write 'Baserev', first write the new contents to
+ 'Baserev.tmp' and then (atomically where possible), rename it to
+ 'Baserev'.
+
+'Template'
+ This file contains the template specified by the 'rcsinfo' file
+ (*note rcsinfo::). It is only used by the client; the
+ non-client/server CVS consults 'rcsinfo' directly.
+
+2.4 The administrative files
+============================
+
+The directory '$CVSROOT/CVSROOT' contains some "administrative files".
+*Note Administrative files::, for a complete description. You can use
+CVS without any of these files, but some commands work better when at
+least the 'modules' file is properly set up.
+
+ The most important of these files is the 'modules' file. It defines
+all modules in the repository. This is a sample 'modules' file.
+
+ CVSROOT CVSROOT
+ modules CVSROOT modules
+ cvs gnu/cvs
+ rcs gnu/rcs
+ diff gnu/diff
+ tc yoyodyne/tc
+
+ The 'modules' file is line oriented. In its simplest form each line
+contains the name of the module, whitespace, and the directory where the
+module resides. The directory is a path relative to '$CVSROOT'. The
+last four lines in the example above are examples of such lines.
+
+ The line that defines the module called 'modules' uses features that
+are not explained here. *Note modules::, for a full explanation of all
+the available features.
+
+2.4.1 Editing administrative files
+----------------------------------
+
+You edit the administrative files in the same way that you would edit
+any other module. Use 'cvs checkout CVSROOT' to get a working copy,
+edit it, and commit your changes in the normal way.
+
+ It is possible to commit an erroneous administrative file. You can
+often fix the error and check in a new revision, but sometimes a
+particularly bad error in the administrative file makes it impossible to
+commit new revisions. If and when this happens, you can correct the
+problem by temporarily copying a corrected administrative file directly
+into the '$CVSROOT/CVSROOT' repository directory, then committing the
+same correction via a checkout of the 'CVSROOT' module. It is important
+that the correction also be made via the checked out copy, or the next
+checkout and commit to the <code>CVSROOT</code> module will overwrite
+the correction that was copied directly into the repository, possibly
+breaking things in such a way as to prevent commits again.
+
+2.5 Multiple repositories
+=========================
+
+In some situations it is a good idea to have more than one repository,
+for instance if you have two development groups that work on separate
+projects without sharing any code. All you have to do to have several
+repositories is to specify the appropriate repository, using the
+'CVSROOT' environment variable, the '-d' option to CVS, or (once you
+have checked out a working directory) by simply allowing CVS to use the
+repository that was used to check out the working directory (*note
+Specifying a repository::).
+
+ The big advantage of having multiple repositories is that they can
+reside on different servers. With CVS version 1.10, a single command
+cannot recurse into directories from different repositories. With
+development versions of CVS, you can check out code from multiple
+servers into your working directory. CVS will recurse and handle all
+the details of making connections to as many server machines as
+necessary to perform the requested command. Here is an example of how
+to set up a working directory:
+
+ cvs -d server1:/cvs co dir1
+ cd dir1
+ cvs -d server2:/root co sdir
+ cvs update
+
+ The 'cvs co' commands set up the working directory, and then the 'cvs
+update' command will contact server2, to update the dir1/sdir
+subdirectory, and server1, to update everything else.
+
+2.6 Creating a repository
+=========================
+
+This section describes how to set up a CVS repository for any sort of
+access method. After completing the setup described in this section,
+you should be able to access your CVS repository immediately via the
+local access method and several remote access methods. For more
+information on setting up remote access to the repository you create in
+this section, please read the section on *Note Remote repositories::.
+
+ To set up a CVS repository, first choose the machine and disk on
+which you want to store the revision history of the source files. CPU
+and memory requirements are modest, so most machines should be adequate.
+For details see *note Server requirements::.
+
+ To estimate disk space requirements, if you are importing RCS files
+from another system, the size of those files is the approximate initial
+size of your repository, or if you are starting without any version
+history, a rule of thumb is to allow for the server approximately three
+times the size of the code to be under CVS for the repository (you will
+eventually outgrow this, but not for a while). On the machines on which
+the developers will be working, you'll want disk space for approximately
+one working directory for each developer (either the entire tree or a
+portion of it, depending on what each developer uses).
+
+ The repository should be accessible (directly or via a networked file
+system) from all machines which want to use CVS in server or local mode;
+the client machines need not have any access to it other than via the
+CVS protocol. It is not possible to use CVS to read from a repository
+which one only has read access to; CVS needs to be able to create lock
+files (*note Concurrency::).
+
+ To create a repository, run the 'cvs init' command. It will set up
+an empty repository in the CVS root specified in the usual way (*note
+Repository::). For example,
+
+ cvs -d /usr/local/cvsroot init
+
+ 'cvs init' is careful to never overwrite any existing files in the
+repository, so no harm is done if you run 'cvs init' on an already
+set-up repository.
+
+ 'cvs init' will enable history logging; if you don't want that,
+remove the history file after running 'cvs init'. *Note history file::.
+
+2.7 Backing up a repository
+===========================
+
+There is nothing particularly magical about the files in the repository;
+for the most part it is possible to back them up just like any other
+files. However, there are a few issues to consider.
+
+ The first is that to be paranoid, one should either not use CVS
+during the backup, or have the backup program lock CVS while doing the
+backup. To not use CVS, you might forbid logins to machines which can
+access the repository, turn off your CVS server, or similar mechanisms.
+The details would depend on your operating system and how you have CVS
+set up. To lock CVS, you would create '#cvs.rfl' locks in each
+repository directory. See *note Concurrency::, for more on CVS locks.
+Having said all this, if you just back up without any of these
+precautions, the results are unlikely to be particularly dire.
+Restoring from backup, the repository might be in an inconsistent state,
+but this would not be particularly hard to fix manually.
+
+ When you restore a repository from backup, assuming that changes in
+the repository were made after the time of the backup, working
+directories which were not affected by the failure may refer to
+revisions which no longer exist in the repository. Trying to run CVS in
+such directories will typically produce an error message. One way to
+get those changes back into the repository is as follows:
+
+ * Get a new working directory.
+
+ * Copy the files from the working directory from before the failure
+ over to the new working directory (do not copy the contents of the
+ 'CVS' directories, of course).
+
+ * Working in the new working directory, use commands such as 'cvs
+ update' and 'cvs diff' to figure out what has changed, and then
+ when you are ready, commit the changes into the repository.
+
+2.8 Moving a repository
+=======================
+
+Just as backing up the files in the repository is pretty much like
+backing up any other files, if you need to move a repository from one
+place to another it is also pretty much like just moving any other
+collection of files.
+
+ The main thing to consider is that working directories point to the
+repository. The simplest way to deal with a moved repository is to just
+get a fresh working directory after the move. Of course, you'll want to
+make sure that the old working directory had been checked in before the
+move, or you figured out some other way to make sure that you don't lose
+any changes. If you really do want to reuse the existing working
+directory, it should be possible with manual surgery on the
+'CVS/Repository' files. You can see *note Working directory storage::,
+for information on the 'CVS/Repository' and 'CVS/Root' files, but unless
+you are sure you want to bother, it probably isn't worth it.
+
+2.9 Remote repositories
+=======================
+
+Your working copy of the sources can be on a different machine than the
+repository. Using CVS in this manner is known as "client/server"
+operation. You run CVS on a machine which can mount your working
+directory, known as the "client", and tell it to communicate to a
+machine which can mount the repository, known as the "server".
+Generally, using a remote repository is just like using a local one,
+except that the format of the repository name is:
+
+ [:METHOD:][[USER][:address@hidden:[PORT]]/path/to/repository
+
+ Specifying a password in the repository name is not recommended
+during checkout, since this will cause CVS to store a cleartext copy of
+the password in each created directory. 'cvs login' first instead
+(*note Password authentication client::).
+
+ The details of exactly what needs to be set up depend on how you are
+connecting to the server.
+
+ If METHOD is not specified, and the repository name contains ':',
+then the default is 'ext' or 'server', depending on your platform; both
+are described in *note Connecting via rsh::.
+
+2.9.1 Server requirements
+-------------------------
+
+The quick answer to what sort of machine is suitable as a server is that
+requirements are modest--a server with 32M of memory or even less can
+handle a fairly large source tree with a fair amount of activity.
+
+ The real answer, of course, is more complicated. Estimating the
+known areas of large memory consumption should be sufficient to estimate
+memory requirements. There are two such areas documented here; other
+memory consumption should be small by comparison (if you find that is
+not the case, let us know, as described in *note BUGS::, so we can
+update this documentation).
+
+ The first area of big memory consumption is large checkouts, when
+using the CVS server. The server consists of two processes for each
+client that it is serving. Memory consumption on the child process
+should remain fairly small. Memory consumption on the parent process,
+particularly if the network connection to the client is slow, can be
+expected to grow to slightly more than the size of the sources in a
+single directory, or two megabytes, whichever is larger.
+
+ Multiplying the size of each CVS server by the number of servers
+which you expect to have active at one time should give an idea of
+memory requirements for the server. For the most part, the memory
+consumed by the parent process probably can be swap space rather than
+physical memory.
+
+ The second area of large memory consumption is 'diff', when checking
+in large files. This is required even for binary files. The rule of
+thumb is to allow about ten times the size of the largest file you will
+want to check in, although five times may be adequate. For example, if
+you want to check in a file which is 10 megabytes, you should have 100
+megabytes of memory on the machine doing the checkin (the server machine
+for client/server, or the machine running CVS for non-client/server).
+This can be swap space rather than physical memory. Because the memory
+is only required briefly, there is no particular need to allow memory
+for more than one such checkin at a time.
+
+ Resource consumption for the client is even more modest--any machine
+with enough capacity to run the operating system in question should have
+little trouble.
+
+ For information on disk space requirements, see *note Creating a
+repository::.
+
+2.9.2 Connecting with rsh or ssh
+--------------------------------
+
+CVS may use the 'ssh' protocol to perform these operations, so the
+remote user host needs to have a either an agent like 'ssh-agent' to
+hold credentials or a '.shosts' file which grants access to the local
+user. Note that the program that CVS uses for this purpose may be
+specified using the '--with-ssh' flag to configure.
+
+ CVS uses the 'rsh' protocol to perform these operations, so the
+remote user host needs to have a '.rhosts' file which grants access to
+the local user. Note that the program that CVS uses for this purpose
+may be specified using the '--with-rsh' flag to configure.
+
+ For example, suppose you are the user 'mozart' on the local machine
+'toe.example.com', and the server machine is 'faun.example.org'. On
+faun, put the following line into the file '.rhosts' in 'bach''s home
+directory:
+
+ toe.example.com mozart
+
+Then test that 'rsh' is working with
+
+ rsh -l bach faun.example.org 'echo $PATH'
+
+To test that 'ssh' is working use
+
+ ssh -l bach faun.example.org 'echo $PATH'
+
+ Next you have to make sure that 'rsh' will be able to find the
+server. Make sure that the path which 'rsh' printed in the above
+example includes the directory containing a program named 'cvs' which is
+the server. You need to set the path in '.bashrc', '.cshrc', etc., not
+'.login' or '.profile'. Alternately, you can set the environment
+variable 'CVS_SERVER' on the client machine to the filename of the
+server you want to use, for example '/usr/local/bin/cvs-1.6'.
+
+ There is no need to edit 'inetd.conf' or start a CVS server daemon.
+
+ There are three access methods that you use in 'CVSROOT' for rsh or
+ssh. ':server:' specifies an internal rsh client, which is supported
+only by some CVS ports. ':extssh:' specifies an external ssh program.
+By default this is 'ssh' (unless otherwise specified by the '--with-ssh'
+flag to configure) but you may set the 'CVS_SSH' environment variable to
+invoke another program or wrapper script. ':ext:' specifies an external
+rsh program. By default this is 'rsh' (unless otherwise specified by
+the '--with-rsh' flag to configure) but you may set the 'CVS_RSH'
+environment variable to invoke another program which can access the
+remote server (for example, 'remsh' on HP-UX 9 because 'rsh' is
+something different). It must be a program which can transmit data to
+and from the server without modifying it; for example the Windows NT
+'rsh' is not suitable since it by default translates between CRLF and
+LF. The OS/2 CVS port has a hack to pass '-b' to 'rsh' to get around
+this, but since this could potentially cause problems for programs other
+than the standard 'rsh', it may change in the future. If you set
+'CVS_RSH' to 'SSH' or some other rsh replacement, the instructions in
+the rest of this section concerning '.rhosts' and so on are likely to be
+inapplicable; consult the documentation for your rsh replacement.
+
+ Continuing our example, supposing you want to access the module 'foo'
+in the repository '/usr/local/cvsroot/', on machine 'faun.example.org',
+you are ready to go:
+
+ cvs -d :ext:address@hidden:/usr/local/cvsroot checkout foo
+
+(The 'bach@' can be omitted if the username is the same on both the
+local and remote hosts.)
+
+2.9.3 Direct connection with password authentication
+----------------------------------------------------
+
+The CVS client can also connect to the server using a password protocol.
+This is particularly useful if using 'rsh' is not feasible (for example,
+the server is behind a firewall), and Kerberos also is not available.
+
+ To use this method, it is necessary to make some adjustments on both
+the server and client sides.
+
+2.9.3.1 Setting up the server for password authentication
+.........................................................
+
+First of all, you probably want to tighten the permissions on the
+'$CVSROOT' and '$CVSROOT/CVSROOT' directories. See *note Password
+authentication security::, for more details.
+
+ On the server side, the file '/etc/inetd.conf' needs to be edited so
+'inetd' knows to run the command 'cvs pserver' when it receives a
+connection on the right port. By default, the port number is 2401; it
+would be different if your client were compiled with 'CVS_AUTH_PORT'
+defined to something else, though. This can also be specified in the
+CVSROOT variable (*note Remote repositories::) or overridden with the
+CVS_CLIENT_PORT environment variable (*note Environment variables::).
+
+ If your 'inetd' allows raw port numbers in '/etc/inetd.conf', then
+the following (all on a single line in 'inetd.conf') should be
+sufficient:
+
+ 2401 stream tcp nowait root /usr/local/bin/cvs
+ cvs -f --allow-root=/usr/cvsroot pserver
+
+(You could also use the '-T' option to specify a temporary directory.)
+
+ The '--allow-root' option specifies the allowable CVSROOT directory.
+Clients which attempt to use a different CVSROOT directory will not be
+allowed to connect. If there is more than one CVSROOT directory which
+you want to allow, repeat the option. Unfortunately, many versions of
+'inetd' have very small limits on the number of arguments and/or the
+total length of the command. The usual solution to this problem is to
+have 'inetd' run a shell script which then invokes CVS with the
+necessary arguments:
+
+ #! /bin/sh
+ exec /usr/local/bin/cvs -f \
+ --allow-root=/repo1 \
+ --allow-root=/repo2 \
+ ...
+ --allow-root=/repoN \
+ pserver
+
+ If your 'inetd' wants a symbolic service name instead of a raw port
+number, then put this in '/etc/services':
+
+ cvspserver 2401/tcp
+
+and put 'cvspserver' instead of '2401' in 'inetd.conf'.
+
+ If your system uses 'xinetd' instead of 'inetd', the procedure is
+slightly different. Create a file called '/etc/xinetd.d/cvspserver'
+containing the following:
+
+ service cvspserver
+ {
+ port = 2401
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ user = root
+ passenv = PATH
+ server = /usr/local/bin/cvs
+ server_args = -f --allow-root=/usr/cvsroot pserver
+ }
+
+(If 'cvspserver' is defined in '/etc/services', you can omit the 'port'
+line.)
+
+ Once the above is taken care of, restart your 'inetd', or do whatever
+is necessary to force it to reread its initialization files.
+
+ If you are having trouble setting this up, see *note Connection::.
+
+ Because the client stores and transmits passwords in cleartext
+(almost--see *note Password authentication security::, for details), a
+separate CVS password file is generally used, so people don't compromise
+their regular passwords when they access the repository. This file is
+'$CVSROOT/CVSROOT/passwd' (*note Intro administrative files::). It uses
+a colon-separated format, similar to '/etc/passwd' on Unix systems,
+except that it has fewer fields: CVS username, optional password, and an
+optional system username for CVS to run as if authentication succeeds.
+Here is an example 'passwd' file with five entries:
+
+ anonymous:
+ bach:ULtgRLXo7NRxs
+ spwang:1sOp854gDF3DY
+ melissa:tGX1fS8sun6rY:pubcvs
+ qproj:XR4EZcEs0szik:pubcvs
+
+(The passwords are encrypted according to the standard Unix 'crypt()'
+function, so it is possible to paste in passwords directly from regular
+Unix '/etc/passwd' files.)
+
+ The first line in the example will grant access to any CVS client
+attempting to authenticate as user 'anonymous', no matter what password
+they use, including an empty password. (This is typical for sites
+granting anonymous read-only access; for information on how to do the
+"read-only" part, see *note Read-only access::.)
+
+ The second and third lines will grant access to 'bach' and 'spwang'
+if they supply their respective plaintext passwords.
+
+ The fourth line will grant access to 'melissa', if she supplies the
+correct password, but her CVS operations will actually run on the server
+side under the system user 'pubcvs'. Thus, there need not be any system
+user named 'melissa', but there _must_ be one named 'pubcvs'.
+
+ The fifth line shows that system user identities can be shared: any
+client who successfully authenticates as 'qproj' will actually run as
+'pubcvs', just as 'melissa' does. That way you could create a single,
+shared system user for each project in your repository, and give each
+developer their own line in the '$CVSROOT/CVSROOT/passwd' file. The CVS
+username on each line would be different, but the system username would
+be the same. The reason to have different CVS usernames is that CVS
+will log their actions under those names: when 'melissa' commits a
+change to a project, the checkin is recorded in the project's history
+under the name 'melissa', not 'pubcvs'. And the reason to have them
+share a system username is so that you can arrange permissions in the
+relevant area of the repository such that only that account has
+write-permission there.
+
+ If the system-user field is present, all password-authenticated CVS
+commands run as that user; if no system user is specified, CVS simply
+takes the CVS username as the system username and runs commands as that
+user. In either case, if there is no such user on the system, then the
+CVS operation will fail (regardless of whether the client supplied a
+valid password).
+
+ The password and system-user fields can both be omitted (and if the
+system-user field is omitted, then also omit the colon that would have
+separated it from the encrypted password). For example, this would be a
+valid '$CVSROOT/CVSROOT/passwd' file:
+
+ anonymous::pubcvs
+ fish:rKa5jzULzmhOo:kfogel
+ sussman:1sOp854gDF3DY
+
+When the password field is omitted or empty, then the client's
+authentication attempt will succeed with any password, including the
+empty string. However, the colon after the CVS username is always
+necessary, even if the password is empty.
+
+ CVS can also fall back to use system authentication. When
+authenticating a password, the server first checks for the user in the
+'$CVSROOT/CVSROOT/passwd' file. If it finds the user, it will use that
+entry for authentication as described above. But if it does not find
+the user, or if the CVS 'passwd' file does not exist, then the server
+can try to authenticate the username and password using the operating
+system's user-lookup routines (this "fallback" behavior can be disabled
+by setting 'SystemAuth=no' in the CVS 'config' file, *note config::).
+Be aware, however, that falling back to system authentication might be a
+security risk: CVS operations would then be authenticated with that
+user's regular login password, and the password flies across the network
+in plaintext. See *note Password authentication security:: for more on
+this.
+
+ Right now, the only way to put a password in the CVS 'passwd' file is
+to paste it there from somewhere else. Someday, there may be a 'cvs
+passwd' command.
+
+ Unlike many of the files in '$CVSROOT/CVSROOT', it is normal to edit
+the 'passwd' file in-place, rather than via CVS. This is because of the
+possible security risks of having the 'passwd' file checked out to
+people's working copies. If you do want to include the 'passwd' file in
+checkouts of '$CVSROOT/CVSROOT', see *note checkoutlist::.
+
+2.9.3.2 Using the client with password authentication
+.....................................................
+
+To run a CVS command on a remote repository via the
+password-authenticating server, one specifies the 'pserver' protocol,
+optional username, repository host, an optional port number, and path to
+the repository. For example:
+
+ cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
+
+or
+
+ CVSROOT=:pserver:address@hidden:2401/usr/local/cvsroot
+ cvs checkout someproj
+
+ However, unless you're connecting to a public-access repository
+(i.e., one where that username doesn't require a password), you'll need
+to supply a password or "log in" first. Logging in verifies your
+password with the repository and stores it in a file. It's done with
+the 'login' command, which will prompt you interactively for the
+password if you didn't supply one as part of $CVSROOT:
+
+ cvs -d :pserver:address@hidden:/usr/local/cvsroot login
+ CVS password:
+
+or
+
+ cvs -d :pserver:bach:address@hidden:/usr/local/cvsroot login
+
+ After you enter the password, CVS verifies it with the server. If
+the verification succeeds, then that combination of username, host,
+repository, and password is permanently recorded, so future transactions
+with that repository won't require you to run 'cvs login'. (If
+verification fails, CVS will exit complaining that the password was
+incorrect, and nothing will be recorded.)
+
+ The records are stored, by default, in the file '$HOME/.cvspass'.
+That file's format is human-readable, and to a degree human-editable,
+but note that the passwords are not stored in cleartext--they are
+trivially encoded to protect them from "innocent" compromise (i.e.,
+inadvertent viewing by a system administrator or other non-malicious
+person).
+
+ You can change the default location of this file by setting the
+'CVS_PASSFILE' environment variable. If you use this variable, make
+sure you set it _before_ 'cvs login' is run. If you were to set it
+after running 'cvs login', then later CVS commands would be unable to
+look up the password for transmission to the server.
+
+ Once you have logged in, all CVS commands using that remote
+repository and username will authenticate with the stored password. So,
+for example
+
+ cvs -d :pserver:address@hidden:/usr/local/cvsroot checkout foo
+
+should just work (unless the password changes on the server side, in
+which case you'll have to re-run 'cvs login').
+
+ Note that if the ':pserver:' were not present in the repository
+specification, CVS would assume it should use 'rsh' to connect with the
+server instead (*note Connecting via rsh::).
+
+ Of course, once you have a working copy checked out and are running
+CVS commands from within it, there is no longer any need to specify the
+repository explicitly, because CVS can deduce the repository from the
+working copy's 'CVS' subdirectory.
+
+ The password for a given remote repository can be removed from the
+'CVS_PASSFILE' by using the 'cvs logout' command.
+
+2.9.3.3 Security considerations with password authentication
+............................................................
+
+The passwords are stored on the client side in a trivial encoding of the
+cleartext, and transmitted in the same encoding. The encoding is done
+only to prevent inadvertent password compromises (i.e., a system
+administrator accidentally looking at the file), and will not prevent
+even a naive attacker from gaining the password.
+
+ The separate CVS password file (*note Password authentication
+server::) allows people to use a different password for repository
+access than for login access. On the other hand, once a user has
+non-read-only access to the repository, she can execute programs on the
+server system through a variety of means. Thus, repository access
+implies fairly broad system access as well. It might be possible to
+modify CVS to prevent that, but no one has done so as of this writing.
+
+ Note that because the '$CVSROOT/CVSROOT' directory contains 'passwd'
+and other files which are used to check security, you must control the
+permissions on this directory as tightly as the permissions on '/etc'.
+The same applies to the '$CVSROOT' directory itself and any directory
+above it in the tree. Anyone who has write access to such a directory
+will have the ability to become any user on the system. Note that these
+permissions are typically tighter than you would use if you are not
+using pserver.
+
+ In summary, anyone who gets the password gets repository access
+(which may imply some measure of general system access as well). The
+password is available to anyone who can sniff network packets or read a
+protected (i.e., user read-only) file. If you want real security, get
+Kerberos.
+
+2.9.4 Direct connection with GSSAPI
+-----------------------------------
+
+GSSAPI is a generic interface to network security systems such as
+Kerberos 5. If you have a working GSSAPI library, you can have CVS
+connect via a direct TCP connection, authenticating with GSSAPI.
+
+ To do this, CVS needs to be compiled with GSSAPI support; when
+configuring CVS it tries to detect whether GSSAPI libraries using
+Kerberos version 5 are present. You can also use the '--with-gssapi'
+flag to configure.
+
+ The connection is authenticated using GSSAPI, but the message stream
+is _not_ authenticated by default. You must use the '-a' global option
+to request stream authentication.
+
+ The data transmitted is _not_ encrypted by default. Encryption
+support must be compiled into both the client and the server; use the
+'--enable-encrypt' configure option to turn it on. You must then use
+the '-x' global option to request encryption.
+
+ GSSAPI connections are handled on the server side by the same server
+which handles the password authentication server; see *note Password
+authentication server::. If you are using a GSSAPI mechanism such as
+Kerberos which provides for strong authentication, you will probably
+want to disable the ability to authenticate via cleartext passwords. To
+do so, create an empty 'CVSROOT/passwd' password file, and set
+'SystemAuth=no' in the config file (*note config::).
+
+ The GSSAPI server uses a principal name of cvs/HOSTNAME, where
+HOSTNAME is the canonical name of the server host. You will have to set
+this up as required by your GSSAPI mechanism.
+
+ To connect using GSSAPI, use the ':gserver:' method. For example,
+
+ cvs -d :gserver:faun.example.org:/usr/local/cvsroot checkout foo
+
+2.9.5 Direct connection with Kerberos
+-------------------------------------
+
+The easiest way to use Kerberos is to use the Kerberos 'rsh', as
+described in *note Connecting via rsh::. The main disadvantage of using
+rsh is that all the data needs to pass through additional programs, so
+it may be slower. So if you have Kerberos installed you can connect via
+a direct TCP connection, authenticating with Kerberos.
+
+ This section concerns the Kerberos network security system, version
+4. Kerberos version 5 is supported via the GSSAPI generic network
+security interface, as described in the previous section.
+
+ To do this, CVS needs to be compiled with Kerberos support; when
+configuring CVS it tries to detect whether Kerberos is present or you
+can use the '--with-krb4' flag to configure.
+
+ The data transmitted is _not_ encrypted by default. Encryption
+support must be compiled into both the client and server; use the
+'--enable-encryption' configure option to turn it on. You must then use
+the '-x' global option to request encryption.
+
+ You need to edit 'inetd.conf' on the server machine to run 'cvs
+kserver'. The client uses port 1999 by default; if you want to use
+another port specify it in the 'CVSROOT' (*note Remote repositories::)
+or the 'CVS_CLIENT_PORT' environment variable (*note Environment
+variables::) on the client.
+
+ When you want to use CVS, get a ticket in the usual way (generally
+'kinit'); it must be a ticket which allows you to log into the server
+machine. Then you are ready to go:
+
+ cvs -d :kserver:faun.example.org:/usr/local/cvsroot checkout foo
+
+ Previous versions of CVS would fall back to a connection via rsh;
+this version will not do so.
+
+2.9.6 Connecting with fork
+--------------------------
+
+This access method allows you to connect to a repository on your local
+disk via the remote protocol. In other words it does pretty much the
+same thing as ':local:', but various quirks, bugs and the like are those
+of the remote CVS rather than the local CVS.
+
+ For day-to-day operations you might prefer either ':local:' or
+':fork:', depending on your preferences. Of course ':fork:' comes in
+particularly handy in testing or debugging 'cvs' and the remote
+protocol. Specifically, we avoid all of the network-related
+setup/configuration, timeouts, and authentication inherent in the other
+remote access methods but still create a connection which uses the
+remote protocol.
+
+ To connect using the 'fork' method, use ':fork:' and the pathname to
+your local repository. For example:
+
+ cvs -d :fork:/usr/local/cvsroot checkout foo
+
+ As with ':ext:', the server is called 'cvs' by default, or the value
+of the 'CVS_SERVER' environment variable.
+
+2.10 Read-only repository access
+================================
+
+It is possible to grant read-only repository access to people using the
+password-authenticated server (*note Password authenticated::). (The
+other access methods do not have explicit support for read-only users
+because those methods all assume login access to the repository machine
+anyway, and therefore the user can do whatever local file permissions
+allow her to do.)
+
+ A user who has read-only access can do only those CVS operations
+which do not modify the repository, except for certain "administrative"
+files (such as lock files and the history file). It may be desirable to
+use this feature in conjunction with user-aliasing (*note Password
+authentication server::).
+
+ Unlike with previous versions of CVS, read-only users should be able
+merely to read the repository, and not to execute programs on the server
+or otherwise gain unexpected levels of access. Or to be more accurate,
+the _known_ holes have been plugged. Because this feature is new and
+has not received a comprehensive security audit, you should use whatever
+level of caution seems warranted given your attitude concerning
+security.
+
+ There are two ways to specify read-only access for a user: by
+inclusion, and by exclusion.
+
+ "Inclusion" means listing that user specifically in the
+'$CVSROOT/CVSROOT/readers' file, which is simply a newline-separated
+list of users. Here is a sample 'readers' file:
+
+ melissa
+ splotnik
+ jrandom
+
+(Don't forget the newline after the last user.)
+
+ "Exclusion" means explicitly listing everyone who has _write_
+access--if the file
+
+ $CVSROOT/CVSROOT/writers
+
+exists, then only those users listed in it have write access, and
+everyone else has read-only access (of course, even the read-only users
+still need to be listed in the CVS 'passwd' file). The 'writers' file
+has the same format as the 'readers' file.
+
+ Note: if your CVS 'passwd' file maps cvs users onto system users
+(*note Password authentication server::), make sure you deny or grant
+read-only access using the _cvs_ usernames, not the system usernames.
+That is, the 'readers' and 'writers' files contain cvs usernames, which
+may or may not be the same as system usernames.
+
+ Here is a complete description of the server's behavior in deciding
+whether to grant read-only or read-write access:
+
+ If 'readers' exists, and this user is listed in it, then she gets
+read-only access. Or if 'writers' exists, and this user is NOT listed
+in it, then she also gets read-only access (this is true even if
+'readers' exists but she is not listed there). Otherwise, she gets full
+read-write access.
+
+ Of course there is a conflict if the user is listed in both files.
+This is resolved in the more conservative way, it being better to
+protect the repository too much than too little: such a user gets
+read-only access.
+
+2.11 Temporary directories for the server
+=========================================
+
+While running, the CVS server creates temporary directories. They are
+named
+
+ cvs-servPID
+
+where PID is the process identification number of the server. They are
+located in the directory specified by the '-T' global option (*note
+Global options::), the 'TMPDIR' environment variable (*note Environment
+variables::), or, failing that, '/tmp'.
+
+ In most cases the server will remove the temporary directory when it
+is done, whether it finishes normally or abnormally. However, there are
+a few cases in which the server does not or cannot remove the temporary
+directory, for example:
+
+ * If the server aborts due to an internal server error, it may
+ preserve the directory to aid in debugging
+
+ * If the server is killed in a way that it has no way of cleaning up
+ (most notably, 'kill -KILL' on unix).
+
+ * If the system shuts down without an orderly shutdown, which tells
+ the server to clean up.
+
+ In cases such as this, you will need to manually remove the
+'cvs-servPID' directories. As long as there is no server running with
+process identification number PID, it is safe to do so.
+
+3 Starting a project with CVS
+*****************************
+
+Because renaming files and moving them between directories is somewhat
+inconvenient, the first thing you do when you start a new project should
+be to think through your file organization. It is not impossible to
+rename or move files, but it does increase the potential for confusion
+and CVS does have some quirks particularly in the area of renaming
+directories. *Note Moving files::.
+
+ What to do next depends on the situation at hand.
+
+3.1 Setting up the files
+========================
+
+The first step is to create the files inside the repository. This can
+be done in a couple of different ways.
+
+3.1.1 Creating a directory tree from a number of files
+------------------------------------------------------
+
+When you begin using CVS, you will probably already have several
+projects that can be put under CVS control. In these cases the easiest
+way is to use the 'import' command. An example is probably the easiest
+way to explain how to use it. If the files you want to install in CVS
+reside in 'WDIR', and you want them to appear in the repository as
+'$CVSROOT/yoyodyne/RDIR', you can do this:
+
+ $ cd WDIR
+ $ cvs import -m "Imported sources" yoyodyne/RDIR yoyo start
+
+ Unless you supply a log message with the '-m' flag, CVS starts an
+editor and prompts for a message. The string 'yoyo' is a "vendor tag",
+and 'start' is a "release tag". They may fill no purpose in this
+context, but since CVS requires them they must be present. *Note
+Tracking sources::, for more information about them.
+
+ You can now verify that it worked, and remove your original source
+directory.
+
+ $ cd ..
+ $ cvs checkout yoyodyne/RDIR # Explanation below
+ $ diff -r WDIR yoyodyne/RDIR
+ $ rm -r WDIR
+
+Erasing the original sources is a good idea, to make sure that you do
+not accidentally edit them in WDIR, bypassing CVS. Of course, it would
+be wise to make sure that you have a backup of the sources before you
+remove them.
+
+ The 'checkout' command can either take a module name as argument (as
+it has done in all previous examples) or a path name relative to
+'$CVSROOT', as it did in the example above.
+
+ It is a good idea to check that the permissions CVS sets on the
+directories inside '$CVSROOT' are reasonable, and that they belong to
+the proper groups. *Note File permissions::.
+
+ If some of the files you want to import are binary, you may want to
+use the wrappers features to specify which files are binary and which
+are not. *Note Wrappers::.
+
+3.1.2 Creating Files From Other Version Control Systems
+-------------------------------------------------------
+
+If you have a project which you are maintaining with another version
+control system, such as RCS, you may wish to put the files from that
+project into CVS, and preserve the revision history of the files.
+
+From RCS
+ If you have been using RCS, find the RCS files--usually a file
+ named 'foo.c' will have its RCS file in 'RCS/foo.c,v' (but it could
+ be other places; consult the RCS documentation for details). Then
+ create the appropriate directories in CVS if they do not already
+ exist. Then copy the files into the appropriate directories in the
+ CVS repository (the name in the repository must be the name of the
+ source file with ',v' added; the files go directly in the
+ appropriate directory of the repository, not in an 'RCS'
+ subdirectory). This is one of the few times when it is a good idea
+ to access the CVS repository directly, rather than using CVS
+ commands. Then you are ready to check out a new working directory.
+
+ The RCS file should not be locked when you move it into CVS; if it
+ is, CVS will have trouble letting you operate on it.
+
+From another version control system
+ Many version control systems have the ability to export RCS files
+ in the standard format. If yours does, export the RCS files and
+ then follow the above instructions.
+
+ Failing that, probably your best bet is to write a script that will
+ check out the files one revision at a time using the command line
+ interface to the other system, and then check the revisions into
+ CVS. The 'sccs2rcs' script mentioned below may be a useful example
+ to follow.
+
+From SCCS
+ There is a script in the 'contrib' directory of the CVS source
+ distribution called 'sccs2rcs' which converts SCCS files to RCS
+ files. Note: you must run it on a machine which has both SCCS and
+ RCS installed, and like everything else in contrib it is
+ unsupported (your mileage may vary).
+
+From PVCS
+ There is a script in the 'contrib' directory of the CVS source
+ distribution called 'pvcs_to_rcs' which converts PVCS archives to
+ RCS files. You must run it on a machine which has both PVCS and
+ RCS installed, and like everything else in contrib it is
+ unsupported (your mileage may vary). See the comments in the
+ script for details.
+
+3.1.3 Creating a directory tree from scratch
+--------------------------------------------
+
+For a new project, the easiest thing to do is probably to create an
+empty directory structure, like this:
+
+ $ mkdir tc
+ $ mkdir tc/man
+ $ mkdir tc/testing
+
+ After that, you use the 'import' command to create the corresponding
+(empty) directory structure inside the repository:
+
+ $ cd tc
+ $ cvs import -m "Created directory structure" yoyodyne/DIR yoyo start
+
+ This will add yoyodyne/DIR as a directory under '$CVSROOT'.
+
+ Use 'checkout' to get the new project. Then, use 'add' to add files
+(and new directories) as needed.
+
+ $ cd ..
+ $ cvs co yoyodyne/DIR
+
+ Check that the permissions CVS sets on the directories inside
+'$CVSROOT' are reasonable.
+
+3.2 Defining the module
+=======================
+
+The next step is to define the module in the 'modules' file. This is
+not strictly necessary, but modules can be convenient in grouping
+together related files and directories.
+
+ In simple cases these steps are sufficient to define a module.
+
+ 1. Get a working copy of the modules file.
+
+ $ cvs checkout CVSROOT/modules
+ $ cd CVSROOT
+
+ 2. Edit the file and insert a line that defines the module. *Note
+ Intro administrative files::, for an introduction. *Note
+ modules::, for a full description of the modules file. You can use
+ the following line to define the module 'tc':
+
+ tc yoyodyne/tc
+
+ 3. Commit your changes to the modules file.
+
+ $ cvs commit -m "Added the tc module." modules
+
+ 4. Release the modules module.
+
+ $ cd ..
+ $ cvs release -d CVSROOT
+
+4 Revisions
+***********
+
+For many uses of CVS, one doesn't need to worry too much about revision
+numbers; CVS assigns numbers such as '1.1', '1.2', and so on, and that
+is all one needs to know. However, some people prefer to have more
+knowledge and control concerning how CVS assigns revision numbers.
+
+ If one wants to keep track of a set of revisions involving more than
+one file, such as which revisions went into a particular release, one
+uses a "tag", which is a symbolic revision which can be assigned to a
+numeric revision in each file.
+
+4.1 Revision numbers
+====================
+
+Each version of a file has a unique "revision number". Revision numbers
+look like '1.1', '1.2', '1.3.2.2' or even '1.3.2.2.4.5'. A revision
+number always has an even number of period-separated decimal integers.
+By default revision 1.1 is the first revision of a file. Each
+successive revision is given a new number by increasing the rightmost
+number by one. The following figure displays a few revisions, with
+newer revisions to the right.
+
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+
+ It is also possible to end up with numbers containing more than one
+period, for example '1.3.2.2'. Such revisions represent revisions on
+branches (*note Branching and merging::); such revision numbers are
+explained in detail in *note Branches and revisions::.
+
+4.2 Versions, revisions and releases
+====================================
+
+A file can have several versions, as described above. Likewise, a
+software product can have several versions. A software product is often
+given a version number such as '4.1.1'.
+
+ Versions in the first sense are called "revisions" in this document,
+and versions in the second sense are called "releases". To avoid
+confusion, the word "version" is almost never used in this document.
+
+4.3 Assigning revisions
+=======================
+
+By default, CVS will assign numeric revisions by leaving the first
+number the same and incrementing the second number. For example, '1.1',
+'1.2', '1.3', etc.
+
+ When adding a new file, the second number will always be one and the
+first number will equal the highest first number of any file in that
+directory. For example, the current directory contains files whose
+highest numbered revisions are '1.7', '3.1', and '4.12', then an added
+file will be given the numeric revision '4.1'. (When using
+client/server CVS, only files that are actually sent to the server are
+considered.)
+
+ Normally there is no reason to care about the revision numbers--it is
+easier to treat them as internal numbers that CVS maintains, and tags
+provide a better way to distinguish between things like release 1 versus
+release 2 of your product (*note Tags::). However, if you want to set
+the numeric revisions, the '-r' option to 'cvs commit' can do that. The
+'-r' option implies the '-f' option, in the sense that it causes the
+files to be committed even if they are not modified.
+
+ For example, to bring all your files up to revision 3.0 (including
+those that haven't changed), you might invoke:
+
+ $ cvs commit -r 3.0
+
+ Note that the number you specify with '-r' must be larger than any
+existing revision number. That is, if revision 3.0 exists, you cannot
+'cvs commit -r 1.3'. If you want to maintain several releases in
+parallel, you need to use a branch (*note Branching and merging::).
+
+4.4 Tags-Symbolic revisions
+===========================
+
+The revision numbers live a life of their own. They need not have
+anything at all to do with the release numbers of your software product.
+Depending on how you use CVS the revision numbers might change several
+times between two releases. As an example, some of the source files
+that make up RCS 5.6 have the following revision numbers:
+
+ ci.c 5.21
+ co.c 5.9
+ ident.c 5.3
+ rcs.c 5.12
+ rcsbase.h 5.11
+ rcsdiff.c 5.10
+ rcsedit.c 5.11
+ rcsfcmp.c 5.9
+ rcsgen.c 5.10
+ rcslex.c 5.11
+ rcsmap.c 5.2
+ rcsutil.c 5.10
+
+ You can use the 'tag' command to give a symbolic name to a certain
+revision of a file. You can use the '-v' flag to the 'status' command
+to see all tags that a file has, and which revision numbers they
+represent. Tag names must start with an uppercase or lowercase letter
+and can contain uppercase and lowercase letters, digits, '-', and '_'.
+The two tag names 'BASE' and 'HEAD' are reserved for use by CVS. It is
+expected that future names which are special to CVS will be specially
+named, for example by starting with '.', rather than being named
+analogously to 'BASE' and 'HEAD', to avoid conflicts with actual tag
+names.
+
+ You'll want to choose some convention for naming tags, based on
+information such as the name of the program and the version number of
+the release. For example, one might take the name of the program,
+immediately followed by the version number with '.' changed to '-', so
+that CVS 1.9 would be tagged with the name 'cvs1-9'. If you choose a
+consistent convention, then you won't constantly be guessing whether a
+tag is 'cvs-1-9' or 'cvs1_9' or what. You might even want to consider
+enforcing your convention in the 'taginfo' file (*note taginfo::).
+
+ The following example shows how you can add a tag to a file. The
+commands must be issued inside your working directory. That is, you
+should issue the command in the directory where 'backend.c' resides.
+
+ $ cvs tag rel-0-4 backend.c
+ T backend.c
+ $ cvs status -v backend.c
+ ===================================================================
+ File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-0-4 (revision: 1.4)
+
+
+ For a complete summary of the syntax of 'cvs tag', including the
+various options, see *note Invoking CVS::.
+
+ There is seldom reason to tag a file in isolation. A more common use
+is to tag all the files that constitute a module with the same tag at
+strategic points in the development life-cycle, such as when a release
+is made.
+
+ $ cvs tag rel-1-0 .
+ cvs tag: Tagging .
+ T Makefile
+ T backend.c
+ T driver.c
+ T frontend.c
+ T parser.c
+
+(When you give CVS a directory as argument, it generally applies the
+operation to all the files in that directory, and (recursively), to any
+subdirectories that it may contain. *Note Recursive behavior::.)
+
+ The 'checkout' command has a flag, '-r', that lets you check out a
+certain revision of a module. This flag makes it easy to retrieve the
+sources that make up release 1.0 of the module 'tc' at any time in the
+future:
+
+ $ cvs checkout -r rel-1-0 tc
+
+This is useful, for instance, if someone claims that there is a bug in
+that release, but you cannot find the bug in the current working copy.
+
+ You can also check out a module as it was at any given date. *Note
+checkout options::. When specifying '-r' to any of these commands, you
+will need beware of sticky tags; see *note Sticky tags::.
+
+ When you tag more than one file with the same tag you can think about
+the tag as "a curve drawn through a matrix of filename vs. revision
+number." Say we have 5 files with the following revisions:
+
+ file1 file2 file3 file4 file5
+
+ 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
+ 1.2*- 1.2 1.2 -1.2*-
+ 1.3 \- 1.3*- 1.3 / 1.3
+ 1.4 \ 1.4 / 1.4
+ \-1.5*- 1.5
+ 1.6
+
+ At some time in the past, the '*' versions were tagged. You can
+think of the tag as a handle attached to the curve drawn through the
+tagged revisions. When you pull on the handle, you get all the tagged
+revisions. Another way to look at it is that you "sight" through a set
+of revisions that is "flat" along the tagged revisions, like this:
+
+ file1 file2 file3 file4 file5
+
+ 1.1
+ 1.2
+ 1.1 1.3 _
+ 1.1 1.2 1.4 1.1 /
+ 1.2*----1.3*----1.5*----1.2*----1.1 (--- <--- Look here
+ 1.3 1.6 1.3 \_
+ 1.4 1.4
+ 1.5
+
+4.5 Specifying what to tag from the working directory
+=====================================================
+
+The example in the previous section demonstrates one of the most common
+ways to choose which revisions to tag. Namely, running the 'cvs tag'
+command without arguments causes CVS to select the revisions which are
+checked out in the current working directory. For example, if the copy
+of 'backend.c' in working directory was checked out from revision 1.4,
+then CVS will tag revision 1.4. Note that the tag is applied
+immediately to revision 1.4 in the repository; tagging is not like
+modifying a file, or other operations in which one first modifies the
+working directory and then runs 'cvs commit' to transfer that
+modification to the repository.
+
+ One potentially surprising aspect of the fact that 'cvs tag' operates
+on the repository is that you are tagging the checked-in revisions,
+which may differ from locally modified files in your working directory.
+If you want to avoid doing this by mistake, specify the '-c' option to
+'cvs tag'. If there are any locally modified files, CVS will abort with
+an error before it tags any files:
+
+ $ cvs tag -c rel-0-4
+ cvs tag: backend.c is locally modified
+ cvs [tag aborted]: correct the above errors first!
+
+4.6 Specifying what to tag by date or revision
+==============================================
+
+The 'cvs rtag' command tags the repository as of a certain date or time
+(or can be used to tag the latest revision). 'rtag' works directly on
+the repository contents (it requires no prior checkout and does not look
+for a working directory).
+
+ The following options specify which date or revision to tag. See
+*note Common options::, for a complete description of them.
+
+'-D DATE'
+ Tag the most recent revision no later than DATE.
+
+'-f'
+ Only useful with the '-D DATE' or '-r TAG' flags. If no matching
+ revision is found, use the most recent revision (instead of
+ ignoring the file).
+
+'-r TAG'
+ Only tag those files that contain existing tag TAG.
+
+ The 'cvs tag' command also allows one to specify files by revision or
+date, using the same '-r', '-D', and '-f' options. However, this
+feature is probably not what you want. The reason is that 'cvs tag'
+chooses which files to tag based on the files that exist in the working
+directory, rather than the files which existed as of the given tag/date.
+Therefore, you are generally better off using 'cvs rtag'. The
+exceptions might be cases like:
+
+ cvs tag -r 1.4 backend.c
+
+4.7 Deleting, moving, and renaming tags
+=======================================
+
+Normally one does not modify tags. They exist in order to record the
+history of the repository and so deleting them or changing their meaning
+would, generally, not be what you want.
+
+ However, there might be cases in which one uses a tag temporarily or
+accidentally puts one in the wrong place. Therefore, one might delete,
+move, or rename a tag.
+
+*WARNING: The commands in this section are dangerous; they permanently
+discard historical information and it can be difficult or impossible to
+recover from errors. If you are a CVS administrator, you may consider
+restricting these commands with the 'taginfo' file (*note taginfo::).*
+
+ To delete a tag, specify the '-d' option to either 'cvs tag' or 'cvs
+rtag'. For example:
+
+ cvs rtag -d rel-0-4 tc
+
+deletes the non-branch tag 'rel-0-4' from the module 'tc'. In the event
+that branch tags are encountered within the repository with the given
+name, a warning message will be issued and the branch tag will not be
+deleted. If you are absolutely certain you know what you are doing, the
+'-B' option may be specified to allow deletion of branch tags. In that
+case, any non-branch tags encountered will trigger warnings and will not
+be deleted.
+
+*WARNING: Moving branch tags is very dangerous! If you think you need
+the '-B' option, think again and ask your CVS administrator about it (if
+that isn't you). There is almost certainly another way to accomplish
+what you want to accomplish.*
+
+ When we say "move" a tag, we mean to make the same name point to
+different revisions. For example, the 'stable' tag may currently point
+to revision 1.4 of 'backend.c' and perhaps we want to make it point to
+revision 1.6. To move a non-branch tag, specify the '-F' option to
+either 'cvs tag' or 'cvs rtag'. For example, the task just mentioned
+might be accomplished as:
+
+ cvs tag -r 1.6 -F stable backend.c
+
+If any branch tags are encountered in the repository with the given
+name, a warning is issued and the branch tag is not disturbed. If you
+are absolutely certain you wish to move the branch tag, the '-B' option
+may be specified. In that case, non-branch tags encountered with the
+given name are ignored with a warning message.
+
+*WARNING: Moving branch tags is very dangerous! If you think you need
+the '-B' option, think again and ask your CVS administrator about it (if
+that isn't you). There is almost certainly another way to accomplish
+what you want to accomplish.*
+
+ When we say "rename" a tag, we mean to make a different name point to
+the same revisions as the old tag. For example, one may have misspelled
+the tag name and want to correct it (hopefully before others are relying
+on the old spelling). To rename a tag, first create a new tag using the
+'-r' option to 'cvs rtag', and then delete the old name. (Caution: this
+method will not work with branch tags.) This leaves the new tag on
+exactly the same files as the old tag. For example:
+
+ cvs rtag -r old-name-0-4 rel-0-4 tc
+ cvs rtag -d old-name-0-4 tc
+
+4.8 Tagging and adding and removing files
+=========================================
+
+The subject of exactly how tagging interacts with adding and removing
+files is somewhat obscure; for the most part CVS will keep track of
+whether files exist or not without too much fussing. By default, tags
+are applied to only files which have a revision corresponding to what is
+being tagged. Files which did not exist yet, or which were already
+removed, simply omit the tag, and CVS knows to treat the absence of a
+tag as meaning that the file didn't exist as of that tag.
+
+ However, this can lose a small amount of information. For example,
+suppose a file was added and then removed. Then, if the tag is missing
+for that file, there is no way to know whether the tag refers to the
+time before the file was added, or the time after it was removed. If
+you specify the '-r' option to 'cvs rtag', then CVS tags the files which
+have been removed, and thereby avoids this problem. For example, one
+might specify '-r HEAD' to tag the head.
+
+ On the subject of adding and removing files, the 'cvs rtag' command
+has a '-a' option which means to clear the tag from removed files that
+would not otherwise be tagged. For example, one might specify this
+option in conjunction with '-F' when moving a tag. If one moved a tag
+without '-a', then the tag in the removed files might still refer to the
+old revision, rather than reflecting the fact that the file had been
+removed. I don't think this is necessary if '-r' is specified, as noted
+above.
+
+4.9 Sticky tags
+===============
+
+Sometimes a working copy's revision has extra data associated with it,
+for example it might be on a branch (*note Branching and merging::), or
+restricted to versions prior to a certain date by 'checkout -D' or
+'update -D'. Because this data persists - that is, it applies to
+subsequent commands in the working copy - we refer to it as "sticky".
+
+ Most of the time, stickiness is an obscure aspect of CVS that you
+don't need to think about. However, even if you don't want to use the
+feature, you may need to know _something_ about sticky tags (for
+example, how to avoid them!).
+
+ You can use the 'status' command to see if any sticky tags or dates
+are set:
+
+ $ cvs status driver.c
+ ===================================================================
+ File: driver.c Status: Up-to-date
+
+ Version: 1.7.2.1 Sat Dec 5 19:35:03 1992
+ RCS Version: 1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+
+ The sticky tags will remain on your working files until you delete
+them with 'cvs update -A'. The '-A' option merges local changes into
+the version of the file from the head of the trunk, removing any sticky
+tags, dates, or options (other than sticky '-k' options on locally
+modified files). See *note update:: for more on the operation of 'cvs
+update'.
+
+ The most common use of sticky tags is to identify which branch one is
+working on, as described in *note Accessing branches::. However,
+non-branch sticky tags have uses as well. For example, suppose that you
+want to avoid updating your working directory, to isolate yourself from
+possibly destabilizing changes other people are making. You can, of
+course, just refrain from running 'cvs update'. But if you want to
+avoid updating only a portion of a larger tree, then sticky tags can
+help. If you check out a certain revision (such as 1.4) it will become
+sticky. Subsequent 'cvs update' commands will not retrieve the latest
+revision until you reset the tag with 'cvs update -A'. Likewise, use of
+the '-D' option to 'update' or 'checkout' sets a "sticky date", which,
+similarly, causes that date to be used for future retrievals.
+
+ People often want to retrieve an old version of a file without
+setting a sticky tag. This can be done with the '-p' option to
+'checkout' or 'update', which sends the contents of the file to standard
+output. For example:
+ $ cvs update -p -r 1.1 file1 >file1
+ ===================================================================
+ Checking out file1
+ RCS: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+ VERS: 1.1
+ ***************
+ $
+
+ However, this isn't the easiest way, if you are asking how to undo a
+previous checkin (in this example, put 'file1' back to the way it was as
+of revision 1.1). In that case you are better off using the '-j' option
+to 'update'; for further discussion see *note Merging two revisions::.
+
+5 Branching and merging
+***********************
+
+CVS allows you to isolate changes onto a separate line of development,
+known as a "branch". When you change files on a branch, those changes
+do not appear on the main trunk or other branches.
+
+ Later you can move changes from one branch to another branch (or the
+main trunk) by "merging". Merging involves first running 'cvs update
+-j', to merge the changes into the working directory. You can then
+commit that revision, and thus effectively copy the changes onto another
+branch.
+
+5.1 What branches are good for
+==============================
+
+Suppose that release 1.0 of tc has been made. You are continuing to
+develop tc, planning to create release 1.1 in a couple of months. After
+a while your customers start to complain about a fatal bug. You check
+out release 1.0 (*note Tags::) and find the bug (which turns out to have
+a trivial fix). However, the current revision of the sources are in a
+state of flux and are not expected to be stable for at least another
+month. There is no way to make a bug fix release based on the newest
+sources.
+
+ The thing to do in a situation like this is to create a "branch" on
+the revision trees for all the files that make up release 1.0 of tc.
+You can then make modifications to the branch without disturbing the
+main trunk. When the modifications are finished you can elect to either
+incorporate them on the main trunk, or leave them on the branch.
+
+5.2 Creating a branch
+=====================
+
+You can create a branch with 'tag -b'; for example, assuming you're in a
+working copy:
+
+ $ cvs tag -b rel-1-0-patches
+
+ This splits off a branch based on the current revisions in the
+working copy, assigning that branch the name 'rel-1-0-patches'.
+
+ It is important to understand that branches get created in the
+repository, not in the working copy. Creating a branch based on current
+revisions, as the above example does, will _not_ automatically switch
+the working copy to be on the new branch. For information on how to do
+that, see *note Accessing branches::.
+
+ You can also create a branch without reference to any working copy,
+by using 'rtag':
+
+ $ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
+
+ '-r rel-1-0' says that this branch should be rooted at the revision
+that corresponds to the tag 'rel-1-0'. It need not be the most recent
+revision - it's often useful to split a branch off an old revision (for
+example, when fixing a bug in a past release otherwise known to be
+stable).
+
+ As with 'tag', the '-b' flag tells 'rtag' to create a branch (rather
+than just a symbolic revision name). Note that the numeric revision
+number that matches 'rel-1-0' will probably be different from file to
+file.
+
+ So, the full effect of the command is to create a new branch - named
+'rel-1-0-patches' - in module 'tc', rooted in the revision tree at the
+point tagged by 'rel-1-0'.
+
+5.3 Accessing branches
+======================
+
+You can retrieve a branch in one of two ways: by checking it out fresh
+from the repository, or by switching an existing working copy over to
+the branch.
+
+ To check out a branch from the repository, invoke 'checkout' with the
+'-r' flag, followed by the tag name of the branch (*note Creating a
+branch::):
+
+ $ cvs checkout -r rel-1-0-patches tc
+
+ Or, if you already have a working copy, you can switch it to a given
+branch with 'update -r':
+
+ $ cvs update -r rel-1-0-patches tc
+
+or equivalently:
+
+ $ cd tc
+ $ cvs update -r rel-1-0-patches
+
+ It does not matter if the working copy was originally on the main
+trunk or on some other branch - the above command will switch it to the
+named branch. And similarly to a regular 'update' command, 'update -r'
+merges any changes you have made, notifying you of conflicts where they
+occur.
+
+ Once you have a working copy tied to a particular branch, it remains
+there until you tell it otherwise. This means that changes checked in
+from the working copy will add new revisions on that branch, while
+leaving the main trunk and other branches unaffected.
+
+ To find out what branch a working copy is on, you can use the
+'status' command. In its output, look for the field named 'Sticky tag'
+(*note Sticky tags::) - that's CVS's way of telling you the branch, if
+any, of the current working files:
+
+ $ cvs status -v driver.c backend.c
+ ===================================================================
+ File: driver.c Status: Up-to-date
+
+ Version: 1.7 Sat Dec 5 18:25:54 1992
+ RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.7.2)
+ rel-1-0 (revision: 1.7)
+
+ ===================================================================
+ File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.4.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.4.2)
+ rel-1-0 (revision: 1.4)
+ rel-0-4 (revision: 1.4)
+
+
+ Don't be confused by the fact that the branch numbers for each file
+are different ('1.7.2' and '1.4.2' respectively). The branch tag is the
+same, 'rel-1-0-patches', and the files are indeed on the same branch.
+The numbers simply reflect the point in each file's revision history at
+which the branch was made. In the above example, one can deduce that
+'driver.c' had been through more changes than 'backend.c' before this
+branch was created.
+
+ See *note Branches and revisions:: for details about how branch
+numbers are constructed.
+
+5.4 Branches and revisions
+==========================
+
+Ordinarily, a file's revision history is a linear series of increments
+(*note Revision numbers::):
+
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+
+ However, CVS is not limited to linear development. The "revision
+tree" can be split into "branches", where each branch is a
+self-maintained line of development. Changes made on one branch can
+easily be moved back to the main trunk.
+
+ Each branch has a "branch number", consisting of an odd number of
+period-separated decimal integers. The branch number is created by
+appending an integer to the revision number where the corresponding
+branch forked off. Having branch numbers allows more than one branch to
+be forked off from a certain revision.
+
+ All revisions on a branch have revision numbers formed by appending
+an ordinal number to the branch number. The following figure
+illustrates branching with an example.
+
+ +-------------+
+ Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
+ / +-------------+
+ /
+ /
+ +---------+ +---------+ +---------+
+ Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ / +---------+ +---------+ +---------+
+ /
+ /
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+ +---------+
+ Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+ +---------+ +---------+ +---------+
+
+
+ The exact details of how the branch number is constructed is not
+something you normally need to be concerned about, but here is how it
+works: When CVS creates a branch number it picks the first unused even
+integer, starting with 2. So when you want to create a branch from
+revision 6.4 it will be numbered 6.4.2. All branch numbers ending in a
+zero (such as 6.4.0) are used internally by CVS (*note Magic branch
+numbers::). The branch 1.1.1 has a special meaning. *Note Tracking
+sources::.
+
+5.5 Magic branch numbers
+========================
+
+This section describes a CVS feature called "magic branches". For most
+purposes, you need not worry about magic branches; CVS handles them for
+you. However, they are visible to you in certain circumstances, so it
+may be useful to have some idea of how it works.
+
+ Externally, branch numbers consist of an odd number of dot-separated
+decimal integers. *Note Revision numbers::. That is not the whole
+truth, however. For efficiency reasons CVS sometimes inserts an extra 0
+in the second rightmost position (1.2.4 becomes 1.2.0.4, 8.9.10.11.12
+becomes 8.9.10.11.0.12 and so on).
+
+ CVS does a pretty good job at hiding these so called magic branches,
+but in a few places the hiding is incomplete:
+
+ * The magic branch number appears in the output from 'cvs log'.
+
+ * You cannot specify a symbolic branch name to 'cvs admin'.
+
+ You can use the 'admin' command to reassign a symbolic name to a
+branch the way RCS expects it to be. If 'R4patches' is assigned to the
+branch 1.4.2 (magic branch number 1.4.0.2) in file 'numbers.c' you can
+do this:
+
+ $ cvs admin -NR4patches:1.4.2 numbers.c
+
+ It only works if at least one revision is already committed on the
+branch. Be very careful so that you do not assign the tag to the wrong
+number. (There is no way to see how the tag was assigned yesterday).
+
+5.6 Merging an entire branch
+============================
+
+You can merge changes made on a branch into your working copy by giving
+the '-j BRANCHNAME' flag to the 'update' subcommand. With one '-j
+BRANCHNAME' option it merges the changes made between the greatest
+common ancestor (GCA) of the branch and the destination revision (in the
+simple case below the GCA is the point where the branch forked) and the
+newest revision on that branch into your working copy.
+
+ The '-j' stands for "join".
+
+ Consider this revision tree:
+
+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+
+The branch 1.2.2 has been given the tag (symbolic name) 'R1fix'. The
+following example assumes that the module 'mod' contains only one file,
+'m.c'.
+
+ $ cvs checkout mod # Retrieve the latest revision, 1.4
+
+ $ cvs update -j R1fix m.c # Merge all changes made on the branch,
+ # i.e. the changes between revision 1.2
+ # and 1.2.2.2, into your working copy
+ # of the file.
+
+ $ cvs commit -m "Included R1fix" # Create revision 1.5.
+
+ A conflict can result from a merge operation. If that happens, you
+should resolve it before committing the new revision. *Note Conflicts
+example::.
+
+ If your source files contain keywords (*note Keyword substitution::),
+you might be getting more conflicts than strictly necessary. See *note
+Merging and keywords::, for information on how to avoid this.
+
+ The 'checkout' command also supports the '-j BRANCHNAME' flag. The
+same effect as above could be achieved with this:
+
+ $ cvs checkout -j R1fix mod
+ $ cvs commit -m "Included R1fix"
+
+ It should be noted that 'update -j TAGNAME' will also work but may
+not produce the desired result. *Note Merging adds and removals::, for
+more.
+
+5.7 Merging from a branch several times
+=======================================
+
+Continuing our example, the revision tree now looks like this:
+
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+
+where the starred line represents the merge from the 'R1fix' branch to
+the main trunk, as just discussed.
+
+ Now suppose that development continues on the 'R1fix' branch:
+
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ +---------+ +---------+ +---------+
+
+and then you want to merge those new changes onto the main trunk. If
+you just use the 'cvs update -j R1fix m.c' command again, CVS will
+attempt to merge again the changes which you have already merged, which
+can have undesirable side effects.
+
+ So instead you need to specify that you only want to merge the
+changes on the branch which have not yet been merged into the trunk. To
+do that you specify two '-j' options, and CVS merges the changes from
+the first revision to the second revision. For example, in this case
+the simplest way would be
+
+ cvs update -j 1.2.2.2 -j R1fix m.c # Merge changes from 1.2.2.2 to the
+ # head of the R1fix branch
+
+ The problem with this is that you need to specify the 1.2.2.2
+revision manually. A slightly better approach might be to use the date
+the last merge was done:
+
+ cvs update -j R1fix:yesterday -j R1fix m.c
+
+ Better yet, tag the R1fix branch after every merge into the trunk,
+and then use that tag for subsequent merges:
+
+ cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
+
+5.8 Merging differences between any two revisions
+=================================================
+
+With two '-j REVISION' flags, the 'update' (and 'checkout') command can
+merge the differences between any two revisions into your working file.
+
+ $ cvs update -j 1.5 -j 1.3 backend.c
+
+will undo all changes made between revision 1.3 and 1.5. Note the order
+of the revisions!
+
+ If you try to use this option when operating on multiple files,
+remember that the numeric revisions will probably be very different
+between the various files. You almost always use symbolic tags rather
+than revision numbers when operating on multiple files.
+
+ Specifying two '-j' options can also undo file removals or additions.
+For example, suppose you have a file named 'file1' which existed as
+revision 1.1, and you then removed it (thus adding a dead revision 1.2).
+Now suppose you want to add it again, with the same contents it had
+previously. Here is how to do it:
+
+ $ cvs update -j 1.2 -j 1.1 file1
+ U file1
+ $ cvs commit -m test
+ Checking in file1;
+ /tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+ new revision: 1.3; previous revision: 1.2
+ done
+ $
+
+5.9 Merging can add or remove files
+===================================
+
+If the changes which you are merging involve removing or adding some
+files, 'update -j' will reflect such additions or removals.
+
+ For example:
+ cvs update -A
+ touch a b c
+ cvs add a b c ; cvs ci -m "added" a b c
+ cvs tag -b branchtag
+ cvs update -r branchtag
+ touch d ; cvs add d
+ rm a ; cvs rm a
+ cvs ci -m "added d, removed a"
+ cvs update -A
+ cvs update -jbranchtag
+
+ After these commands are executed and a 'cvs commit' is done, file
+'a' will be removed and file 'd' added in the main branch.
+
+ Note that using a single static tag ('-j TAGNAME') rather than a
+dynamic tag ('-j BRANCHNAME') to merge changes from a branch will
+usually not remove files which were removed on the branch since CVS does
+not automatically add static tags to dead revisions. The exception to
+this rule occurs when a static tag has been attached to a dead revision
+manually. Use the branch tag to merge all changes from the branch or
+use two static tags as merge endpoints to be sure that all intended
+changes are propagated in the merge.
+
+5.10 Merging and keywords
+=========================
+
+If you merge files containing keywords (*note Keyword substitution::),
+you will normally get numerous conflicts during the merge, because the
+keywords are expanded differently in the revisions which you are
+merging.
+
+ Therefore, you will often want to specify the '-kk' (*note
+Substitution modes::) switch to the merge command line. By substituting
+just the name of the keyword, not the expanded value of that keyword,
+this option ensures that the revisions which you are merging will be the
+same as each other, and avoid spurious conflicts.
+
+ For example, suppose you have a file like this:
+
+ +---------+
+ _! 1.1.2.1 ! <- br1
+ / +---------+
+ /
+ /
+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !
+ +-----+ +-----+
+
+and your working directory is currently on the trunk (revision 1.2).
+Then you might get the following results from a merge:
+
+ $ cat file1
+ key $Revision: 1.1 $
+ . . .
+ $ cvs update -j br1
+ U file1
+ RCS file: /cvsroot/first-dir/file1,v
+ retrieving revision 1.1
+ retrieving revision 1.1.2.1
+ Merging differences between 1.1 and 1.1.2.1 into file1
+ rcsmerge: warning: conflicts during merge
+ $ cat file1
+ <<<<<<< file1
+ key $Revision: 1.1 $
+ =======
+ key $Revision: 1.1 $
+ >>>>>>> 1.1.2.1
+ . . .
+
+ What happened was that the merge tried to merge the differences
+between 1.1 and 1.1.2.1 into your working directory. So, since the
+keyword changed from 'Revision: 1.1' to 'Revision: 1.1.2.1', CVS tried
+to merge that change into your working directory, which conflicted with
+the fact that your working directory had contained 'Revision: 1.2'.
+
+ Here is what happens if you had used '-kk':
+
+ $ cat file1
+ key $Revision: 1.1 $
+ . . .
+ $ cvs update -kk -j br1
+ U file1
+ RCS file: /cvsroot/first-dir/file1,v
+ retrieving revision 1.1
+ retrieving revision 1.1.2.1
+ Merging differences between 1.1 and 1.1.2.1 into file1
+ $ cat file1
+ key $Revision: 1.1 $
+ . . .
+
+ What is going on here is that revision 1.1 and 1.1.2.1 both expand as
+plain 'Revision', and therefore merging the changes between them into
+the working directory need not change anything. Therefore, there is no
+conflict.
+
+ There is, however, one major caveat with using '-kk' on merges.
+Namely, it overrides whatever keyword expansion mode CVS would normally
+have used. In particular, this is a problem if the mode had been '-kb'
+for a binary file. Therefore, if your repository contains binary files,
+you will need to deal with the conflicts rather than using '-kk'.
+
+ As a result of using '-kk' during the merge, each file examined by
+the update will have '-kk' set as sticky options. Running 'update -A'
+will clear the sticky options on unmodified files, but it will not clear
+the sticky options on modified files. To get back to the default
+keyword substitution for modified files, you must commit the results of
+the merge and then run 'update -A'.
+
+6 Recursive behavior
+********************
+
+Almost all of the subcommands of CVS work recursively when you specify a
+directory as an argument. For instance, consider this directory
+structure:
+
+ $HOME
+ |
+ +--tc
+ | |
+ +--CVS
+ | (internal CVS files)
+ +--Makefile
+ +--backend.c
+ +--driver.c
+ +--frontend.c
+ +--parser.c
+ +--man
+ | |
+ | +--CVS
+ | | (internal CVS files)
+ | +--tc.1
+ |
+ +--testing
+ |
+ +--CVS
+ | (internal CVS files)
+ +--testpgm.t
+ +--test2.t
+
+If 'tc' is the current working directory, the following is true:
+
+ * 'cvs update testing' is equivalent to
+
+ cvs update testing/testpgm.t testing/test2.t
+
+ * 'cvs update testing man' updates all files in the subdirectories
+
+ * 'cvs update .' or just 'cvs update' updates all files in the 'tc'
+ directory
+
+ If no arguments are given to 'update' it will update all files in the
+current working directory and all its subdirectories. In other words,
+'.' is a default argument to 'update'. This is also true for most of
+the CVS subcommands, not only the 'update' command.
+
+ The recursive behavior of the CVS subcommands can be turned off with
+the '-l' option. Conversely, the '-R' option can be used to force
+recursion if '-l' is specified in '~/.cvsrc' (*note ~/.cvsrc::).
+
+ $ cvs update -l # Don't update files in subdirectories
+
+7 Adding, removing, and renaming files and directories
+******************************************************
+
+In the course of a project, one will often add new files. Likewise with
+removing or renaming, or with directories. The general concept to keep
+in mind in all these cases is that instead of making an irreversible
+change you want CVS to record the fact that a change has taken place,
+just as with modifying an existing file. The exact mechanisms to do
+this in CVS vary depending on the situation.
+
+7.1 Adding files to a directory
+===============================
+
+To add a new file to a directory, follow these steps.
+
+ * You must have a working copy of the directory. *Note Getting the
+ source::.
+
+ * Create the new file inside your working copy of the directory.
+
+ * Use 'cvs add FILENAME' to tell CVS that you want to version control
+ the file. If the file contains binary data, specify '-kb' (*note
+ Binary files::).
+
+ * Use 'cvs commit FILENAME' to actually check in the file into the
+ repository. Other developers cannot see the file until you perform
+ this step.
+
+ You can also use the 'add' command to add a new directory.
+
+ Unlike most other commands, the 'add' command is not recursive. You
+have to explicitly name files and directories that you wish to add to
+the repository. However, each directory will need to be added
+separately before you will be able to add new files to those
+directories.
+
+ $ mkdir -p foo/bar
+ $ cp ~/myfile foo/bar/myfile
+ $ cvs add foo foo/bar
+ $ cvs add foo/bar/myfile
+
+ -- Command: cvs add ['-k' kflag] ['-m' message] files ...
+
+ Schedule FILES to be added to the repository. The files or
+ directories specified with 'add' must already exist in the current
+ directory. To add a whole new directory hierarchy to the source
+ repository (for example, files received from a third-party vendor),
+ use the 'import' command instead. *Note import::.
+
+ The added files are not placed in the source repository until you
+ use 'commit' to make the change permanent. Doing an 'add' on a
+ file that was removed with the 'remove' command will undo the
+ effect of the 'remove', unless a 'commit' command intervened.
+ *Note Removing files::, for an example.
+
+ The '-k' option specifies the default way that this file will be
+ checked out; for more information see *note Substitution modes::.
+
+ The '-m' option specifies a description for the file. This
+ description appears in the history log (if it is enabled, *note
+ history file::). It will also be saved in the version history
+ inside the repository when the file is committed. The 'log'
+ command displays this description. The description can be changed
+ using 'admin -t'. *Note admin::. If you omit the '-m DESCRIPTION'
+ flag, an empty string will be used. You will not be prompted for a
+ description.
+
+ For example, the following commands add the file 'backend.c' to the
+repository:
+
+ $ cvs add backend.c
+ $ cvs commit -m "Early version. Not yet compilable." backend.c
+
+ When you add a file it is added only on the branch which you are
+working on (*note Branching and merging::). You can later merge the
+additions to another branch if you want (*note Merging adds and
+removals::).
+
+7.2 Removing files
+==================
+
+Directories change. New files are added, and old files disappear.
+Still, you want to be able to retrieve an exact copy of old releases.
+
+ Here is what you can do to remove a file, but remain able to retrieve
+old revisions:
+
+ * Make sure that you have not made any uncommitted modifications to
+ the file. *Note Viewing differences::, for one way to do that.
+ You can also use the 'status' or 'update' command. If you remove
+ the file without committing your changes, you will of course not be
+ able to retrieve the file as it was immediately before you deleted
+ it.
+
+ * Remove the file from your working copy of the directory. You can
+ for instance use 'rm'.
+
+ * Use 'cvs remove FILENAME' to tell CVS that you really want to
+ delete the file.
+
+ * Use 'cvs commit FILENAME' to actually perform the removal of the
+ file from the repository.
+
+ When you commit the removal of the file, CVS records the fact that
+the file no longer exists. It is possible for a file to exist on only
+some branches and not on others, or to re-add another file with the same
+name later. CVS will correctly create or not create the file, based on
+the '-r' and '-D' options specified to 'checkout' or 'update'.
+
+ -- Command: cvs remove [options] files ...
+
+ Schedule file(s) to be removed from the repository (files which
+ have not already been removed from the working directory are not
+ processed). This command does not actually remove the file from
+ the repository until you commit the removal. For a full list of
+ options, see *note Invoking CVS::.
+
+ Here is an example of removing several files:
+
+ $ cd test
+ $ rm *.c
+ $ cvs remove
+ cvs remove: Removing .
+ cvs remove: scheduling a.c for removal
+ cvs remove: scheduling b.c for removal
+ cvs remove: use 'cvs commit' to remove these files permanently
+ $ cvs ci -m "Removed unneeded files"
+ cvs commit: Examining .
+ cvs commit: Committing .
+
+ As a convenience you can remove the file and 'cvs remove' it in one
+step, by specifying the '-f' option. For example, the above example
+could also be done like this:
+
+ $ cd test
+ $ cvs remove -f *.c
+ cvs remove: scheduling a.c for removal
+ cvs remove: scheduling b.c for removal
+ cvs remove: use 'cvs commit' to remove these files permanently
+ $ cvs ci -m "Removed unneeded files"
+ cvs commit: Examining .
+ cvs commit: Committing .
+
+ If you execute 'remove' for a file, and then change your mind before
+you commit, you can undo the 'remove' with an 'add' command.
+
+ $ ls
+ CVS ja.h oj.c
+ $ rm oj.c
+ $ cvs remove oj.c
+ cvs remove: scheduling oj.c for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+ $ cvs add oj.c
+ U oj.c
+ cvs add: oj.c, version 1.1.1.1, resurrected
+
+ If you realize your mistake before you run the 'remove' command you
+can use 'update' to resurrect the file:
+
+ $ rm oj.c
+ $ cvs update oj.c
+ cvs update: warning: oj.c was lost
+ U oj.c
+
+ When you remove a file it is removed only on the branch which you are
+working on (*note Branching and merging::). You can later merge the
+removals to another branch if you want (*note Merging adds and
+removals::).
+
+7.3 Removing directories
+========================
+
+In concept, removing directories is somewhat similar to removing
+files--you want the directory to not exist in your current working
+directories, but you also want to be able to retrieve old releases in
+which the directory existed.
+
+ The way that you remove a directory is to remove all the files in it.
+You don't remove the directory itself; there is no way to do that.
+Instead you specify the '-P' option to 'cvs update' or 'cvs checkout',
+which will cause CVS to remove empty directories from working
+directories. (Note that 'cvs export' always removes empty directories.)
+Probably the best way to do this is to always specify '-P'; if you want
+an empty directory then put a dummy file (for example '.keepme') in it
+to prevent '-P' from removing it.
+
+ Note that '-P' is implied by the '-r' or '-D' options of 'checkout'.
+This way, CVS will be able to correctly create the directory or not
+depending on whether the particular version you are checking out
+contains any files in that directory.
+
+7.4 Moving and renaming files
+=============================
+
+Moving files to a different directory or renaming them is not difficult,
+but some of the ways in which this works may be non-obvious. (Moving or
+renaming a directory is even harder. *Note Moving directories::.).
+
+ The examples below assume that the file OLD is renamed to NEW.
+
+7.4.1 The Normal way to Rename
+------------------------------
+
+The normal way to move a file is to copy OLD to NEW, and then issue the
+normal CVS commands to remove OLD from the repository, and add NEW to
+it.
+
+ $ mv OLD NEW
+ $ cvs remove OLD
+ $ cvs add NEW
+ $ cvs commit -m "Renamed OLD to NEW" OLD NEW
+
+ This is the simplest way to move a file, it is not error-prone, and
+it preserves the history of what was done. Note that to access the
+history of the file you must specify the old or the new name, depending
+on what portion of the history you are accessing. For example, 'cvs log
+OLD' will give the log up until the time of the rename.
+
+ When NEW is committed its revision numbers will start again, usually
+at 1.1, so if that bothers you, use the '-r rev' option to commit. For
+more information see *note Assigning revisions::.
+
+7.4.2 Moving the history file
+-----------------------------
+
+This method is more dangerous, since it involves moving files inside the
+repository. Read this entire section before trying it out!
+
+ $ cd $CVSROOT/DIR
+ $ mv OLD,v NEW,v
+
+Advantages:
+
+ * The log of changes is maintained intact.
+
+ * The revision numbers are not affected.
+
+Disadvantages:
+
+ * Old releases cannot easily be fetched from the repository. (The
+ file will show up as NEW even in revisions from the time before it
+ was renamed).
+
+ * There is no log information of when the file was renamed.
+
+ * Nasty things might happen if someone accesses the history file
+ while you are moving it. Make sure no one else runs any of the CVS
+ commands while you move it.
+
+7.4.3 Copying the history file
+------------------------------
+
+This way also involves direct modifications to the repository. It is
+safe, but not without drawbacks.
+
+ # Copy the RCS file inside the repository
+ $ cd $CVSROOT/DIR
+ $ cp OLD,v NEW,v
+ # Remove the old file
+ $ cd ~/DIR
+ $ rm OLD
+ $ cvs remove OLD
+ $ cvs commit OLD
+ # Remove all tags from NEW
+ $ cvs update NEW
+ $ cvs log NEW # Remember the non-branch tag names
+ $ cvs tag -d TAG1 NEW
+ $ cvs tag -d TAG2 NEW
+ ...
+
+ By removing the tags you will be able to check out old revisions.
+
+Advantages:
+
+ * Checking out old revisions works correctly, as long as you use
+ '-rTAG' and not '-DDATE' to retrieve the revisions.
+
+ * The log of changes is maintained intact.
+
+ * The revision numbers are not affected.
+
+Disadvantages:
+
+ * You cannot easily see the history of the file across the rename.
+
+7.5 Moving and renaming directories
+===================================
+
+The normal way to rename or move a directory is to rename or move each
+file within it as described in *note Outside::. Then check out with the
+'-P' option, as described in *note Removing directories::.
+
+ If you really want to hack the repository to rename or delete a
+directory in the repository, you can do it like this:
+
+ 1. Inform everyone who has a checked out copy of the directory that
+ the directory will be renamed. They should commit all their
+ changes in all their copies of the project containing the directory
+ to be removed, and remove all their working copies of said project,
+ before you take the steps below.
+
+ 2. Rename the directory inside the repository.
+
+ $ cd $CVSROOT/PARENT-DIR
+ $ mv OLD-DIR NEW-DIR
+
+ 3. Fix the CVS administrative files, if necessary (for instance if you
+ renamed an entire module).
+
+ 4. Tell everyone that they can check out again and continue working.
+
+ If someone had a working copy the CVS commands will cease to work for
+him, until he removes the directory that disappeared inside the
+repository.
+
+ It is almost always better to move the files in the directory instead
+of moving the directory. If you move the directory you are unlikely to
+be able to retrieve old releases correctly, since they probably depend
+on the name of the directories.
+
+8 History browsing
+******************
+
+Once you have used CVS to store a version control history--what files
+have changed when, how, and by whom, there are a variety of mechanisms
+for looking through the history.
+
+8.1 Log messages
+================
+
+Whenever you commit a file you specify a log message.
+
+ To look through the log messages which have been specified for every
+revision which has been committed, use the 'cvs log' command (*note
+log::).
+
+8.2 The history database
+========================
+
+You can use the history file (*note history file::) to log various CVS
+actions. To retrieve the information from the history file, use the
+'cvs history' command (*note history::).
+
+ Note: you can control what is logged to this file by using the
+'LogHistory' keyword in the 'CVSROOT/config' file (*note config::).
+
+8.3 User-defined logging
+========================
+
+You can customize CVS to log various kinds of actions, in whatever
+manner you choose. These mechanisms operate by executing a script at
+various times. The script might append a message to a file listing the
+information and the programmer who created it, or send mail to a group
+of developers, or, perhaps, post a message to a particular newsgroup.
+To log commits, use the 'loginfo' file (*note loginfo::). To log tags,
+use the 'taginfo' file (*note taginfo::). To log checkouts, exports,
+and tags, respectively, you can also use the '-o', '-e', and '-t'
+options in the modules file. For a more flexible way of giving
+notifications to various users, which requires less in the way of
+keeping centralized scripts up to date, use the 'cvs watch add' command
+(*note Getting Notified::); this command is useful even if you are not
+using 'cvs watch on'.
+
+9 Handling binary files
+***********************
+
+The most common use for CVS is to store text files. With text files,
+CVS can merge revisions, display the differences between revisions in a
+human-visible fashion, and other such operations. However, if you are
+willing to give up a few of these abilities, CVS can store binary files.
+For example, one might store a web site in CVS including both text files
+and binary images.
+
+9.1 The issues with binary files
+================================
+
+While the need to manage binary files may seem obvious if the files that
+you customarily work with are binary, putting them into version control
+does present some additional issues.
+
+ One basic function of version control is to show the differences
+between two revisions. For example, if someone else checked in a new
+version of a file, you may wish to look at what they changed and
+determine whether their changes are good. For text files, CVS provides
+this functionality via the 'cvs diff' command. For binary files, it may
+be possible to extract the two revisions and then compare them with a
+tool external to CVS (for example, word processing software often has
+such a feature). If there is no such tool, one must track changes via
+other mechanisms, such as urging people to write good log messages, and
+hoping that the changes they actually made were the changes that they
+intended to make.
+
+ Another ability of a version control system is the ability to merge
+two revisions. For CVS this happens in two contexts. The first is when
+users make changes in separate working directories (*note Multiple
+developers::). The second is when one merges explicitly with the
+'update -j' command (*note Branching and merging::).
+
+ In the case of text files, CVS can merge changes made independently,
+and signal a conflict if the changes conflict. With binary files, the
+best that CVS can do is present the two different copies of the file,
+and leave it to the user to resolve the conflict. The user may choose
+one copy or the other, or may run an external merge tool which knows
+about that particular file format, if one exists. Note that having the
+user merge relies primarily on the user to not accidentally omit some
+changes, and thus is potentially error prone.
+
+ If this process is thought to be undesirable, the best choice may be
+to avoid merging. To avoid the merges that result from separate working
+directories, see the discussion of reserved checkouts (file locking) in
+*note Multiple developers::. To avoid the merges resulting from
+branches, restrict use of branches.
+
+9.2 How to store binary files
+=============================
+
+There are two issues with using CVS to store binary files. The first is
+that CVS by default converts line endings between the canonical form in
+which they are stored in the repository (linefeed only), and the form
+appropriate to the operating system in use on the client (for example,
+carriage return followed by line feed for Windows NT).
+
+ The second is that a binary file might happen to contain data which
+looks like a keyword (*note Keyword substitution::), so keyword
+expansion must be turned off.
+
+ The '-kb' option available with some CVS commands insures that
+neither line ending conversion nor keyword expansion will be done.
+
+ Here is an example of how you can create a new file using the '-kb'
+flag:
+
+ $ echo '$Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $' > kotest
+ $ cvs add -kb -m"A test file" kotest
+ $ cvs ci -m"First checkin; contains a keyword" kotest
+
+ If a file accidentally gets added without '-kb', one can use the 'cvs
+admin' command to recover. For example:
+
+ $ echo '$Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $' > kotest
+ $ cvs add -m"A test file" kotest
+ $ cvs ci -m"First checkin; contains a keyword" kotest
+ $ cvs admin -kb kotest
+ $ cvs update -A kotest
+ # For non-unix systems:
+ # Copy in a good copy of the file from outside CVS
+ $ cvs commit -m "make it binary" kotest
+
+ When you check in the file 'kotest' the file is not preserved as a
+binary file, because you did not check it in as a binary file. The 'cvs
+admin -kb' command sets the default keyword substitution method for this
+file, but it does not alter the working copy of the file that you have.
+If you need to cope with line endings (that is, you are using CVS on a
+non-unix system), then you need to check in a new copy of the file, as
+shown by the 'cvs commit' command above. On unix, the 'cvs update -A'
+command suffices. (Note that you can use 'cvs log' to determine the
+default keyword substitution method for a file and 'cvs status' to
+determine the keyword substitution method for a working copy.)
+
+ However, in using 'cvs admin -k' to change the keyword expansion, be
+aware that the keyword expansion mode is not version controlled. This
+means that, for example, that if you have a text file in old releases,
+and a binary file with the same name in new releases, CVS provides no
+way to check out the file in text or binary mode depending on what
+version you are checking out. There is no good workaround for this
+problem.
+
+ You can also set a default for whether 'cvs add' and 'cvs import'
+treat a file as binary based on its name; for example you could say that
+files who names end in '.exe' are binary. *Note Wrappers::. There is
+currently no way to have CVS detect whether a file is binary based on
+its contents. The main difficulty with designing such a feature is that
+it is not clear how to distinguish between binary and non-binary files,
+and the rules to apply would vary considerably with the operating
+system.
+
+10 Multiple developers
+**********************
+
+When more than one person works on a software project things often get
+complicated. Often, two people try to edit the same file
+simultaneously. One solution, known as "file locking" or "reserved
+checkouts", is to allow only one person to edit each file at a time.
+This is the only solution with some version control systems, including
+RCS and SCCS. Currently the usual way to get reserved checkouts with
+CVS is the 'cvs admin -l' command (*note admin options::). This is not
+as nicely integrated into CVS as the watch features, described below,
+but it seems that most people with a need for reserved checkouts find it
+adequate. It also may be possible to use the watches features described
+below, together with suitable procedures (not enforced by software), to
+avoid having two people edit at the same time.
+
+ The default model with CVS is known as "unreserved checkouts". In
+this model, developers can edit their own "working copy" of a file
+simultaneously. The first person that commits his changes has no
+automatic way of knowing that another has started to edit it. Others
+will get an error message when they try to commit the file. They must
+then use CVS commands to bring their working copy up to date with the
+repository revision. This process is almost automatic.
+
+ CVS also supports mechanisms which facilitate various kinds of
+communication, without actually enforcing rules like reserved checkouts
+do.
+
+ The rest of this chapter describes how these various models work, and
+some of the issues involved in choosing between them.
+
+10.1 File status
+================
+
+Based on what operations you have performed on a checked out file, and
+what operations others have performed to that file in the repository,
+one can classify a file in a number of states. The states, as reported
+by the 'status' command, are:
+
+Up-to-date
+ The file is identical with the latest revision in the repository
+ for the branch in use.
+
+Locally Modified
+ You have edited the file, and not yet committed your changes.
+
+Locally Added
+ You have added the file with 'add', and not yet committed your
+ changes.
+
+Locally Removed
+ You have removed the file with 'remove', and not yet committed your
+ changes.
+
+Needs Checkout
+ Someone else has committed a newer revision to the repository. The
+ name is slightly misleading; you will ordinarily use 'update'
+ rather than 'checkout' to get that newer revision.
+
+Needs Patch
+ Like Needs Checkout, but the CVS server will send a patch rather
+ than the entire file. Sending a patch or sending an entire file
+ accomplishes the same thing.
+
+Needs Merge
+ Someone else has committed a newer revision to the repository, and
+ you have also made modifications to the file.
+
+Unresolved Conflict
+ A file with the same name as this new file has been added to the
+ repository from a second workspace. This file will need to be
+ moved out of the way to allow an 'update' to complete.
+
+File had conflicts on merge
+ This is like Locally Modified, except that a previous 'update'
+ command gave a conflict. If you have not already done so, you need
+ to resolve the conflict as described in *note Conflicts example::.
+
+Unknown
+ CVS doesn't know anything about this file. For example, you have
+ created a new file and have not run 'add'.
+
+ To help clarify the file status, 'status' also reports the 'Working
+revision' which is the revision that the file in the working directory
+derives from, and the 'Repository revision' which is the latest revision
+in the repository for the branch in use.
+
+ The options to 'status' are listed in *note Invoking CVS::. For
+information on its 'Sticky tag' and 'Sticky date' output, see *note
+Sticky tags::. For information on its 'Sticky options' output, see the
+'-k' option in *note update options::.
+
+ You can think of the 'status' and 'update' commands as somewhat
+complementary. You use 'update' to bring your files up to date, and you
+can use 'status' to give you some idea of what an 'update' would do (of
+course, the state of the repository might change before you actually run
+'update'). In fact, if you want a command to display file status in a
+more brief format than is displayed by the 'status' command, you can
+invoke
+
+ $ cvs -n -q update
+
+ The '-n' option means to not actually do the update, but merely to
+display statuses; the '-q' option avoids printing the name of each
+directory. For more information on the 'update' command, and these
+options, see *note Invoking CVS::.
+
+10.2 Bringing a file up to date
+===============================
+
+When you want to update or merge a file, use the 'cvs update -d'
+command. For files that are not up to date this is roughly equivalent
+to a 'checkout' command: the newest revision of the file is extracted
+from the repository and put in your working directory. The '-d' option,
+not necessary with 'checkout', tells CVS that you wish it to create
+directories added by other developers.
+
+ Your modifications to a file are never lost when you use 'update'.
+If no newer revision exists, running 'update' has no effect. If you
+have edited the file, and a newer revision is available, CVS will merge
+all changes into your working copy.
+
+ For instance, imagine that you checked out revision 1.4 and started
+editing it. In the meantime someone else committed revision 1.5, and
+shortly after that revision 1.6. If you run 'update' on the file now,
+CVS will incorporate all changes between revision 1.4 and 1.6 into your
+file.
+
+ If any of the changes between 1.4 and 1.6 were made too close to any
+of the changes you have made, an "overlap" occurs. In such cases a
+warning is printed, and the resulting file includes both versions of the
+lines that overlap, delimited by special markers. *Note update::, for a
+complete description of the 'update' command.
+
+10.3 Conflicts example
+======================
+
+Suppose revision 1.4 of 'driver.c' contains this:
+
+ #include <stdio.h>
+
+ void main()
+ {
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? 0 : 1);
+ }
+
+Revision 1.6 of 'driver.c' contains this:
+
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(!!nerr);
+ }
+
+Your working copy of 'driver.c', based on revision 1.4, contains this
+before you run 'cvs update':
+
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ void main()
+ {
+ init_scanner();
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ }
+
+You run 'cvs update':
+
+ $ cvs update driver.c
+ RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
+ retrieving revision 1.4
+ retrieving revision 1.6
+ Merging differences between 1.4 and 1.6 into driver.c
+ rcsmerge warning: overlaps during merge
+ cvs update: conflicts found in driver.c
+ C driver.c
+
+CVS tells you that there were some conflicts. Your original working
+file is saved unmodified in '.#driver.c.1.4'. The new version of
+'driver.c' contains this:
+
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ <<<<<<< driver.c
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ =======
+ exit(!!nerr);
+ >>>>>>> 1.6
+ }
+
+ Note how all non-overlapping modifications are incorporated in your
+working copy, and that the overlapping section is clearly marked with
+'<<<<<<<', '=======' and '>>>>>>>'.
+
+ You resolve the conflict by editing the file, removing the markers
+and the erroneous line. Suppose you end up with this file:
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ }
+
+You can now go ahead and commit this as revision 1.7.
+
+ $ cvs commit -m "Initialize scanner. Use symbolic exit values." driver.c
+ Checking in driver.c;
+ /usr/local/cvsroot/yoyodyne/tc/driver.c,v <-- driver.c
+ new revision: 1.7; previous revision: 1.6
+ done
+
+ For your protection, CVS will refuse to check in a file if a conflict
+occurred and you have not resolved the conflict. Currently to resolve a
+conflict, you must change the timestamp on the file. In previous
+versions of CVS, you also needed to insure that the file contains no
+conflict markers. Because your file may legitimately contain conflict
+markers (that is, occurrences of '>>>>>>> ' at the start of a line that
+don't mark a conflict), the current version of CVS will print a warning
+and proceed to check in the file.
+
+ If you use release 1.04 or later of pcl-cvs (a GNU Emacs front-end
+for CVS) you can use an Emacs package called emerge to help you resolve
+conflicts. See the documentation for pcl-cvs.
+
+10.4 Informing others about commits
+===================================
+
+It is often useful to inform others when you commit a new revision of a
+file. The 'loginfo' file can be used to automate this process. *Note
+loginfo::. You can use these features of CVS to, for instance, instruct
+CVS to mail a message to all developers, or post a message to a local
+newsgroup.
+
+10.5 Several developers simultaneously attempting to run CVS
+============================================================
+
+If several developers try to run CVS at the same time, one may get the
+following message:
+
+ [11:43:23] waiting for bach's lock in /usr/local/cvsroot/foo
+
+ CVS will try again every 30 seconds, and either continue with the
+operation or print the message again, if it still needs to wait. If a
+lock seems to stick around for an undue amount of time, find the person
+holding the lock and ask them about the cvs command they are running.
+If they aren't running a cvs command, look in the repository directory
+mentioned in the message and remove files which they own whose names
+start with '#cvs.rfl', '#cvs.wfl', or '#cvs.lock'.
+
+ Note that these locks are to protect CVS's internal data structures
+and have no relationship to the word "lock" in the sense used by
+RCS--which refers to reserved checkouts (*note Multiple developers::).
+
+ Any number of people can be reading from a given repository at a
+time; only when someone is writing do the locks prevent other people
+from reading or writing.
+
+ One might hope for the following property:
+
+ If someone commits some changes in one cvs command, then an update
+ by someone else will either get all the changes, or none of them.
+
+but CVS does _not_ have this property. For example, given the files
+
+ a/one.c
+ a/two.c
+ b/three.c
+ b/four.c
+
+if someone runs
+
+ cvs ci a/two.c b/three.c
+
+and someone else runs 'cvs update' at the same time, the person running
+'update' might get only the change to 'b/three.c' and not the change to
+'a/two.c'.
+
+10.6 Mechanisms to track who is editing files
+=============================================
+
+For many groups, use of CVS in its default mode is perfectly
+satisfactory. Users may sometimes go to check in a modification only to
+find that another modification has intervened, but they deal with it and
+proceed with their check in. Other groups prefer to be able to know who
+is editing what files, so that if two people try to edit the same file
+they can choose to talk about who is doing what when rather than be
+surprised at check in time. The features in this section allow such
+coordination, while retaining the ability of two developers to edit the
+same file at the same time.
+
+ For maximum benefit developers should use 'cvs edit' (not 'chmod') to
+make files read-write to edit them, and 'cvs release' (not 'rm') to
+discard a working directory which is no longer in use, but CVS is not
+able to enforce this behavior.
+
+10.6.1 Telling CVS to watch certain files
+-----------------------------------------
+
+To enable the watch features, you first specify that certain files are
+to be watched.
+
+ -- Command: cvs watch on ['-lR'] [FILES]...
+
+ Specify that developers should run 'cvs edit' before editing FILES.
+ CVS will create working copies of FILES read-only, to remind
+ developers to run the 'cvs edit' command before working on them.
+
+ If FILES includes the name of a directory, CVS arranges to watch
+ all files added to the corresponding repository directory, and sets
+ a default for files added in the future; this allows the user to
+ set notification policies on a per-directory basis. The contents
+ of the directory are processed recursively, unless the '-l' option
+ is given. The '-R' option can be used to force recursion if the
+ '-l' option is set in '~/.cvsrc' (*note ~/.cvsrc::).
+
+ If FILES is omitted, it defaults to the current directory.
+
+ -- Command: cvs watch off ['-lR'] [FILES]...
+
+ Do not create FILES read-only on checkout; thus, developers will
+ not be reminded to use 'cvs edit' and 'cvs unedit'.
+
+ The FILES and options are processed as for 'cvs watch on'.
+
+10.6.2 Telling CVS to notify you
+--------------------------------
+
+You can tell CVS that you want to receive notifications about various
+actions taken on a file. You can do this without using 'cvs watch on'
+for the file, but generally you will want to use 'cvs watch on', to
+remind developers to use the 'cvs edit' command.
+
+ -- Command: cvs watch add ['-lR'] ['-a' ACTION]... [FILES]...
+
+ Add the current user to the list of people to receive notification
+ of work done on FILES.
+
+ The '-a' option specifies what kinds of events CVS should notify
+ the user about. ACTION is one of the following:
+
+ 'edit'
+ Another user has applied the 'cvs edit' command (described
+ below) to a watched file.
+
+ 'commit'
+ Another user has committed changes to one of the named FILES.
+
+ 'unedit'
+ Another user has abandoned editing a file (other than by
+ committing changes). They can do this in several ways, by:
+
+ * applying the 'cvs unedit' command (described below) to
+ the file
+
+ * applying the 'cvs release' command (*note release::) to
+ the file's parent directory (or recursively to a
+ directory more than one level up)
+
+ * deleting the file and allowing 'cvs update' to recreate
+ it
+
+ 'all'
+ All of the above.
+
+ 'none'
+ None of the above. (This is useful with 'cvs edit', described
+ below.)
+
+ The '-a' option may appear more than once, or not at all. If
+ omitted, the action defaults to 'all'.
+
+ The FILES and options are processed as for 'cvs watch on'.
+
+ -- Command: cvs watch remove ['-lR'] ['-a' ACTION]... [FILES]...
+
+ Remove a notification request established using 'cvs watch add';
+ the arguments are the same. If the '-a' option is present, only
+ watches for the specified actions are removed.
+
+ When the conditions exist for notification, CVS calls the 'notify'
+administrative file. Edit 'notify' as one edits the other
+administrative files (*note Intro administrative files::). This file
+follows the usual conventions for administrative files (*note syntax::),
+where each line is a regular expression followed by a command to
+execute. The command should contain a single occurrence of '%s' which
+will be replaced by the user to notify; the rest of the information
+regarding the notification will be supplied to the command on standard
+input. The standard thing to put in the 'notify' file is the single
+line:
+
+ ALL mail %s -s "CVS notification"
+
+This causes users to be notified by electronic mail.
+
+ Note that if you set this up in the straightforward way, users
+receive notifications on the server machine. One could of course write
+a 'notify' script which directed notifications elsewhere, but to make
+this easy, CVS allows you to associate a notification address for each
+user. To do so create a file 'users' in 'CVSROOT' with a line for each
+user in the format USER:VALUE. Then instead of passing the name of the
+user to be notified to 'notify', CVS will pass the VALUE (normally an
+email address on some other machine).
+
+ CVS does not notify you for your own changes. Currently this check
+is done based on whether the user name of the person taking the action
+which triggers notification matches the user name of the person getting
+notification. In fact, in general, the watches features only track one
+edit by each user. It probably would be more useful if watches tracked
+each working directory separately, so this behavior might be worth
+changing.
+
+10.6.3 How to edit a file which is being watched
+------------------------------------------------
+
+Since a file which is being watched is checked out read-only, you cannot
+simply edit it. To make it read-write, and inform others that you are
+planning to edit it, use the 'cvs edit' command. Some systems call this
+a "checkout", but CVS uses that term for obtaining a copy of the sources
+(*note Getting the source::), an operation which those systems call a
+"get" or a "fetch".
+
+ -- Command: cvs edit ['-lR'] ['-a' ACTION]... [FILES]...
+
+ Prepare to edit the working files FILES. CVS makes the FILES
+ read-write, and notifies users who have requested 'edit'
+ notification for any of FILES.
+
+ The 'cvs edit' command accepts the same options as the 'cvs watch
+ add' command, and establishes a temporary watch for the user on
+ FILES; CVS will remove the watch when FILES are 'unedit'ed or
+ 'commit'ted. If the user does not wish to receive notifications,
+ she should specify '-a none'.
+
+ The FILES and the options are processed as for the 'cvs watch'
+ commands.
+
+ Normally when you are done with a set of changes, you use the 'cvs
+commit' command, which checks in your changes and returns the watched
+files to their usual read-only state. But if you instead decide to
+abandon your changes, or not to make any changes, you can use the 'cvs
+unedit' command.
+
+ -- Command: cvs unedit ['-lR'] [FILES]...
+
+ Abandon work on the working files FILES, and revert them to the
+ repository versions on which they are based. CVS makes those FILES
+ read-only for which users have requested notification using 'cvs
+ watch on'. CVS notifies users who have requested 'unedit'
+ notification for any of FILES.
+
+ The FILES and options are processed as for the 'cvs watch'
+ commands.
+
+ If watches are not in use, the 'unedit' command probably does not
+ work, and the way to revert to the repository version is with the
+ command 'cvs update -C file' (*note update::). The meaning is not
+ precisely the same; the latter may also bring in some changes which
+ have been made in the repository since the last time you updated.
+
+ When using client/server CVS, you can use the 'cvs edit' and 'cvs
+unedit' commands even if CVS is unable to successfully communicate with
+the server; the notifications will be sent upon the next successful CVS
+command.
+
+10.6.4 Information about who is watching and editing
+----------------------------------------------------
+
+ -- Command: cvs watchers ['-lR'] [FILES]...
+
+ List the users currently watching changes to FILES. The report
+ includes the files being watched, and the mail address of each
+ watcher.
+
+ The FILES and options are processed as for the 'cvs watch'
+ commands.
+
+ -- Command: cvs editors ['-lR'] [FILES]...
+
+ List the users currently working on FILES. The report includes the
+ mail address of each user, the time when the user began working
+ with the file, and the host and path of the working directory
+ containing the file.
+
+ The FILES and options are processed as for the 'cvs watch'
+ commands.
+
+10.6.5 Using watches with old versions of CVS
+---------------------------------------------
+
+If you use the watch features on a repository, it creates 'CVS'
+directories in the repository and stores the information about watches
+in that directory. If you attempt to use CVS 1.6 or earlier with the
+repository, you get an error message such as the following (all on one
+line):
+
+ cvs update: cannot open CVS/Entries for reading:
+ No such file or directory
+
+and your operation will likely be aborted. To use the watch features,
+you must upgrade all copies of CVS which use that repository in local or
+server mode. If you cannot upgrade, use the 'watch off' and 'watch
+remove' commands to remove all watches, and that will restore the
+repository to a state which CVS 1.6 can cope with.
+
+10.7 Choosing between reserved or unreserved checkouts
+======================================================
+
+Reserved and unreserved checkouts each have pros and cons. Let it be
+said that a lot of this is a matter of opinion or what works given
+different groups' working styles, but here is a brief description of
+some of the issues. There are many ways to organize a team of
+developers. CVS does not try to enforce a certain organization. It is
+a tool that can be used in several ways.
+
+ Reserved checkouts can be very counter-productive. If two persons
+want to edit different parts of a file, there may be no reason to
+prevent either of them from doing so. Also, it is common for someone to
+take out a lock on a file, because they are planning to edit it, but
+then forget to release the lock.
+
+ People, especially people who are familiar with reserved checkouts,
+often wonder how often conflicts occur if unreserved checkouts are used,
+and how difficult they are to resolve. The experience with many groups
+is that they occur rarely and usually are relatively straightforward to
+resolve.
+
+ The rarity of serious conflicts may be surprising, until one realizes
+that they occur only when two developers disagree on the proper design
+for a given section of code; such a disagreement suggests that the team
+has not been communicating properly in the first place. In order to
+collaborate under _any_ source management regimen, developers must agree
+on the general design of the system; given this agreement, overlapping
+changes are usually straightforward to merge.
+
+ In some cases unreserved checkouts are clearly inappropriate. If no
+merge tool exists for the kind of file you are managing (for example
+word processor files or files edited by Computer Aided Design programs),
+and it is not desirable to change to a program which uses a mergeable
+data format, then resolving conflicts is going to be unpleasant enough
+that you generally will be better off to simply avoid the conflicts
+instead, by using reserved checkouts.
+
+ The watches features described above in *note Watches:: can be
+considered to be an intermediate model between reserved checkouts and
+unreserved checkouts. When you go to edit a file, it is possible to
+find out who else is editing it. And rather than having the system
+simply forbid both people editing the file, it can tell you what the
+situation is and let you figure out whether it is a problem in that
+particular case or not. Therefore, for some groups it can be considered
+the best of both the reserved checkout and unreserved checkout worlds.
+
+11 Revision management
+**********************
+
+If you have read this far, you probably have a pretty good grasp on what
+CVS can do for you. This chapter talks a little about things that you
+still have to decide.
+
+ If you are doing development on your own using CVS you could probably
+skip this chapter. The questions this chapter takes up become more
+important when more than one person is working in a repository.
+
+11.1 When to commit?
+====================
+
+Your group should decide which policy to use regarding commits. Several
+policies are possible, and as your experience with CVS grows you will
+probably find out what works for you.
+
+ If you commit files too quickly you might commit files that do not
+even compile. If your partner updates his working sources to include
+your buggy file, he will be unable to compile the code. On the other
+hand, other persons will not be able to benefit from the improvements
+you make to the code if you commit very seldom, and conflicts will
+probably be more common.
+
+ It is common to only commit files after making sure that they can be
+compiled. Some sites require that the files pass a test suite.
+Policies like this can be enforced using the commitinfo file (*note
+commitinfo::), but you should think twice before you enforce such a
+convention. By making the development environment too controlled it
+might become too regimented and thus counter-productive to the real
+goal, which is to get software written.
+
+12 Keyword substitution
+***********************
+
+As long as you edit source files inside a working directory you can
+always find out the state of your files via 'cvs status' and 'cvs log'.
+But as soon as you export the files from your development environment it
+becomes harder to identify which revisions they are.
+
+ CVS can use a mechanism known as "keyword substitution" (or "keyword
+expansion") to help identifying the files. Embedded strings of the form
+'$KEYWORD$' and '$KEYWORD:...$' in a file are replaced with strings of
+the form '$KEYWORD:VALUE$' whenever you obtain a new revision of the
+file.
+
+12.1 Keyword List
+=================
+
+This is a list of the keywords:
+
+'$Author: ineiev $'
+ The login name of the user who checked in the revision.
+
+'$Date: 2015/12/28 15:57:44 $'
+ The date and time (UTC) the revision was checked in.
+
+'$Header: /web/trans-coord/trans-coord/manual/cvs/cvs.txt,v 1.1 2015/12/28
15:57:44 ineiev Exp $'
+ A standard header containing the full pathname of the RCS file, the
+ revision number, the date (UTC), the author, the state, and the
+ locker (if locked). Files will normally never be locked when you
+ use CVS.
+
+'$Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $'
+ Same as '$Header: /web/trans-coord/trans-coord/manual/cvs/cvs.txt,v 1.1
2015/12/28 15:57:44 ineiev Exp $', except that the RCS filename is without a
path.
+
+'$Name: $'
+ Tag name used to check out this file. The keyword is expanded only
+ if one checks out with an explicit tag name. For example, when
+ running the command 'cvs co -r first', the keyword expands to
+ 'Name: first'.
+
+'$Locker: $'
+ The login name of the user who locked the revision (empty if not
+ locked, which is the normal case unless 'cvs admin -l' is in use).
+
+'$Log: cvs.txt,v $
+'Revision 1.1 2015/12/28 15:57:44 ineiev
+'Add cvs manual RT #1073518.
+''
+ The log message supplied during commit, preceded by a header
+ containing the RCS filename, the revision number, the author, and
+ the date (UTC). Existing log messages are _not_ replaced. Instead,
+ the new log message is inserted after '$Log:...$'. Each new line
+ is prefixed with the same string which precedes the '$Log' keyword.
+ For example, if the file contains:
+
+ /* Here is what people have been up to:
+ *
+ * $Log: cvs.txt,v $
+ * Revision 1.1 2015/12/28 15:57:44 ineiev
+ * Add cvs manual RT #1073518.
+ *
+ * Revision 1.1 1997/01/03 14:23:51 joe
+ * Add the superfrobnicate option
+ *
+ */
+
+ then additional lines which are added when expanding the '$Log'
+ keyword will be preceded by ' * '. Unlike previous versions of CVS
+ and RCS, the "comment leader" from the RCS file is not used. The
+ '$Log' keyword is useful for accumulating a complete change log in
+ a source file, but for several reasons it can be problematic.
+ *Note Log keyword::.
+
+'$RCSfile: cvs.txt,v $'
+ The name of the RCS file without a path.
+
+'$Revision: 1.1 $'
+ The revision number assigned to the revision.
+
+'$Source: /web/trans-coord/trans-coord/manual/cvs/cvs.txt,v $'
+ The full pathname of the RCS file.
+
+'$State: Exp $'
+ The state assigned to the revision. States can be assigned with
+ 'cvs admin -s'--see *note admin options::.
+
+12.2 Using keywords
+===================
+
+To include a keyword string you simply include the relevant text string,
+such as '$Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $', inside the
file, and commit the file. CVS will
+automatically (Or, more accurately, as part of the update run that
+automatically happens after a commit.) expand the string as part of the
+commit operation.
+
+ It is common to embed the '$Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev
Exp $' string in the source files so that
+it gets passed through to generated files. For example, if you are
+managing computer program source code, you might include a variable
+which is initialized to contain that string. Or some C compilers may
+provide a '#pragma ident' directive. Or a document management system
+might provide a way to pass a string through to generated files.
+
+ The 'ident' command (which is part of the RCS package) can be used to
+extract keywords and their values from a file. This can be handy for
+text files, but it is even more useful for extracting keywords from
+binary files.
+
+ $ ident samp.c
+ samp.c:
+ $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+ $ gcc samp.c
+ $ ident a.out
+ a.out:
+ $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+
+ SCCS is another popular revision control system. It has a command,
+'what', which is very similar to 'ident' and used for the same purpose.
+Many sites without RCS have SCCS. Since 'what' looks for the character
+sequence '@(#)' it is easy to include keywords that are detected by
+either command. Simply prefix the keyword with the magic SCCS phrase,
+like this:
+
+ static char *id="@(#) $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp
$";
+
+12.3 Avoiding substitution
+==========================
+
+Keyword substitution has its disadvantages. Sometimes you might want
+the literal text string '$Author: ineiev $' to appear inside a file without CVS
+interpreting it as a keyword and expanding it into something like
+'$Author: ineiev $'.
+
+ There is unfortunately no way to selectively turn off keyword
+substitution. You can use '-ko' (*note Substitution modes::) to turn
+off keyword substitution entirely.
+
+ In many cases you can avoid using keywords in the source, even though
+they appear in the final product. For example, the source for this
+manual contains 'address@hidden' whenever the text '$Author: ineiev $' should
+appear. In 'nroff' and 'troff' you can embed the null-character '\&'
+inside the keyword for a similar effect.
+
+12.4 Substitution modes
+=======================
+
+Each file has a stored default substitution mode, and each working
+directory copy of a file also has a substitution mode. The former is
+set by the '-k' option to 'cvs add' and 'cvs admin'; the latter is set
+by the '-k' or '-A' options to 'cvs checkout' or 'cvs update'. 'cvs
+diff' and 'cvs rdiff' also have '-k' options. For some examples, see
+*note Binary files::, and *note Merging and keywords::.
+
+ The modes available are:
+
+'-kkv'
+ Generate keyword strings using the default form, e.g. '$Revision:
+ 5.7 $' for the 'Revision' keyword.
+
+'-kkvl'
+ Like '-kkv', except that a locker's name is always inserted if the
+ given revision is currently locked. The locker's name is only
+ relevant if 'cvs admin -l' is in use.
+
+'-kk'
+ Generate only keyword names in keyword strings; omit their values.
+ For example, for the 'Revision' keyword, generate the string
+ '$Revision: 1.1 $' instead of '$Revision: 1.1 $'. This option is useful
+ to ignore differences due to keyword substitution when comparing
+ different revisions of a file (*note Merging and keywords::).
+
+'-ko'
+ Generate the old keyword string, present in the working file just
+ before it was checked in. For example, for the 'Revision' keyword,
+ generate the string '$Revision: 1.1 $' instead of '$Revision: 5.7
+ $' if that is how the string appeared when the file was checked in.
+
+'-kb'
+ Like '-ko', but also inhibit conversion of line endings between the
+ canonical form in which they are stored in the repository (linefeed
+ only), and the form appropriate to the operating system in use on
+ the client. For systems, like unix, which use linefeed only to
+ terminate lines, this is the same as '-ko'. For more information
+ on binary files, see *note Binary files::.
+
+'-kv'
+ Generate only keyword values for keyword strings. For example, for
+ the 'Revision' keyword, generate the string '5.7' instead of
+ '$Revision: 1.1 $'. This can help generate files in programming
+ languages where it is hard to strip keyword delimiters like
+ '$Revision: 1.1 $' from a string. However, further keyword
+ substitution cannot be performed once the keyword names are
+ removed, so this option should be used with care.
+
+ One often would like to use '-kv' with 'cvs export'--*note
+ export::. But be aware that doesn't handle an export containing
+ binary files correctly.
+
+12.5 Problems with the $Log$ keyword.
+=====================================
+
+The '$Log: cvs.txt,v $
+The 'Revision 1.1 2015/12/28 15:57:44 ineiev
+The 'Add cvs manual RT #1073518.
+The '' keyword is somewhat controversial. As long as you are
+working on your development system the information is easily accessible
+even if you do not use the '$Log$' keyword--just do a 'cvs log'. Once
+you export the file the history information might be useless anyhow.
+
+ A more serious concern is that CVS is not good at handling '$Log$'
+entries when a branch is merged onto the main trunk. Conflicts often
+result from the merging operation.
+
+ People also tend to "fix" the log entries in the file (correcting
+spelling mistakes and maybe even factual errors). If that is done the
+information from 'cvs log' will not be consistent with the information
+inside the file. This may or may not be a problem in real life.
+
+ It has been suggested that the '$Log$' keyword should be inserted
+_last_ in the file, and not in the files header, if it is to be used at
+all. That way the long list of change messages will not interfere with
+everyday source file browsing.
+
+13 Tracking third-party sources
+*******************************
+
+If you modify a program to better fit your site, you probably want to
+include your modifications when the next release of the program arrives.
+CVS can help you with this task.
+
+ In the terminology used in CVS, the supplier of the program is called
+a "vendor". The unmodified distribution from the vendor is checked in
+on its own branch, the "vendor branch". CVS reserves branch 1.1.1 for
+this use.
+
+ When you modify the source and commit it, your revision will end up
+on the main trunk. When a new release is made by the vendor, you commit
+it on the vendor branch and copy the modifications onto the main trunk.
+
+ Use the 'import' command to create and update the vendor branch.
+When you import a new file, the vendor branch is made the 'head'
+revision, so anyone that checks out a copy of the file gets that
+revision. When a local modification is committed it is placed on the
+main trunk, and made the 'head' revision.
+
+13.1 Importing for the first time
+=================================
+
+Use the 'import' command to check in the sources for the first time.
+When you use the 'import' command to track third-party sources, the
+"vendor tag" and "release tags" are useful. The "vendor tag" is a
+symbolic name for the branch (which is always 1.1.1, unless you use the
+'-b BRANCH' flag--see *note Multiple vendor branches::.). The "release
+tags" are symbolic names for a particular release, such as 'FSF_0_04'.
+
+ Note that 'import' does _not_ change the directory in which you
+invoke it. In particular, it does not set up that directory as a CVS
+working directory; if you want to work with the sources import them
+first and then check them out into a different directory (*note Getting
+the source::).
+
+ Suppose you have the sources to a program called 'wdiff' in a
+directory 'wdiff-0.04', and are going to make private modifications that
+you want to be able to use even when new releases are made in the
+future. You start by importing the source to your repository:
+
+ $ cd wdiff-0.04
+ $ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
+
+ The vendor tag is named 'FSF_DIST' in the above example, and the only
+release tag assigned is 'WDIFF_0_04'.
+
+13.2 Updating with the import command
+=====================================
+
+When a new release of the source arrives, you import it into the
+repository with the same 'import' command that you used to set up the
+repository in the first place. The only difference is that you specify
+a different release tag this time:
+
+ $ tar xfz wdiff-0.05.tar.gz
+ $ cd wdiff-0.05
+ $ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+
+ *WARNING: If you use a release tag that already exists in one of the
+repository archives, files removed by an import may not be detected.*
+
+ For files that have not been modified locally, the newly created
+revision becomes the head revision. If you have made local changes,
+'import' will warn you that you must merge the changes into the main
+trunk, and tell you to use 'checkout -j' to do so:
+
+ $ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
+
+The above command will check out the latest revision of 'wdiff', merging
+the changes made on the vendor branch 'FSF_DIST' since yesterday into
+the working copy. If any conflicts arise during the merge they should
+be resolved in the normal way (*note Conflicts example::). Then, the
+modified files may be committed.
+
+ However, it is much better to use the two release tags rather than
+using a date on the branch as suggested above:
+
+ $ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
+
+The reason this is better is that using a date, as suggested above,
+assumes that you do not import more than one release of a product per
+day. More importantly, using the release tags allows CVS to detect
+files that were removed between the two vendor releases and mark them
+for removal. Since 'import' has no way to detect removed files, you
+should do a merge like this even if 'import' doesn't tell you to.
+
+13.3 Reverting to the latest vendor release
+===========================================
+
+You can also revert local changes completely and return to the latest
+vendor release by changing the 'head' revision back to the vendor branch
+on all files. For example, if you have a checked-out copy of the
+sources in '~/work.d/wdiff', and you want to revert to the vendor's
+version for all the files in that directory, you would type:
+
+ $ cd ~/work.d/wdiff
+ $ cvs admin -bFSF_DIST .
+
+You must specify the '-bFSF_DIST' without any space after the '-b'.
+*Note admin options::.
+
+13.4 How to handle binary files with cvs import
+===============================================
+
+Use the '-k' wrapper option to tell import which files are binary.
+*Note Wrappers::.
+
+13.5 How to handle keyword substitution with cvs import
+=======================================================
+
+The sources which you are importing may contain keywords (*note Keyword
+substitution::). For example, the vendor may use CVS or some other
+system which uses similar keyword expansion syntax. If you just import
+the files in the default fashion, then the keyword expansions supplied
+by the vendor will be replaced by keyword expansions supplied by your
+own copy of CVS. It may be more convenient to maintain the expansions
+supplied by the vendor, so that this information can supply information
+about the sources that you imported from the vendor.
+
+ To maintain the keyword expansions supplied by the vendor, supply the
+'-ko' option to 'cvs import' the first time you import the file. This
+will turn off keyword expansion for that file entirely, so if you want
+to be more selective you'll have to think about what you want and use
+the '-k' option to 'cvs update' or 'cvs admin' as appropriate.
+
+13.6 Multiple vendor branches
+=============================
+
+All the examples so far assume that there is only one vendor from which
+you are getting sources. In some situations you might get sources from
+a variety of places. For example, suppose that you are dealing with a
+project where many different people and teams are modifying the
+software. There are a variety of ways to handle this, but in some cases
+you have a bunch of source trees lying around and what you want to do
+more than anything else is just to all put them in CVS so that you at
+least have them in one place.
+
+ For handling situations in which there may be more than one vendor,
+you may specify the '-b' option to 'cvs import'. It takes as an
+argument the vendor branch to import to. The default is '-b 1.1.1'.
+
+ For example, suppose that there are two teams, the red team and the
+blue team, that are sending you sources. You want to import the red
+team's efforts to branch 1.1.1 and use the vendor tag RED. You want to
+import the blue team's efforts to branch 1.1.3 and use the vendor tag
+BLUE. So the commands you might use are:
+
+ $ cvs import dir RED RED_1-0
+ $ cvs import -b 1.1.3 dir BLUE BLUE_1-5
+
+ Note that if your vendor tag does not match your '-b' option, CVS
+will not detect this case! For example,
+
+ $ cvs import -b 1.1.3 dir RED RED_1-0
+
+Be careful; this kind of mismatch is sure to sow confusion or worse. I
+can't think of a useful purpose for the ability to specify a mismatch
+here, but if you discover such a use, don't. CVS is likely to make this
+an error in some future release.
+
+14 How your build system interacts with CVS
+*******************************************
+
+As mentioned in the introduction, CVS does not contain software for
+building your software from source code. This section describes how
+various aspects of your build system might interact with CVS.
+
+ One common question, especially from people who are accustomed to
+RCS, is how to make their build get an up to date copy of the sources.
+The answer to this with CVS is two-fold. First of all, since CVS itself
+can recurse through directories, there is no need to modify your
+'Makefile' (or whatever configuration file your build tool uses) to make
+sure each file is up to date. Instead, just use two commands, first
+'cvs -q update' and then 'make' or whatever the command is to invoke
+your build tool. Secondly, you do not necessarily _want_ to get a copy
+of a change someone else made until you have finished your own work.
+One suggested approach is to first update your sources, then implement,
+build and test the change you were thinking of, and then commit your
+sources (updating first if necessary). By periodically (in between
+changes, using the approach just described) updating your entire tree,
+you ensure that your sources are sufficiently up to date.
+
+ One common need is to record which versions of which source files
+went into a particular build. This kind of functionality is sometimes
+called "bill of materials" or something similar. The best way to do
+this with CVS is to use the 'tag' command to record which versions went
+into a given build (*note Tags::).
+
+ Using CVS in the most straightforward manner possible, each developer
+will have a copy of the entire source tree which is used in a particular
+build. If the source tree is small, or if developers are geographically
+dispersed, this is the preferred solution. In fact one approach for
+larger projects is to break a project down into smaller
+separately-compiled subsystems, and arrange a way of releasing them
+internally so that each developer need check out only those subsystems
+which they are actively working on.
+
+ Another approach is to set up a structure which allows developers to
+have their own copies of some files, and for other files to access
+source files from a central location. Many people have come up with
+some such a system using features such as the symbolic link feature
+found in many operating systems, or the 'VPATH' feature found in many
+versions of 'make'. One build tool which is designed to help with this
+kind of thing is Odin (see
+'ftp://ftp.cs.colorado.edu/pub/distribs/odin').
+
+15 Special Files
+****************
+
+In normal circumstances, CVS works only with regular files. Every file
+in a project is assumed to be persistent; it must be possible to open,
+read and close them; and so on. CVS also ignores file permissions and
+ownerships, leaving such issues to be resolved by the developer at
+installation time. In other words, it is not possible to "check in" a
+device into a repository; if the device file cannot be opened, CVS will
+refuse to handle it. Files also lose their ownerships and permissions
+during repository transactions.
+
+Appendix A Guide to CVS commands
+********************************
+
+This appendix describes the overall structure of CVS commands, and
+describes some commands in detail (others are described elsewhere; for a
+quick reference to CVS commands, *note Invoking CVS::).
+
+A.1 Overall structure of CVS commands
+=====================================
+
+The overall format of all CVS commands is:
+
+ cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
+
+'cvs'
+ The name of the CVS program.
+
+'cvs_options'
+ Some options that affect all sub-commands of CVS. These are
+ described below.
+
+'cvs_command'
+ One of several different sub-commands. Some of the commands have
+ aliases that can be used instead; those aliases are noted in the
+ reference manual for that command. There are only two situations
+ where you may omit 'cvs_command': 'cvs -H' elicits a list of
+ available commands, and 'cvs -v' displays version information on
+ CVS itself.
+
+'command_options'
+ Options that are specific for the command.
+
+'command_args'
+ Arguments to the commands.
+
+ There is unfortunately some confusion between 'cvs_options' and
+'command_options'. When given as a 'cvs_option', some options only
+affect some of the commands. When given as a 'command_option' it may
+have a different meaning, and be accepted by more commands. In other
+words, do not take the above categorization too seriously. Look at the
+documentation instead.
+
+A.2 CVS's exit status
+=====================
+
+CVS can indicate to the calling environment whether it succeeded or
+failed by setting its "exit status". The exact way of testing the exit
+status will vary from one operating system to another. For example in a
+unix shell script the '$?' variable will be 0 if the last command
+returned a successful exit status, or greater than 0 if the exit status
+indicated failure.
+
+ If CVS is successful, it returns a successful status; if there is an
+error, it prints an error message and returns a failure status. The one
+exception to this is the 'cvs diff' command. It will return a
+successful status if it found no differences, or a failure status if
+there were differences or if there was an error. Because this behavior
+provides no good way to detect errors, in the future it is possible that
+'cvs diff' will be changed to behave like the other CVS commands.
+
+A.3 Default options and the ~/.cvsrc file
+=========================================
+
+There are some 'command_options' that are used so often that you might
+have set up an alias or some other means to make sure you always specify
+that option. One example (the one that drove the implementation of the
+'.cvsrc' support, actually) is that many people find the default output
+of the 'diff' command to be very hard to read, and that either context
+diffs or unidiffs are much easier to understand.
+
+ The '~/.cvsrc' file is a way that you can add default options to
+'cvs_commands' within cvs, instead of relying on aliases or other shell
+scripts.
+
+ The format of the '~/.cvsrc' file is simple. The file is searched
+for a line that begins with the same name as the 'cvs_command' being
+executed. If a match is found, then the remainder of the line is split
+up (at whitespace characters) into separate options and added to the
+command arguments _before_ any options from the command line.
+
+ If a command has two names (e.g., 'checkout' and 'co'), the official
+name, not necessarily the one used on the command line, will be used to
+match against the file. So if this is the contents of the user's
+'~/.cvsrc' file:
+
+ log -N
+ diff -uN
+ rdiff -u
+ update -Pd
+ checkout -P
+ release -d
+
+the command 'cvs checkout foo' would have the '-P' option added to the
+arguments, as well as 'cvs co foo'.
+
+ With the example file above, the output from 'cvs diff foobar' will
+be in unidiff format. 'cvs diff -c foobar' will provide context diffs,
+as usual. Getting "old" format diffs would be slightly more
+complicated, because 'diff' doesn't have an option to specify use of the
+"old" format, so you would need 'cvs -f diff foobar'.
+
+ In place of the command name you can use 'cvs' to specify global
+options (*note Global options::). For example the following line in
+'.cvsrc'
+
+ cvs -z6
+
+causes CVS to use compression level 6.
+
+A.4 Global options
+==================
+
+The available 'cvs_options' (that are given to the left of
+'cvs_command') are:
+
+'--allow-root=ROOTDIR'
+ Specify legal CVSROOT directory. See *note Password authentication
+ server::.
+
+'-a'
+ Authenticate all communication between the client and the server.
+ Only has an effect on the CVS client. As of this writing, this is
+ only implemented when using a GSSAPI connection (*note GSSAPI
+ authenticated::). Authentication prevents certain sorts of attacks
+ involving hijacking the active TCP connection. Enabling
+ authentication does not enable encryption.
+
+'-b BINDIR'
+ In CVS 1.9.18 and older, this specified that RCS programs are in
+ the BINDIR directory. Current versions of CVS do not run RCS
+ programs; for compatibility this option is accepted, but it does
+ nothing.
+
+'-T TEMPDIR'
+ Use TEMPDIR as the directory where temporary files are located.
+ Overrides the setting of the '$TMPDIR' environment variable and any
+ precompiled directory. This parameter should be specified as an
+ absolute pathname. (When running client/server, '-T' affects only
+ the local process; specifying '-T' for the client has no effect on
+ the server and vice versa.)
+
+'-d CVS_ROOT_DIRECTORY'
+ Use CVS_ROOT_DIRECTORY as the root directory pathname of the
+ repository. Overrides the setting of the '$CVSROOT' environment
+ variable. See *note Repository::.
+
+'-e EDITOR'
+ Use EDITOR to enter revision log information. Overrides the
+ setting of the '$CVSEDITOR' and '$EDITOR' environment variables.
+ For more information, see *note Committing your changes::.
+
+'-f'
+ Do not read the '~/.cvsrc' file. This option is most often used
+ because of the non-orthogonality of the CVS option set. For
+ example, the 'cvs log' option '-N' (turn off display of tag names)
+ does not have a corresponding option to turn the display on. So if
+ you have '-N' in the '~/.cvsrc' entry for 'log', you may need to
+ use '-f' to show the tag names.
+
+'-H'
+'--help'
+ Display usage information about the specified 'cvs_command' (but do
+ not actually execute the command). If you don't specify a command
+ name, 'cvs -H' displays overall help for CVS, including a list of
+ other help options.
+
+'-n'
+ Do not change any files. Attempt to execute the 'cvs_command', but
+ only to issue reports; do not remove, update, or merge any existing
+ files, or create any new files.
+
+ Note that CVS will not necessarily produce exactly the same output
+ as without '-n'. In some cases the output will be the same, but in
+ other cases CVS will skip some of the processing that would have
+ been required to produce the exact same output.
+
+'-Q'
+ Cause the command to be really quiet; the command will only
+ generate output for serious problems.
+
+'-q'
+ Cause the command to be somewhat quiet; informational messages,
+ such as reports of recursion through subdirectories, are
+ suppressed.
+
+'-r'
+ Make new working files read-only. Same effect as if the '$CVSREAD'
+ environment variable is set (*note Environment variables::). The
+ default is to make working files writable, unless watches are on
+ (*note Watches::).
+
+'-s VARIABLE=VALUE'
+ Set a user variable (*note Variables::).
+
+'-t'
+ Trace program execution; display messages showing the steps of CVS
+ activity. Particularly useful with '-n' to explore the potential
+ impact of an unfamiliar command.
+
+'-v'
+'--version'
+ Display version and copyright information for CVS.
+
+'-w'
+ Make new working files read-write. Overrides the setting of the
+ '$CVSREAD' environment variable. Files are created read-write by
+ default, unless '$CVSREAD' is set or '-r' is given.
+
+'-x'
+ Encrypt all communication between the client and the server. Only
+ has an effect on the CVS client. As of this writing, this is only
+ implemented when using a GSSAPI connection (*note GSSAPI
+ authenticated::) or a Kerberos connection (*note Kerberos
+ authenticated::). Enabling encryption implies that message traffic
+ is also authenticated. Encryption support is not available by
+ default; it must be enabled using a special configure option,
+ '--enable-encryption', when you build CVS.
+
+'-z GZIP-LEVEL'
+ Set the compression level. Valid levels are 1 (high speed, low
+ compression) to 9 (low speed, high compression), or 0 to disable
+ compression (the default). Only has an effect on the CVS client.
+
+A.5 Common command options
+==========================
+
+This section describes the 'command_options' that are available across
+several CVS commands. These options are always given to the right of
+'cvs_command'. Not all commands support all of these options; each
+option is only supported for commands where it makes sense. However,
+when a command has one of these options you can almost always count on
+the same behavior of the option as in other commands. (Other command
+options, which are listed with the individual commands, may have
+different behavior from one CVS command to the other).
+
+ *The 'history' command is an exception; it supports many options that
+conflict even with these standard options.*
+
+'-D DATE_SPEC'
+ Use the most recent revision no later than DATE_SPEC. DATE_SPEC is
+ a single argument, a date description specifying a date in the
+ past.
+
+ The specification is "sticky" when you use it to make a private
+ copy of a source file; that is, when you get a working file using
+ '-D', CVS records the date you specified, so that further updates
+ in the same directory will use the same date (for more information
+ on sticky tags/dates, *note Sticky tags::).
+
+ '-D' is available with the 'annotate', 'checkout', 'diff',
+ 'export', 'history', 'rdiff', 'rtag', and 'update' commands. (The
+ 'history' command uses this option in a slightly different way;
+ *note history options::).
+
+ A wide variety of date formats are supported by CVS. The most
+ standard ones are ISO8601 (from the International Standards
+ Organization) and the Internet e-mail standard (specified in RFC822
+ as amended by RFC1123).
+
+ ISO8601 dates have many variants but a few examples are:
+
+ 1972-09-24
+ 1972-09-24 20:05
+
+ There are a lot more ISO8601 date formats, and CVS accepts many of
+ them, but you probably don't want to hear the _whole_ long story
+ :-).
+
+ In addition to the dates allowed in Internet e-mail itself, CVS
+ also allows some of the fields to be omitted. For example:
+
+ 24 Sep 1972 20:05
+ 24 Sep
+
+ The date is interpreted as being in the local timezone, unless a
+ specific timezone is specified.
+
+ These two date formats are preferred. However, CVS currently
+ accepts a wide variety of other date formats. They are
+ intentionally not documented here in any detail, and future
+ versions of CVS might not accept all of them.
+
+ One such format is 'MONTH/DAY/YEAR'. This may confuse people who
+ are accustomed to having the month and day in the other order;
+ '1/4/96' is January 4, not April 1.
+
+ Remember to quote the argument to the '-D' flag so that your shell
+ doesn't interpret spaces as argument separators. A command using
+ the '-D' flag can look like this:
+
+ $ cvs diff -D "1 hour ago" cvs.texinfo
+
+'-f'
+ When you specify a particular date or tag to CVS commands, they
+ normally ignore files that do not contain the tag (or did not exist
+ prior to the date) that you specified. Use the '-f' option if you
+ want files retrieved even when there is no match for the tag or
+ date. (The most recent revision of the file will be used).
+
+ Note that even with '-f', a tag that you specify must exist (that
+ is, in some file, not necessary in every file). This is so that
+ CVS will continue to give an error if you mistype a tag name.
+
+ '-f' is available with these commands: 'annotate', 'checkout',
+ 'export', 'rdiff', 'rtag', and 'update'.
+
+ *WARNING: The 'commit' and 'remove' commands also have a '-f'
+ option, but it has a different behavior for those commands. See
+ *note commit options::, and *note Removing files::.*
+
+'-k KFLAG'
+ Alter the default processing of keywords. See *note Keyword
+ substitution::, for the meaning of KFLAG. Your KFLAG specification
+ is "sticky" when you use it to create a private copy of a source
+ file; that is, when you use this option with the 'checkout' or
+ 'update' commands, CVS associates your selected KFLAG with the
+ file, and continues to use it with future update commands on the
+ same file until you specify otherwise.
+
+ The '-k' option is available with the 'add', 'checkout', 'diff',
+ 'rdiff', 'import' and 'update' commands.
+
+'-l'
+ Local; run only in current working directory, rather than recursing
+ through subdirectories.
+
+ Available with the following commands: 'annotate', 'checkout',
+ 'commit', 'diff', 'edit', 'editors', 'export', 'log', 'rdiff',
+ 'remove', 'rtag', 'status', 'tag', 'unedit', 'update', 'watch', and
+ 'watchers'.
+
+'-m MESSAGE'
+ Use MESSAGE as log information, instead of invoking an editor.
+
+ Available with the following commands: 'add', 'commit' and
+ 'import'.
+
+'-n'
+ Do not run any tag program. (A program can be specified to run in
+ the modules database (*note modules::); this option bypasses it).
+
+ *This is not the same as the 'cvs -n' program option, which you can
+ specify to the left of a cvs command!*
+
+ Available with the 'checkout', 'export', and 'rtag' commands.
+
+'-P'
+ Prune empty directories. See *note Removing directories::.
+
+'-p'
+ Pipe the files retrieved from the repository to standard output,
+ rather than writing them in the current directory. Available with
+ the 'checkout' and 'update' commands.
+
+'-R'
+ Process directories recursively. This is on by default.
+
+ Available with the following commands: 'annotate', 'checkout',
+ 'commit', 'diff', 'edit', 'editors', 'export', 'rdiff', 'remove',
+ 'rtag', 'status', 'tag', 'unedit', 'update', 'watch', and
+ 'watchers'.
+
+'-r TAG'
+ Use the revision specified by the TAG argument instead of the
+ default "head" revision. As well as arbitrary tags defined with
+ the 'tag' or 'rtag' command, two special tags are always available:
+ 'HEAD' refers to the most recent version available in the
+ repository, and 'BASE' refers to the revision you last checked out
+ into the current working directory.
+
+ The tag specification is sticky when you use this with 'checkout'
+ or 'update' to make your own copy of a file: CVS remembers the tag
+ and continues to use it on future update commands, until you
+ specify otherwise (for more information on sticky tags/dates, *note
+ Sticky tags::).
+
+ The tag can be either a symbolic or numeric tag, as described in
+ *note Tags::, or the name of a branch, as described in *note
+ Branching and merging::. When a command expects a specific
+ revision, the name of a branch is interpreted as the most recent
+ revision on that branch.
+
+ Specifying the '-q' global option along with the '-r' command
+ option is often useful, to suppress the warning messages when the
+ RCS file does not contain the specified tag.
+
+ *This is not the same as the overall 'cvs -r' option, which you can
+ specify to the left of a CVS command!*
+
+ '-r' is available with the 'annotate', 'checkout', 'commit',
+ 'diff', 'history', 'export', 'rdiff', 'rtag', and 'update'
+ commands.
+
+'-W'
+ Specify file names that should be filtered. You can use this
+ option repeatedly. The spec can be a file name pattern of the same
+ type that you can specify in the '.cvswrappers' file. Available
+ with the following commands: 'import', and 'update'.
+
+A.6 add--Add files and directories to the repository
+====================================================
+
+ * Synopsis: add [-k rcs-kflag] [-m message] files...
+ * Requires: repository, working directory.
+ * Changes: repository, working directory.
+
+ The 'add' command is used to present new files and directories for
+addition into the CVS repository. When 'add' is used on a directory, a
+new directory is created in the repository immediately. When used on a
+file, only the working directory is updated. Changes to the repository
+are not made until the 'commit' command is used on the newly added file.
+
+ The 'add' command also resurrects files that have been previously
+removed. This can be done before or after the 'commit' command is used
+to finalize the removal of files. Resurrected files are restored into
+the working directory at the time the 'add' command is executed.
+
+A.6.1 add options
+-----------------
+
+These standard options are supported by 'add' (*note Common options::,
+for a complete description of them):
+
+'-k KFLAG'
+ Process keywords according to KFLAG. See *note Keyword
+ substitution::. This option is sticky; future updates of this file
+ in this working directory will use the same KFLAG. The 'status'
+ command can be viewed to see the sticky options. For more
+ information on the 'status' command, *Note Invoking CVS::.
+
+'-m MESSAGE'
+ Use MESSAGE as the log message, instead of invoking an editor.
+
+A.6.2 add examples
+------------------
+
+A.6.2.1 Adding a directory
+..........................
+
+ $ mkdir doc
+ $ cvs add doc
+ Directory /path/to/repository/doc added to the repository
+
+A.6.2.2 Adding a file
+.....................
+
+
+ $ >TODO
+ $ cvs add TODO
+ cvs add: scheduling file `TODO' for addition
+ cvs add: use 'cvs commit' to add this file permanently
+
+A.6.2.3 Undoing a 'remove' command
+..................................
+
+ $ rm -f makefile
+ $ cvs remove makefile
+ cvs remove: scheduling `makefile' for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+ $ cvs add makefile
+ U makefile
+ cvs add: makefile, version 1.2, resurrected
+
+A.7 admin--Administration
+=========================
+
+ * Requires: repository, working directory.
+ * Changes: repository.
+ * Synonym: rcs
+
+ This is the CVS interface to assorted administrative facilities.
+Some of them have questionable usefulness for CVS but exist for
+historical purposes. Some of the questionable options are likely to
+disappear in the future. This command _does_ work recursively, so
+extreme care should be used.
+
+ On unix, if there is a group named 'cvsadmin', only members of that
+group can run 'cvs admin' (except for the 'cvs admin -k' command, which
+can be run by anybody). This group should exist on the server, or any
+system running the non-client/server CVS. To disallow 'cvs admin' for
+all users, create a group with no users in it. On NT, the 'cvsadmin'
+feature does not exist and all users can run 'cvs admin'.
+
+A.7.1 admin options
+-------------------
+
+Some of these options have questionable usefulness for CVS but exist for
+historical purposes. Some even make it impossible to use CVS until you
+undo the effect!
+
+'-AOLDFILE'
+ Might not work together with CVS. Append the access list of
+ OLDFILE to the access list of the RCS file.
+
+'-aLOGINS'
+ Might not work together with CVS. Append the login names appearing
+ in the comma-separated list LOGINS to the access list of the RCS
+ file.
+
+'-b[REV]'
+ Set the default branch to REV. In CVS, you normally do not
+ manipulate default branches; sticky tags (*note Sticky tags::) are
+ a better way to decide which branch you want to work on. There is
+ one reason to run 'cvs admin -b': to revert to the vendor's version
+ when using vendor branches (*note Reverting local changes::).
+ There can be no space between '-b' and its argument.
+
+'-cSTRING'
+ Sets the comment leader to STRING. The comment leader is not used
+ by current versions of CVS or RCS 5.7. Therefore, you can almost
+ surely not worry about it. See *note Keyword substitution::.
+
+'-e[LOGINS]'
+ Might not work together with CVS. Erase the login names appearing
+ in the comma-separated list LOGINS from the access list of the RCS
+ file. If LOGINS is omitted, erase the entire access list. There
+ can be no space between '-e' and its argument.
+
+'-I'
+ Run interactively, even if the standard input is not a terminal.
+ This option does not work with the client/server CVS and is likely
+ to disappear in a future release of CVS.
+
+'-i'
+ Useless with CVS. This creates and initializes a new RCS file,
+ without depositing a revision. With CVS, add files with the 'cvs
+ add' command (*note Adding files::).
+
+'-kSUBST'
+ Set the default keyword substitution to SUBST. See *note Keyword
+ substitution::. Giving an explicit '-k' option to 'cvs update',
+ 'cvs export', or 'cvs checkout' overrides this default.
+
+'-l[REV]'
+ Lock the revision with number REV. If a branch is given, lock the
+ latest revision on that branch. If REV is omitted, lock the latest
+ revision on the default branch. There can be no space between '-l'
+ and its argument.
+
+ This can be used in conjunction with the 'rcslock.pl' script in the
+ 'contrib' directory of the CVS source distribution to provide
+ reserved checkouts (where only one user can be editing a given file
+ at a time). See the comments in that file for details (and see the
+ 'README' file in that directory for disclaimers about the
+ unsupported nature of contrib). According to comments in that
+ file, locking must set to strict (which is the default).
+
+'-L'
+ Set locking to strict. Strict locking means that the owner of an
+ RCS file is not exempt from locking for checkin. For use with CVS,
+ strict locking must be set; see the discussion under the '-l'
+ option above.
+
+'-mREV:MSG'
+ Replace the log message of revision REV with MSG.
+
+'-NNAME[:[REV]]'
+ Act like '-n', except override any previous assignment of NAME.
+ For use with magic branches, see *note Magic branch numbers::.
+
+'-nNAME[:[REV]]'
+ Associate the symbolic name NAME with the branch or revision REV.
+ It is normally better to use 'cvs tag' or 'cvs rtag' instead.
+ Delete the symbolic name if both ':' and REV are omitted;
+ otherwise, print an error message if NAME is already associated
+ with another number. If REV is symbolic, it is expanded before
+ association. A REV consisting of a branch number followed by a '.'
+ stands for the current latest revision in the branch. A ':' with
+ an empty REV stands for the current latest revision on the default
+ branch, normally the trunk. For example, 'cvs admin -nNAME:'
+ associates NAME with the current latest revision of all the RCS
+ files; this contrasts with 'cvs admin -nNAME:$' which associates
+ NAME with the revision numbers extracted from keyword strings in
+ the corresponding working files.
+
+'-oRANGE'
+ Deletes ("outdates") the revisions given by RANGE.
+
+ Note that this command can be quite dangerous unless you know
+ _exactly_ what you are doing (for example see the warnings below
+ about how the REV1:REV2 syntax is confusing).
+
+ If you are short on disc this option might help you. But think
+ twice before using it--there is no way short of restoring the
+ latest backup to undo this command! If you delete different
+ revisions than you planned, either due to carelessness or (heaven
+ forbid) a CVS bug, there is no opportunity to correct the error
+ before the revisions are deleted. It probably would be a good idea
+ to experiment on a copy of the repository first.
+
+ Specify RANGE in one of the following ways:
+
+ 'REV1::REV2'
+ Collapse all revisions between rev1 and rev2, so that CVS only
+ stores the differences associated with going from rev1 to
+ rev2, not intermediate steps. For example, after '-o
+ 1.3::1.5' one can retrieve revision 1.3, revision 1.5, or the
+ differences to get from 1.3 to 1.5, but not the revision 1.4,
+ or the differences between 1.3 and 1.4. Other examples: '-o
+ 1.3::1.4' and '-o 1.3::1.3' have no effect, because there are
+ no intermediate revisions to remove.
+
+ '::REV'
+ Collapse revisions between the beginning of the branch
+ containing REV and REV itself. The branchpoint and REV are
+ left intact. For example, '-o ::1.3.2.6' deletes revision
+ 1.3.2.1, revision 1.3.2.5, and everything in between, but
+ leaves 1.3 and 1.3.2.6 intact.
+
+ 'REV::'
+ Collapse revisions between REV and the end of the branch
+ containing REV. Revision REV is left intact but the head
+ revision is deleted.
+
+ 'REV'
+ Delete the revision REV. For example, '-o 1.3' is equivalent
+ to '-o 1.2::1.4'.
+
+ 'REV1:REV2'
+ Delete the revisions from REV1 to REV2, inclusive, on the same
+ branch. One will not be able to retrieve REV1 or REV2 or any
+ of the revisions in between. For example, the command 'cvs
+ admin -oR_1_01:R_1_02 .' is rarely useful. It means to delete
+ revisions up to, and including, the tag R_1_02. But beware!
+ If there are files that have not changed between R_1_02 and
+ R_1_03 the file will have _the same_ numerical revision number
+ assigned to the tags R_1_02 and R_1_03. So not only will it
+ be impossible to retrieve R_1_02; R_1_03 will also have to be
+ restored from the tapes! In most cases you want to specify
+ REV1::REV2 instead.
+
+ ':REV'
+ Delete revisions from the beginning of the branch containing
+ REV up to and including REV.
+
+ 'REV:'
+ Delete revisions from revision REV, including REV itself, to
+ the end of the branch containing REV.
+
+ None of the revisions to be deleted may have branches or locks.
+
+ If any of the revisions to be deleted have symbolic names, and one
+ specifies one of the '::' syntaxes, then CVS will give an error and
+ not delete any revisions. If you really want to delete both the
+ symbolic names and the revisions, first delete the symbolic names
+ with 'cvs tag -d', then run 'cvs admin -o'. If one specifies the
+ non-'::' syntaxes, then CVS will delete the revisions but leave the
+ symbolic names pointing to nonexistent revisions. This behavior is
+ preserved for compatibility with previous versions of CVS, but
+ because it isn't very useful, in the future it may change to be
+ like the '::' case.
+
+ Due to the way CVS handles branches REV cannot be specified
+ symbolically if it is a branch. See *note Magic branch numbers::
+ for an explanation.
+
+ Make sure that no-one has checked out a copy of the revision you
+ outdate. Strange things will happen if he starts to edit it and
+ tries to check it back in. For this reason, this option is not a
+ good way to take back a bogus commit; commit a new revision undoing
+ the bogus change instead (*note Merging two revisions::).
+
+'-q'
+ Run quietly; do not print diagnostics.
+
+'-sSTATE[:REV]'
+ Useful with CVS. Set the state attribute of the revision REV to
+ STATE. If REV is a branch number, assume the latest revision on
+ that branch. If REV is omitted, assume the latest revision on the
+ default branch. Any identifier is acceptable for STATE. A useful
+ set of states is 'Exp' (for experimental), 'Stab' (for stable), and
+ 'Rel' (for released). By default, the state of a new revision is
+ set to 'Exp' when it is created. The state is visible in the
+ output from CVS LOG (*note log::), and in the '$Log$' and '$State: Exp $'
+ keywords (*note Keyword substitution::). Note that CVS uses the
+ 'dead' state for its own purposes (*note Attic::); to take a file
+ to or from the 'dead' state use commands like 'cvs remove' and 'cvs
+ add' (*note Adding and removing::), not 'cvs admin -s'.
+
+'-t[FILE]'
+ Useful with CVS. Write descriptive text from the contents of the
+ named FILE into the RCS file, deleting the existing text. The FILE
+ pathname may not begin with '-'. The descriptive text can be seen
+ in the output from 'cvs log' (*note log::). There can be no space
+ between '-t' and its argument.
+
+ If FILE is omitted, obtain the text from standard input, terminated
+ by end-of-file or by a line containing '.' by itself. Prompt for
+ the text if interaction is possible; see '-I'.
+
+'-t-STRING'
+ Similar to '-tFILE'. Write descriptive text from the STRING into
+ the RCS file, deleting the existing text. There can be no space
+ between '-t' and its argument.
+
+'-U'
+ Set locking to non-strict. Non-strict locking means that the owner
+ of a file need not lock a revision for checkin. For use with CVS,
+ strict locking must be set; see the discussion under the '-l'
+ option above.
+
+'-u[REV]'
+ See the option '-l' above, for a discussion of using this option
+ with CVS. Unlock the revision with number REV. If a branch is
+ given, unlock the latest revision on that branch. If REV is
+ omitted, remove the latest lock held by the caller. Normally, only
+ the locker of a revision may unlock it; somebody else unlocking a
+ revision breaks the lock. This causes the original locker to be
+ sent a 'commit' notification (*note Getting Notified::). There can
+ be no space between '-u' and its argument.
+
+'-VN'
+ In previous versions of CVS, this option meant to write an RCS file
+ which would be acceptable to RCS version N, but it is now obsolete
+ and specifying it will produce an error.
+
+'-xSUFFIXES'
+ In previous versions of CVS, this was documented as a way of
+ specifying the names of the RCS files. However, CVS has always
+ required that the RCS files used by CVS end in ',v', so this option
+ has never done anything useful.
+
+A.8 annotate--What revision modified each line of a file?
+=========================================================
+
+ * Synopsis: annotate [options] files...
+ * Requires: repository.
+ * Synonym: blame
+ * Changes: nothing.
+
+ For each file in FILES, print the head revision of the trunk,
+together with information on the last modification for each line.
+
+A.8.1 annotate options
+----------------------
+
+These standard options are supported by 'annotate' (*note Common
+options:: for a complete description of them):
+
+'-l'
+ Local directory only, no recursion.
+
+'-R'
+ Process directories recursively.
+
+'-f'
+ Use head revision if tag/date not found.
+
+'-F'
+ Annotate binary files.
+
+'-r REVISION'
+ Annotate file as of specified revision/tag.
+
+'-D DATE'
+ Annotate file as of specified date.
+
+A.8.2 annotate example
+----------------------
+
+For example:
+
+ $ cvs annotate ssfile
+ Annotations for ssfile
+ ***************
+ 1.1 (mary 27-Mar-96): ssfile line 1
+ 1.2 (joe 28-Mar-96): ssfile line 2
+
+ The file 'ssfile' currently contains two lines. The 'ssfile line 1'
+line was checked in by 'mary' on March 27. Then, on March 28, 'joe'
+added a line 'ssfile line 2', without modifying the 'ssfile line 1'
+line. This report doesn't tell you anything about lines which have been
+deleted or replaced; you need to use 'cvs diff' for that (*note diff::).
+
+ The options to 'cvs annotate' are listed in *note Invoking CVS::, and
+can be used to select the files and revisions to annotate. The options
+are described in more detail there and in *note Common options::.
+
+A.9 checkout--Check out sources for editing
+===========================================
+
+ * Synopsis: checkout [options] modules...
+ * Requires: repository.
+ * Changes: working directory.
+ * Synonyms: co, get
+
+ Create or update a working directory containing copies of the source
+files specified by MODULES. You must execute 'checkout' before using
+most of the other CVS commands, since most of them operate on your
+working directory.
+
+ The MODULES are either symbolic names for some collection of source
+directories and files, or paths to directories or files in the
+repository. The symbolic names are defined in the 'modules' file. See
+*note modules::.
+
+ Depending on the modules you specify, 'checkout' may recursively
+create directories and populate them with the appropriate source files.
+You can then edit these source files at any time (regardless of whether
+other software developers are editing their own copies of the sources);
+update them to include new changes applied by others to the source
+repository; or commit your work as a permanent change to the source
+repository.
+
+ Note that 'checkout' is used to create directories. The top-level
+directory created is always added to the directory where 'checkout' is
+invoked, and usually has the same name as the specified module. In the
+case of a module alias, the created sub-directory may have a different
+name, but you can be sure that it will be a sub-directory, and that
+'checkout' will show the relative path leading to each file as it is
+extracted into your private work area (unless you specify the '-Q'
+global option).
+
+ The files created by 'checkout' are created read-write, unless the
+'-r' option to CVS (*note Global options::) is specified, the 'CVSREAD'
+environment variable is specified (*note Environment variables::), or a
+watch is in effect for that file (*note Watches::).
+
+ Note that running 'checkout' on a directory that was already built by
+a prior 'checkout' is also permitted. This is similar to specifying the
+'-d' option to the 'update' command in the sense that new directories
+that have been created in the repository will appear in your work area.
+However, 'checkout' takes a module name whereas 'update' takes a
+directory name. Also to use 'checkout' this way it must be run from the
+top level directory (where you originally ran 'checkout' from), so
+before you run 'checkout' to update an existing directory, don't forget
+to change your directory to the top level directory.
+
+ For the output produced by the 'checkout' command, *Note update
+output::.
+
+A.9.1 checkout options
+----------------------
+
+These standard options are supported by 'checkout' (*note Common
+options:: for a complete description of them):
+
+'-D DATE'
+ Use the most recent revision no later than DATE. This option is
+ sticky, and implies '-P'. See *note Sticky tags:: for more
+ information on sticky tags/dates.
+
+'-f'
+ Only useful with the '-D DATE' or '-r TAG' flags. If no matching
+ revision is found, retrieve the most recent revision (instead of
+ ignoring the file).
+
+'-k KFLAG'
+ Process keywords according to KFLAG. See *note Keyword
+ substitution::. This option is sticky; future updates of this file
+ in this working directory will use the same KFLAG. The 'status'
+ command can be viewed to see the sticky options. See *note
+ Invoking CVS:: for more information on the 'status' command.
+
+'-l'
+ Local; run only in current working directory.
+
+'-n'
+ Do not run any checkout program (as specified with the '-o' option
+ in the modules file; *note modules::).
+
+'-P'
+ Prune empty directories. See *note Moving directories::.
+
+'-p'
+ Pipe files to the standard output.
+
+'-R'
+ Checkout directories recursively. This option is on by default.
+
+'-r TAG'
+ Use revision TAG. This option is sticky, and implies '-P'. See
+ *note Sticky tags::, for more information on sticky tags/dates.
+
+ In addition to those, you can use these special command options with
+'checkout':
+
+'-A'
+ Reset any sticky tags, dates, or '-k' options. Does not reset
+ sticky '-k' options on modified files. See *note Sticky tags:: for
+ more information on sticky tags/dates.
+
+'-c'
+ Copy the module file, sorted, to the standard output, instead of
+ creating or modifying any files or directories in your working
+ directory.
+
+'-d DIR'
+ Create a directory called DIR for the working files, instead of
+ using the module name. In general, using this flag is equivalent
+ to using 'mkdir DIR; cd DIR' followed by the checkout command
+ without the '-d' flag.
+
+ There is an important exception, however. It is very convenient
+ when checking out a single item to have the output appear in a
+ directory that doesn't contain empty intermediate directories. In
+ this case _only_, CVS tries to "shorten" pathnames to avoid those
+ empty directories.
+
+ For example, given a module 'foo' that contains the file 'bar.c',
+ the command 'cvs co -d dir foo' will create directory 'dir' and
+ place 'bar.c' inside. Similarly, given a module 'bar' which has
+ subdirectory 'baz' wherein there is a file 'quux.c', the command
+ 'cvs co -d dir bar/baz' will create directory 'dir' and place
+ 'quux.c' inside.
+
+ Using the '-N' flag will defeat this behavior. Given the same
+ module definitions above, 'cvs co -N -d dir foo' will create
+ directories 'dir/foo' and place 'bar.c' inside, while 'cvs co -N -d
+ dir bar/baz' will create directories 'dir/bar/baz' and place
+ 'quux.c' inside.
+
+'-j TAG'
+ With two '-j' options, merge changes from the revision specified
+ with the first '-j' option to the revision specified with the
+ second 'j' option, into the working directory.
+
+ With one '-j' option, merge changes from the ancestor revision to
+ the revision specified with the '-j' option, into the working
+ directory. The ancestor revision is the common ancestor of the
+ revision which the working directory is based on, and the revision
+ specified in the '-j' option.
+
+ In addition, each -j option can contain an optional date
+ specification which, when used with branches, can limit the chosen
+ revision to one within a specific date. An optional date is
+ specified by adding a colon (:) to the tag:
+ '-jSYMBOLIC_TAG:DATE_SPECIFIER'.
+
+ See *note Branching and merging::.
+
+'-N'
+ Only useful together with '-d DIR'. With this option, CVS will not
+ "shorten" module paths in your working directory when you check out
+ a single module. See the '-d' flag for examples and a discussion.
+
+'-s'
+ Like '-c', but include the status of all modules, and sort it by
+ the status string. See *note modules::, for info about the '-s'
+ option that is used inside the modules file to set the module
+ status.
+
+A.9.2 checkout examples
+-----------------------
+
+Get a copy of the module 'tc':
+
+ $ cvs checkout tc
+
+ Get a copy of the module 'tc' as it looked one day ago:
+
+ $ cvs checkout -D yesterday tc
+
+A.10 commit--Check files into the repository
+============================================
+
+ * Synopsis: commit [-lRf] [-m 'log_message' | -F file] [-r revision]
+ [files...]
+ * Requires: working directory, repository.
+ * Changes: repository.
+ * Synonym: ci
+
+ Use 'commit' when you want to incorporate changes from your working
+source files into the source repository.
+
+ If you don't specify particular files to commit, all of the files in
+your working current directory are examined. 'commit' is careful to
+change in the repository only those files that you have really changed.
+By default (or if you explicitly specify the '-R' option), files in
+subdirectories are also examined and committed if they have changed; you
+can use the '-l' option to limit 'commit' to the current directory only.
+
+ 'commit' verifies that the selected files are up to date with the
+current revisions in the source repository; it will notify you, and exit
+without committing, if any of the specified files must be made current
+first with 'update' (*note update::). 'commit' does not call the
+'update' command for you, but rather leaves that for you to do when the
+time is right.
+
+ When all is well, an editor is invoked to allow you to enter a log
+message that will be written to one or more logging programs (*note
+modules::, and *note loginfo::) and placed in the RCS file inside the
+repository. This log message can be retrieved with the 'log' command;
+*Note log::. You can specify the log message on the command line with
+the '-m MESSAGE' option, and thus avoid the editor invocation, or use
+the '-F FILE' option to specify that the argument file contains the log
+message.
+
+A.10.1 commit options
+---------------------
+
+These standard options are supported by 'commit' (*note Common options::
+for a complete description of them):
+
+'-l'
+ Local; run only in current working directory.
+
+'-R'
+ Commit directories recursively. This is on by default.
+
+'-r REVISION'
+ Commit to REVISION. REVISION must be either a branch, or a
+ revision on the main trunk that is higher than any existing
+ revision number (*note Assigning revisions::). You cannot commit
+ to a specific revision on a branch.
+
+ 'commit' also supports these options:
+
+'-F FILE'
+ Read the log message from FILE, instead of invoking an editor.
+
+'-f'
+ Note that this is not the standard behavior of the '-f' option as
+ defined in *note Common options::.
+
+ Force CVS to commit a new revision even if you haven't made any
+ changes to the file. If the current revision of FILE is 1.7, then
+ the following two commands are equivalent:
+
+ $ cvs commit -f FILE
+ $ cvs commit -r 1.8 FILE
+
+ The '-f' option disables recursion (i.e., it implies '-l'). To
+ force CVS to commit a new revision for all files in all
+ subdirectories, you must use '-f -R'.
+
+'-m MESSAGE'
+ Use MESSAGE as the log message, instead of invoking an editor.
+
+A.10.2 commit examples
+----------------------
+
+A.10.2.1 Committing to a branch
+...............................
+
+You can commit to a branch revision (one that has an even number of
+dots) with the '-r' option. To create a branch revision, use the '-b'
+option of the 'rtag' or 'tag' commands (*note Branching and merging::).
+Then, either 'checkout' or 'update' can be used to base your sources on
+the newly created branch. From that point on, all 'commit' changes made
+within these working sources will be automatically added to a branch
+revision, thereby not disturbing main-line development in any way. For
+example, if you had to create a patch to the 1.2 version of the product,
+even though the 2.0 version is already under development, you might do:
+
+ $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
+ $ cvs checkout -r FCS1_2_Patch product_module
+ $ cd product_module
+ [[ hack away ]]
+ $ cvs commit
+
+This works automatically since the '-r' option is sticky.
+
+A.10.2.2 Creating the branch after editing
+..........................................
+
+Say you have been working on some extremely experimental software, based
+on whatever revision you happened to checkout last week. If others in
+your group would like to work on this software with you, but without
+disturbing main-line development, you could commit your change to a new
+branch. Others can then checkout your experimental stuff and utilize
+the full benefit of CVS conflict resolution. The scenario might look
+like:
+
+ [[ hacked sources are present ]]
+ $ cvs tag -b EXPR1
+ $ cvs update -r EXPR1
+ $ cvs commit
+
+ The 'update' command will make the '-r EXPR1' option sticky on all
+files. Note that your changes to the files will never be removed by the
+'update' command. The 'commit' will automatically commit to the correct
+branch, because the '-r' is sticky. You could also do like this:
+
+ [[ hacked sources are present ]]
+ $ cvs tag -b EXPR1
+ $ cvs commit -r EXPR1
+
+but then, only those files that were changed by you will have the '-r
+EXPR1' sticky flag. If you hack away, and commit without specifying the
+'-r EXPR1' flag, some files may accidentally end up on the main trunk.
+
+ To work with you on the experimental change, others would simply do
+
+ $ cvs checkout -r EXPR1 whatever_module
+
+A.11 diff--Show differences between revisions
+=============================================
+
+ * Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D
+ date1] [-r rev2 | -D date2]] [files...]
+ * Requires: working directory, repository.
+ * Changes: nothing.
+
+ The 'diff' command is used to compare different revisions of files.
+The default action is to compare your working files with the revisions
+they were based on, and report any differences that are found.
+
+ If any file names are given, only those files are compared. If any
+directories are given, all files under them will be compared.
+
+ The exit status for diff is different than for other CVS commands;
+for details *Note Exit status::.
+
+A.11.1 diff options
+-------------------
+
+These standard options are supported by 'diff' (*note Common options::
+for a complete description of them):
+
+'-D DATE'
+ Use the most recent revision no later than DATE. See '-r' for how
+ this affects the comparison.
+
+'-k KFLAG'
+ Process keywords according to KFLAG. See *note Keyword
+ substitution::.
+
+'-l'
+ Local; run only in current working directory.
+
+'-R'
+ Examine directories recursively. This option is on by default.
+
+'-r TAG'
+ Compare with revision TAG. Zero, one or two '-r' options can be
+ present. With no '-r' option, the working file will be compared
+ with the revision it was based on. With one '-r', that revision
+ will be compared to your current working file. With two '-r'
+ options those two revisions will be compared (and your working file
+ will not affect the outcome in any way).
+
+ One or both '-r' options can be replaced by a '-D DATE' option,
+ described above.
+
+ The following options specify the format of the output. They have
+the same meaning as in GNU diff. Most options have two equivalent
+names, one of which is a single letter preceded by '-', and the other of
+which is a long name preceded by '--'.
+
+'-LINES'
+ Show LINES (an integer) lines of context. This option does not
+ specify an output format by itself; it has no effect unless it is
+ combined with '-c' or '-u'. This option is obsolete. For proper
+ operation, 'patch' typically needs at least two lines of context.
+
+'-a'
+ Treat all files as text and compare them line-by-line, even if they
+ do not seem to be text.
+
+'-b'
+ Ignore trailing white space and consider all other sequences of one
+ or more white space characters to be equivalent.
+
+'-B'
+ Ignore changes that just insert or delete blank lines.
+
+'--binary'
+ Read and write data in binary mode.
+
+'--brief'
+ Report only whether the files differ, not the details of the
+ differences.
+
+'-c'
+ Use the context output format.
+
+'-C LINES'
+'--context[=LINES]'
+ Use the context output format, showing LINES (an integer) lines of
+ context, or three if LINES is not given. For proper operation,
+ 'patch' typically needs at least two lines of context.
+
+'--changed-group-format=FORMAT'
+ Use FORMAT to output a line group containing differing lines from
+ both files in if-then-else format. See *note Line group formats::.
+
+'-d'
+ Change the algorithm to perhaps find a smaller set of changes.
+ This makes 'diff' slower (sometimes much slower).
+
+'-e'
+'--ed'
+ Make output that is a valid 'ed' script.
+
+'--expand-tabs'
+ Expand tabs to spaces in the output, to preserve the alignment of
+ tabs in the input files.
+
+'-f'
+ Make output that looks vaguely like an 'ed' script but has changes
+ in the order they appear in the file.
+
+'-F REGEXP'
+ In context and unified format, for each hunk of differences, show
+ some of the last preceding line that matches REGEXP.
+
+'--forward-ed'
+ Make output that looks vaguely like an 'ed' script but has changes
+ in the order they appear in the file.
+
+'-H'
+ Use heuristics to speed handling of large files that have numerous
+ scattered small changes.
+
+'--horizon-lines=LINES'
+ Do not discard the last LINES lines of the common prefix and the
+ first LINES lines of the common suffix.
+
+'-i'
+ Ignore changes in case; consider upper- and lower-case letters
+ equivalent.
+
+'-I REGEXP'
+ Ignore changes that just insert or delete lines that match REGEXP.
+
+'--ifdef=NAME'
+ Make merged if-then-else output using NAME.
+
+'--ignore-all-space'
+ Ignore white space when comparing lines.
+
+'--ignore-blank-lines'
+ Ignore changes that just insert or delete blank lines.
+
+'--ignore-case'
+ Ignore changes in case; consider upper- and lower-case to be the
+ same.
+
+'--ignore-matching-lines=REGEXP'
+ Ignore changes that just insert or delete lines that match REGEXP.
+
+'--ignore-space-change'
+ Ignore trailing white space and consider all other sequences of one
+ or more white space characters to be equivalent.
+
+'--initial-tab'
+ Output a tab rather than a space before the text of a line in
+ normal or context format. This causes the alignment of tabs in the
+ line to look normal.
+
+'-L LABEL'
+ Use LABEL instead of the file name in the context format and
+ unified format headers.
+
+'--label=LABEL'
+ Use LABEL instead of the file name in the context format and
+ unified format headers.
+
+'--left-column'
+ Print only the left column of two common lines in side by side
+ format.
+
+'--line-format=FORMAT'
+ Use FORMAT to output all input lines in if-then-else format. See
+ *note Line formats::.
+
+'--minimal'
+ Change the algorithm to perhaps find a smaller set of changes.
+ This makes 'diff' slower (sometimes much slower).
+
+'-n'
+ Output RCS-format diffs; like '-f' except that each command
+ specifies the number of lines affected.
+
+'-N'
+'--new-file'
+ In directory comparison, if a file is found in only one directory,
+ treat it as present but empty in the other directory.
+
+'--new-group-format=FORMAT'
+ Use FORMAT to output a group of lines taken from just the second
+ file in if-then-else format. See *note Line group formats::.
+
+'--new-line-format=FORMAT'
+ Use FORMAT to output a line taken from just the second file in
+ if-then-else format. See *note Line formats::.
+
+'--old-group-format=FORMAT'
+ Use FORMAT to output a group of lines taken from just the first
+ file in if-then-else format. See *note Line group formats::.
+
+'--old-line-format=FORMAT'
+ Use FORMAT to output a line taken from just the first file in
+ if-then-else format. See *note Line formats::.
+
+'-p'
+ Show which C function each change is in.
+
+'--rcs'
+ Output RCS-format diffs; like '-f' except that each command
+ specifies the number of lines affected.
+
+'--report-identical-files'
+'-s'
+ Report when two files are the same.
+
+'--show-c-function'
+ Show which C function each change is in.
+
+'--show-function-line=REGEXP'
+ In context and unified format, for each hunk of differences, show
+ some of the last preceding line that matches REGEXP.
+
+'--side-by-side'
+ Use the side by side output format.
+
+'--speed-large-files'
+ Use heuristics to speed handling of large files that have numerous
+ scattered small changes.
+
+'--suppress-common-lines'
+ Do not print common lines in side by side format.
+
+'-t'
+ Expand tabs to spaces in the output, to preserve the alignment of
+ tabs in the input files.
+
+'-T'
+ Output a tab rather than a space before the text of a line in
+ normal or context format. This causes the alignment of tabs in the
+ line to look normal.
+
+'--text'
+ Treat all files as text and compare them line-by-line, even if they
+ do not appear to be text.
+
+'-u'
+ Use the unified output format.
+
+'--unchanged-group-format=FORMAT'
+ Use FORMAT to output a group of common lines taken from both files
+ in if-then-else format. *Note Line group formats::.
+
+'--unchanged-line-format=FORMAT'
+ Use FORMAT to output a line common to both files in if-then-else
+ format. *Note Line formats::.
+
+'-U LINES'
+'--unified[=LINES]'
+ Use the unified output format, showing LINES (an integer) lines of
+ context, or three if LINES is not given. For proper operation,
+ 'patch' typically needs at least two lines of context.
+
+'-w'
+ Ignore white space when comparing lines.
+
+'-W COLUMNS'
+'--width=COLUMNS'
+ Use an output width of COLUMNS in side by side format.
+
+'-y'
+ Use the side by side output format.
+
+A.11.1.1 Line group formats
+...........................
+
+Line group formats let you specify formats suitable for many
+applications that allow if-then-else input, including programming
+languages and text formatting languages. A line group format specifies
+the output format for a contiguous group of similar lines.
+
+ For example, the following command compares the TeX file 'myfile'
+with the original version from the repository, and outputs a merged file
+in which old regions are surrounded by '\begin{em}'-'\end{em}' lines,
+and new regions are surrounded by '\begin{bf}'-'\end{bf}' lines.
+
+ cvs diff \
+ --old-group-format='\begin{em}
+ %<\end{em}
+ ' \
+ --new-group-format='\begin{bf}
+ %>\end{bf}
+ ' \
+ myfile
+
+ The following command is equivalent to the above example, but it is a
+little more verbose, because it spells out the default line group
+formats.
+
+ cvs diff \
+ --old-group-format='\begin{em}
+ %<\end{em}
+ ' \
+ --new-group-format='\begin{bf}
+ %>\end{bf}
+ ' \
+ --unchanged-group-format='%=' \
+ --changed-group-format='\begin{em}
+ %<\end{em}
+ \begin{bf}
+ %>\end{bf}
+ ' \
+ myfile
+
+ Here is a more advanced example, which outputs a diff listing with
+headers containing line numbers in a "plain English" style.
+
+ cvs diff \
+ --unchanged-group-format='' \
+ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
+ %<' \
+ --new-group-format='-------- %dN line%(N=1?:s) added after %de:
+ %>' \
+ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
+ %<-------- to:
+ %>' \
+ myfile
+
+ To specify a line group format, use one of the options listed below.
+You can specify up to four line group formats, one for each kind of line
+group. You should quote FORMAT, because it typically contains shell
+metacharacters.
+
+'--old-group-format=FORMAT'
+ These line groups are hunks containing only lines from the first
+ file. The default old group format is the same as the changed
+ group format if it is specified; otherwise it is a format that
+ outputs the line group as-is.
+
+'--new-group-format=FORMAT'
+ These line groups are hunks containing only lines from the second
+ file. The default new group format is same as the changed group
+ format if it is specified; otherwise it is a format that outputs
+ the line group as-is.
+
+'--changed-group-format=FORMAT'
+ These line groups are hunks containing lines from both files. The
+ default changed group format is the concatenation of the old and
+ new group formats.
+
+'--unchanged-group-format=FORMAT'
+ These line groups contain lines common to both files. The default
+ unchanged group format is a format that outputs the line group
+ as-is.
+
+ In a line group format, ordinary characters represent themselves;
+conversion specifications start with '%' and have one of the following
+forms.
+
+'%<'
+ stands for the lines from the first file, including the trailing
+ newline. Each line is formatted according to the old line format
+ (*note Line formats::).
+
+'%>'
+ stands for the lines from the second file, including the trailing
+ newline. Each line is formatted according to the new line format.
+
+'%='
+ stands for the lines common to both files, including the trailing
+ newline. Each line is formatted according to the unchanged line
+ format.
+
+'%%'
+ stands for '%'.
+
+'%c'C''
+ where C is a single character, stands for C. C may not be a
+ backslash or an apostrophe. For example, '%c':'' stands for a
+ colon, even inside the then-part of an if-then-else format, which a
+ colon would normally terminate.
+
+'%c'\O''
+ where O is a string of 1, 2, or 3 octal digits, stands for the
+ character with octal code O. For example, '%c'\0'' stands for a
+ null character.
+
+'FN'
+ where F is a 'printf' conversion specification and N is one of the
+ following letters, stands for N's value formatted with F.
+
+ 'e'
+ The line number of the line just before the group in the old
+ file.
+
+ 'f'
+ The line number of the first line in the group in the old
+ file; equals E + 1.
+
+ 'l'
+ The line number of the last line in the group in the old file.
+
+ 'm'
+ The line number of the line just after the group in the old
+ file; equals L + 1.
+
+ 'n'
+ The number of lines in the group in the old file; equals L - F
+ + 1.
+
+ 'E, F, L, M, N'
+ Likewise, for lines in the new file.
+
+ The 'printf' conversion specification can be '%d', '%o', '%x', or
+ '%X', specifying decimal, octal, lower case hexadecimal, or upper
+ case hexadecimal output respectively. After the '%' the following
+ options can appear in sequence: a '-' specifying
+ left-justification; an integer specifying the minimum field width;
+ and a period followed by an optional integer specifying the minimum
+ number of digits. For example, '%5dN' prints the number of new
+ lines in the group in a field of width 5 characters, using the
+ 'printf' format '"%5d"'.
+
+'(A=B?T:E)'
+ If A equals B then T else E. A and B are each either a decimal
+ constant or a single letter interpreted as above. This format spec
+ is equivalent to T if A's value equals B's; otherwise it is
+ equivalent to E.
+
+ For example, '%(N=0?no:%dN) line%(N=1?:s)' is equivalent to 'no
+ lines' if N (the number of lines in the group in the new file) is
+ 0, to '1 line' if N is 1, and to '%dN lines' otherwise.
+
+A.11.1.2 Line formats
+.....................
+
+Line formats control how each line taken from an input file is output as
+part of a line group in if-then-else format.
+
+ For example, the following command outputs text with a one-column
+change indicator to the left of the text. The first column of output is
+'-' for deleted lines, '|' for added lines, and a space for unchanged
+lines. The formats contain newline characters where newlines are
+desired on output.
+
+ cvs diff \
+ --old-line-format='-%l
+ ' \
+ --new-line-format='|%l
+ ' \
+ --unchanged-line-format=' %l
+ ' \
+ myfile
+
+ To specify a line format, use one of the following options. You
+should quote FORMAT, since it often contains shell metacharacters.
+
+'--old-line-format=FORMAT'
+ formats lines just from the first file.
+
+'--new-line-format=FORMAT'
+ formats lines just from the second file.
+
+'--unchanged-line-format=FORMAT'
+ formats lines common to both files.
+
+'--line-format=FORMAT'
+ formats all lines; in effect, it sets all three above options
+ simultaneously.
+
+ In a line format, ordinary characters represent themselves;
+conversion specifications start with '%' and have one of the following
+forms.
+
+'%l'
+ stands for the contents of the line, not counting its trailing
+ newline (if any). This format ignores whether the line is
+ incomplete.
+
+'%L'
+ stands for the contents of the line, including its trailing newline
+ (if any). If a line is incomplete, this format preserves its
+ incompleteness.
+
+'%%'
+ stands for '%'.
+
+'%c'C''
+ where C is a single character, stands for C. C may not be a
+ backslash or an apostrophe. For example, '%c':'' stands for a
+ colon.
+
+'%c'\O''
+ where O is a string of 1, 2, or 3 octal digits, stands for the
+ character with octal code O. For example, '%c'\0'' stands for a
+ null character.
+
+'Fn'
+ where F is a 'printf' conversion specification, stands for the line
+ number formatted with F. For example, '%.5dn' prints the line
+ number using the 'printf' format '"%.5d"'. *Note Line group
+ formats::, for more about printf conversion specifications.
+
+ The default line format is '%l' followed by a newline character.
+
+ If the input contains tab characters and it is important that they
+line up on output, you should ensure that '%l' or '%L' in a line format
+is just after a tab stop (e.g. by preceding '%l' or '%L' with a tab
+character), or you should use the '-t' or '--expand-tabs' option.
+
+ Taken together, the line and line group formats let you specify many
+different formats. For example, the following command uses a format
+similar to 'diff''s normal format. You can tailor this command to get
+fine control over 'diff''s output.
+
+ cvs diff \
+ --old-line-format='< %l
+ ' \
+ --new-line-format='> %l
+ ' \
+ --old-group-format='%df%(f=l?:,%dl)d%dE
+ %<' \
+ --new-group-format='%dea%dF%(F=L?:,%dL)
+ %>' \
+ --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
+ %<---
+ %>' \
+ --unchanged-group-format='' \
+ myfile
+
+A.11.2 diff examples
+--------------------
+
+The following line produces a Unidiff ('-u' flag) between revision 1.14
+and 1.19 of 'backend.c'. Due to the '-kk' flag no keywords are
+substituted, so differences that only depend on keyword substitution are
+ignored.
+
+ $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+
+ Suppose the experimental branch EXPR1 was based on a set of files
+tagged RELEASE_1_0. To see what has happened on that branch, the
+following can be used:
+
+ $ cvs diff -r RELEASE_1_0 -r EXPR1
+
+ A command like this can be used to produce a context diff between two
+releases:
+
+ $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+
+ If you are maintaining ChangeLogs, a command like the following just
+before you commit your changes may help you write the ChangeLog entry.
+All local modifications that have not yet been committed will be
+printed.
+
+ $ cvs diff -u | less
+
+A.12 export--Export sources from CVS, similar to checkout
+=========================================================
+
+ * Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir]
+ module...
+ * Requires: repository.
+ * Changes: current directory.
+
+ This command is a variant of 'checkout'; use it when you want a copy
+of the source for module without the CVS administrative directories.
+For example, you might use 'export' to prepare source for shipment
+off-site. This command requires that you specify a date or tag (with
+'-D' or '-r'), so that you can count on reproducing the source you ship
+to others (and thus it always prunes empty directories).
+
+ One often would like to use '-kv' with 'cvs export'. This causes any
+keywords to be expanded such that an import done at some other site will
+not lose the keyword revision information. But be aware that doesn't
+handle an export containing binary files correctly. Also be aware that
+after having used '-kv', one can no longer use the 'ident' command
+(which is part of the RCS suite--see ident(1)) which looks for keyword
+strings. If you want to be able to use 'ident' you must not use '-kv'.
+
+A.12.1 export options
+---------------------
+
+These standard options are supported by 'export' (*note Common
+options::, for a complete description of them):
+
+'-D DATE'
+ Use the most recent revision no later than DATE.
+
+'-f'
+ If no matching revision is found, retrieve the most recent revision
+ (instead of ignoring the file).
+
+'-l'
+ Local; run only in current working directory.
+
+'-n'
+ Do not run any checkout program.
+
+'-R'
+ Export directories recursively. This is on by default.
+
+'-r TAG'
+ Use revision TAG.
+
+ In addition, these options (that are common to 'checkout' and
+'export') are also supported:
+
+'-d DIR'
+ Create a directory called DIR for the working files, instead of
+ using the module name. See *note checkout options:: for complete
+ details on how CVS handles this flag.
+
+'-k SUBST'
+ Set keyword expansion mode (*note Substitution modes::).
+
+'-N'
+ Only useful together with '-d DIR'. See *note checkout options::
+ for complete details on how CVS handles this flag.
+
+A.13 history--Show status of files and users
+============================================
+
+ * Synopsis: history [-report] [-flags] [-options args] [files...]
+ * Requires: the file '$CVSROOT/CVSROOT/history'
+ * Changes: nothing.
+
+ CVS can keep a history file that tracks each use of the 'checkout',
+'commit', 'rtag', 'update', and 'release' commands. You can use
+'history' to display this information in various formats.
+
+ Logging must be enabled by creating the file
+'$CVSROOT/CVSROOT/history'.
+
+ *'history' uses '-f', '-l', '-n', and '-p' in ways that conflict with
+the normal use inside CVS (*note Common options::).*
+
+A.13.1 history options
+----------------------
+
+Several options (shown above as '-report') control what kind of report
+is generated:
+
+'-c'
+ Report on each time commit was used (i.e., each time the repository
+ was modified).
+
+'-e'
+ Everything (all record types). Equivalent to specifying '-x' with
+ all record types. Of course, '-e' will also include record types
+ which are added in a future version of CVS; if you are writing a
+ script which can only handle certain record types, you'll want to
+ specify '-x'.
+
+'-m MODULE'
+ Report on a particular module. (You can meaningfully use '-m' more
+ than once on the command line.)
+
+'-o'
+ Report on checked-out modules. This is the default report type.
+
+'-T'
+ Report on all tags.
+
+'-x TYPE'
+ Extract a particular set of record types TYPE from the CVS history.
+ The types are indicated by single letters, which you may specify in
+ combination.
+
+ Certain commands have a single record type:
+
+ 'F'
+ release
+ 'O'
+ checkout
+ 'E'
+ export
+ 'T'
+ rtag
+
+ One of five record types may result from an update:
+
+ 'C'
+ A merge was necessary but collisions were detected (requiring
+ manual merging).
+ 'G'
+ A merge was necessary and it succeeded.
+ 'U'
+ A working file was copied from the repository.
+ 'P'
+ A working file was patched to match the repository.
+ 'W'
+ The working copy of a file was deleted during update (because
+ it was gone from the repository).
+
+ One of three record types results from commit:
+
+ 'A'
+ A file was added for the first time.
+ 'M'
+ A file was modified.
+ 'R'
+ A file was removed.
+
+ The options shown as '-flags' constrain or expand the report without
+requiring option arguments:
+
+'-a'
+ Show data for all users (the default is to show data only for the
+ user executing 'history').
+
+'-l'
+ Show last modification only.
+
+'-w'
+ Show only the records for modifications done from the same working
+ directory where 'history' is executing.
+
+ The options shown as '-options ARGS' constrain the report based on an
+argument:
+
+'-b STR'
+ Show data back to a record containing the string STR in either the
+ module name, the file name, or the repository path.
+
+'-D DATE'
+ Show data since DATE. This is slightly different from the normal
+ use of '-D DATE', which selects the newest revision older than
+ DATE.
+
+'-f FILE'
+ Show data for a particular file (you can specify several '-f'
+ options on the same command line). This is equivalent to
+ specifying the file on the command line.
+
+'-n MODULE'
+ Show data for a particular module (you can specify several '-n'
+ options on the same command line).
+
+'-p REPOSITORY'
+ Show data for a particular source repository (you can specify
+ several '-p' options on the same command line).
+
+'-r REV'
+ Show records referring to revisions since the revision or tag named
+ REV appears in individual RCS files. Each RCS file is searched for
+ the revision or tag.
+
+'-t TAG'
+ Show records since tag TAG was last added to the history file.
+ This differs from the '-r' flag above in that it reads only the
+ history file, not the RCS files, and is much faster.
+
+'-u NAME'
+ Show records for user NAME.
+
+'-z TIMEZONE'
+ Show times in the selected records using the specified time zone
+ instead of UTC.
+
+A.14 import--Import sources into CVS, using vendor branches
+===========================================================
+
+ * Synopsis: import [-options] repository vendortag releasetag...
+ * Requires: Repository, source distribution directory.
+ * Changes: repository.
+
+ Use 'import' to incorporate an entire source distribution from an
+outside source (e.g., a source vendor) into your source repository
+directory. You can use this command both for initial creation of a
+repository, and for wholesale updates to the module from the outside
+source. See *note Tracking sources:: for a discussion on this subject.
+
+ The REPOSITORY argument gives a directory name (or a path to a
+directory) under the CVS root directory for repositories; if the
+directory did not exist, import creates it.
+
+ When you use import for updates to source that has been modified in
+your source repository (since a prior import), it will notify you of any
+files that conflict in the two branches of development; use 'checkout
+-j' to reconcile the differences, as import instructs you to do.
+
+ If CVS decides a file should be ignored (*note cvsignore::), it does
+not import it and prints 'I ' followed by the filename (*note import
+output:: for a complete description of the output).
+
+ If the file '$CVSROOT/CVSROOT/cvswrappers' exists, any file whose
+names match the specifications in that file will be treated as packages
+and the appropriate filtering will be performed on the file/directory
+before being imported. See *note Wrappers::.
+
+ The outside source is saved in a first-level branch, by default
+1.1.1. Updates are leaves of this branch; for example, files from the
+first imported collection of source will be revision 1.1.1.1, then files
+from the first imported update will be revision 1.1.1.2, and so on.
+
+ At least three arguments are required. REPOSITORY is needed to
+identify the collection of source. VENDORTAG is a tag for the entire
+branch (e.g., for 1.1.1). You must also specify at least one RELEASETAG
+to uniquely identify the files at the leaves created each time you
+execute 'import'. The RELEASETAG should be new, not previously existing
+in the repository file, and uniquely identify the imported release,
+
+ Note that 'import' does _not_ change the directory in which you
+invoke it. In particular, it does not set up that directory as a CVS
+working directory; if you want to work with the sources import them
+first and then check them out into a different directory (*note Getting
+the source::).
+
+A.14.1 import options
+---------------------
+
+This standard option is supported by 'import' (*note Common options::
+for a complete description):
+
+'-m MESSAGE'
+ Use MESSAGE as log information, instead of invoking an editor.
+
+ There are the following additional special options.
+
+'-b BRANCH'
+ See *note Multiple vendor branches::.
+
+'-d'
+ Use each file's modification time as the time of import rather than
+ the current time.
+
+'-k SUBST'
+ Indicate the keyword expansion mode desired. This setting will
+ apply to all files created during the import, but not to any files
+ that previously existed in the repository. See *note Substitution
+ modes:: for a list of valid '-k' settings.
+
+'-I NAME'
+ Specify file names that should be ignored during import. You can
+ use this option repeatedly. To avoid ignoring any files at all
+ (even those ignored by default), specify '-I !'.
+
+ NAME can be a file name pattern of the same type that you can
+ specify in the '.cvsignore' file. See *note cvsignore::.
+
+'-W SPEC'
+ Specify file names that should be filtered during import. You can
+ use this option repeatedly.
+
+ SPEC can be a file name pattern of the same type that you can
+ specify in the '.cvswrappers' file. *Note Wrappers::.
+
+A.14.2 import output
+--------------------
+
+'import' keeps you informed of its progress by printing a line for each
+file, preceded by one character indicating the status of the file:
+
+'U FILE'
+ The file already exists in the repository and has not been locally
+ modified; a new revision has been created (if necessary).
+
+'N FILE'
+ The file is a new file which has been added to the repository.
+
+'C FILE'
+ The file already exists in the repository but has been locally
+ modified; you will have to merge the changes.
+
+'I FILE'
+ The file is being ignored (*note cvsignore::).
+
+'L FILE'
+ The file is a symbolic link; 'cvs import' ignores symbolic links.
+ People periodically suggest that this behavior should be changed,
+ but if there is a consensus on what it should be changed to, it
+ doesn't seem to be apparent. (Various options in the 'modules'
+ file can be used to recreate symbolic links on checkout, update,
+ etc.; *note modules::.)
+
+A.14.3 import examples
+----------------------
+
+See *note Tracking sources::, and *note From files::.
+
+A.15 log--Print out log information for files
+=============================================
+
+ * Synopsis: log [options] [files...]
+ * Requires: repository, working directory.
+ * Changes: nothing.
+
+ Display log information for files. 'log' used to call the RCS
+utility 'rlog'. Although this is no longer true in the current sources,
+this history determines the format of the output and the options, which
+are not quite in the style of the other CVS commands.
+
+ The output includes the location of the RCS file, the "head" revision
+(the latest revision on the trunk), all symbolic names (tags) and some
+other things. For each revision, the revision number, the author, the
+number of lines added/deleted and the log message are printed. All
+times are displayed in Coordinated Universal Time (UTC). (Other parts of
+CVS print times in the local timezone).
+
+ *'log' uses '-R' in a way that conflicts with the normal use inside
+CVS (*note Common options::).*
+
+A.15.1 log options
+------------------
+
+By default, 'log' prints all information that is available. All other
+options restrict the output. Note that the revision selection options
+('-b', '-d', '-r', '-s', and '-w') have no effect, other than possibly
+causing a search for files in Attic directories, when used in
+conjunction with the options that restrict the output to only 'log'
+header fields ('-h', '-R', and '-t') unless the '-S' option is also
+specified.
+
+'-b'
+ Print information about the revisions on the default branch,
+ normally the highest branch on the trunk.
+
+'-d DATES'
+ Print information about revisions with a checkin date/time in the
+ range given by the semicolon-separated list of dates. The date
+ formats accepted are those accepted by the '-D' option to many
+ other CVS commands (*note Common options::). Dates can be combined
+ into ranges as follows:
+
+ 'D1<D2'
+ 'D2>D1'
+ Select the revisions that were deposited between D1 and D2.
+
+ '<D'
+ 'D>'
+ Select all revisions dated D or earlier.
+
+ 'D<'
+ '>D'
+ Select all revisions dated D or later.
+
+ 'D'
+ Select the single, latest revision dated D or earlier.
+
+ The '>' or '<' characters may be followed by '=' to indicate an
+ inclusive range rather than an exclusive one.
+
+ Note that the separator is a semicolon (;).
+
+'-h'
+ Print only the name of the RCS file, name of the file in the
+ working directory, head, default branch, access list, locks,
+ symbolic names, and suffix.
+
+'-l'
+ Local; run only in current working directory. (Default is to run
+ recursively).
+
+'-N'
+ Do not print the list of tags for this file. This option can be
+ very useful when your site uses a lot of tags, so rather than
+ "more"'ing over 3 pages of tag information, the log information is
+ presented without tags at all.
+
+'-n'
+ Print the list of tags for this file. This option can be very
+ useful when your '.cvsrc' file has a 'log -N' entry as a way to get
+ a full list of all of the tags.
+
+'-R'
+ Print only the name of the RCS file.
+
+'-rREVISIONS'
+ Print information about revisions given in the comma-separated list
+ REVISIONS of revisions and ranges. The following table explains
+ the available range formats:
+
+ 'REV1:REV2'
+ Revisions REV1 to REV2 (which must be on the same branch).
+
+ 'REV1::REV2'
+ The same, but excluding REV1.
+
+ ':REV'
+ '::REV'
+ Revisions from the beginning of the branch up to and including
+ REV.
+
+ 'REV:'
+ Revisions starting with REV to the end of the branch
+ containing REV.
+
+ 'REV::'
+ Revisions starting just after REV to the end of the branch
+ containing REV.
+
+ 'BRANCH'
+ An argument that is a branch means all revisions on that
+ branch.
+
+ 'BRANCH1:BRANCH2'
+ 'BRANCH1::BRANCH2'
+ A range of branches means all revisions on the branches in
+ that range.
+
+ 'BRANCH.'
+ The latest revision in BRANCH.
+
+ A bare '-r' with no revisions means the latest revision on the
+ default branch, normally the trunk. There can be no space between
+ the '-r' option and its argument.
+
+'-S'
+ Suppress the header if no revisions are selected.
+
+'-s STATES'
+ Print information about revisions whose state attributes match one
+ of the states given in the comma-separated list STATES. Individual
+ states may be any text string, though CVS commonly only uses two
+ states, 'Exp' and 'dead'. See *note admin options:: for more
+ information.
+
+'-t'
+ Print the same as '-h', plus the descriptive text.
+
+'-wLOGINS'
+ Print information about revisions checked in by users with login
+ names appearing in the comma-separated list LOGINS. If LOGINS is
+ omitted, the user's login is assumed. There can be no space
+ between the '-w' option and its argument.
+
+ 'log' prints the intersection of the revisions selected with the
+options '-d', '-s', and '-w', intersected with the union of the
+revisions selected by '-b' and '-r'.
+
+A.15.2 log examples
+-------------------
+
+Contributed examples are gratefully accepted.
+
+A.16 rdiff--'patch' format diffs between releases
+=================================================
+
+ * rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
+ * Requires: repository.
+ * Changes: nothing.
+ * Synonym: patch
+
+ Builds a Larry Wall format patch(1) file between two releases, that
+can be fed directly into the 'patch' program to bring an old release
+up-to-date with the new release. (This is one of the few CVS commands
+that operates directly from the repository, and doesn't require a prior
+checkout.) The diff output is sent to the standard output device.
+
+ You can specify (using the standard '-r' and '-D' options) any
+combination of one or two revisions or dates. If only one revision or
+date is specified, the patch file reflects differences between that
+revision or date and the current head revisions in the RCS file.
+
+ Note that if the software release affected is contained in more than
+one directory, then it may be necessary to specify the '-p' option to
+the 'patch' command when patching the old sources, so that 'patch' is
+able to find the files that are located in other directories.
+
+A.16.1 rdiff options
+--------------------
+
+These standard options are supported by 'rdiff' (*note Common options::
+for a complete description of them):
+
+'-D DATE'
+ Use the most recent revision no later than DATE.
+
+'-f'
+ If no matching revision is found, retrieve the most recent revision
+ (instead of ignoring the file).
+
+'-k KFLAG'
+ Process keywords according to KFLAG. See *note Keyword
+ substitution::.
+
+'-l'
+ Local; don't descend subdirectories.
+
+'-R'
+ Examine directories recursively. This option is on by default.
+
+'-r TAG'
+ Use revision TAG.
+
+ In addition to the above, these options are available:
+
+'-c'
+ Use the context diff format. This is the default format.
+
+'-s'
+ Create a summary change report instead of a patch. The summary
+ includes information about files that were changed or added between
+ the releases. It is sent to the standard output device. This is
+ useful for finding out, for example, which files have changed
+ between two dates or revisions.
+
+'-t'
+ A diff of the top two revisions is sent to the standard output
+ device. This is most useful for seeing what the last change to a
+ file was.
+
+'-u'
+ Use the unidiff format for the context diffs. Remember that old
+ versions of the 'patch' program can't handle the unidiff format, so
+ if you plan to post this patch to the net you should probably not
+ use '-u'.
+
+'-V VN'
+ Expand keywords according to the rules current in RCS version VN
+ (the expansion format changed with RCS version 5). Note that this
+ option is no longer accepted. CVS will always expand keywords the
+ way that RCS version 5 does.
+
+A.16.2 rdiff examples
+---------------------
+
+Suppose you receive mail from address@hidden asking for an update from
+release 1.2 to 1.4 of the tc compiler. You have no such patches on
+hand, but with CVS that can easily be fixed with a command such as this:
+
+ $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
+ > Mail -s 'The patches you asked for' address@hidden
+
+ Suppose you have made release 1.3, and forked a branch called
+'R_1_3fix' for bug fixes. 'R_1_3_1' corresponds to release 1.3.1, which
+was made some time ago. Now, you want to see how much development has
+been done on the branch. This command can be used:
+
+ $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
+ cvs rdiff: Diffing module-name
+ File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
+ File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
+ File bar.h,v changed from revision 1.29.2.1 to 1.2
+
+A.17 release--Indicate that a Module is no longer in use
+========================================================
+
+ * release [-d] directories...
+ * Requires: Working directory.
+ * Changes: Working directory, history log.
+
+ This command is meant to safely cancel the effect of 'cvs checkout'.
+Since CVS doesn't lock files, it isn't strictly necessary to use this
+command. You can always simply delete your working directory, if you
+like; but you risk losing changes you may have forgotten, and you leave
+no trace in the CVS history file (*note history file::) that you've
+abandoned your checkout.
+
+ Use 'cvs release' to avoid these problems. This command checks that
+no uncommitted changes are present; that you are executing it from
+immediately above a CVS working directory; and that the repository
+recorded for your files is the same as the repository defined in the
+module database.
+
+ If all these conditions are true, 'cvs release' leaves a record of
+its execution (attesting to your intentionally abandoning your checkout)
+in the CVS history log.
+
+A.17.1 release options
+----------------------
+
+The 'release' command supports one command option:
+
+'-d'
+ Delete your working copy of the file if the release succeeds. If
+ this flag is not given your files will remain in your working
+ directory.
+
+ *WARNING: The 'release' command deletes all directories and files
+ recursively. This has the very serious side-effect that any
+ directory created inside checked-out sources, and not added to the
+ repository (using the 'add' command; *note Adding files::) will be
+ silently deleted--even if it is non-empty!*
+
+A.17.2 release output
+---------------------
+
+Before 'release' releases your sources it will print a one-line message
+for any file that is not up-to-date.
+
+'U FILE'
+'P FILE'
+ There exists a newer revision of this file in the repository, and
+ you have not modified your local copy of the file ('U' and 'P' mean
+ the same thing).
+
+'A FILE'
+ The file has been added to your private copy of the sources, but
+ has not yet been committed to the repository. If you delete your
+ copy of the sources this file will be lost.
+
+'R FILE'
+ The file has been removed from your private copy of the sources,
+ but has not yet been removed from the repository, since you have
+ not yet committed the removal. See *note commit::.
+
+'M FILE'
+ The file is modified in your working directory. There might also
+ be a newer revision inside the repository.
+
+'? FILE'
+ FILE is in your working directory, but does not correspond to
+ anything in the source repository, and is not in the list of files
+ for CVS to ignore (see the description of the '-I' option, and
+ *note cvsignore::). If you remove your working sources, this file
+ will be lost.
+
+A.17.3 release examples
+-----------------------
+
+Release the 'tc' directory, and delete your local working copy of the
+files.
+
+ $ cd .. # You must stand immediately above the
+ # sources when you issue 'cvs release'.
+ $ cvs release -d tc
+ You have [0] altered files in this repository.
+ Are you sure you want to release (and delete) directory `tc': y
+ $
+
+A.18 remove--Remove files from active use
+=========================================
+
+ * Synopsis: remove [-flR] [files...]
+ * Requires: repository, working directory.
+ * Changes: working directory.
+
+ The 'remove' command is used to remove unwanted files from active
+use. The user normally deletes the files from the working directory
+prior to invocation of the 'remove' command. Only the working directory
+is updated. Changes to the repository are not made until the 'commit'
+command is run.
+
+ The 'remove' command does not delete files from from the repository.
+CVS keeps all historical data in the repository so that it is possible
+to reconstruct previous states of the projects under revision control.
+
+ To undo CVS 'remove' or to resurrect files that were previously
+removed, *Note add::.
+
+A.18.1 remove options
+---------------------
+
+These standard options are supported by 'remove' (*note Common options::
+for a complete description of them):
+
+'-l'
+ Local; run only in current working directory. See *note Recursive
+ behavior::.
+
+'-R'
+ Process directories recursively. See *note Recursive behavior::.
+
+ In addition, these options are also supported:
+
+'-f'
+ Note that this is not the standard behavior of the '-f' option as
+ defined in *note Common options::.
+
+ Delete files before removing them.
+
+ Entire directory hierarchies are easily removed using '-f', but
+ take note that it is not as easy to resurrect directory hierarchies
+ as it is to remove them.
+
+A.18.2 remove examples
+----------------------
+
+A.18.2.1 Removing a file
+........................
+
+ $ cvs remove remove.me
+ cvs remove: file `remove.me' still in working directory
+ cvs remove: 1 file exists; remove it first
+ $ rm -f remove.me
+ $ cvs remove remove.me
+ cvs remove: scheduling `remove.me' for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+
+ $ ls remove.it
+ remove.it
+ $ cvs remove -f remove.it
+ cvs remove: scheduling `remove.it' for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+
+A.18.2.2 Removing entire directories
+....................................
+
+ $ tree -d a
+ a
+ |-- CVS
+ `-- b
+ `-- CVS
+
+ 3 directories
+ $ cvs remove -f a
+ cvs remove: Removing a
+ cvs remove: Removing a/b
+ cvs remove: scheduling `a/b/c' for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+
+A.19 update--Bring work tree in sync with repository
+====================================================
+
+ * update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r
+ tag|-D date] [-W spec] files...
+ * Requires: repository, working directory.
+ * Changes: working directory.
+
+ After you've run checkout to create your private copy of source from
+the common repository, other developers will continue changing the
+central source. From time to time, when it is convenient in your
+development process, you can use the 'update' command from within your
+working directory to reconcile your work with any revisions applied to
+the source repository since your last checkout or update.
+
+A.19.1 update options
+---------------------
+
+These standard options are available with 'update' (*note Common
+options:: for a complete description of them):
+
+'-D date'
+ Use the most recent revision no later than DATE. This option is
+ sticky, and implies '-P'. See *note Sticky tags:: for more
+ information on sticky tags/dates.
+
+'-f'
+ Only useful with the '-D DATE' or '-r TAG' flags. If no matching
+ revision is found, retrieve the most recent revision (instead of
+ ignoring the file).
+
+'-k KFLAG'
+ Process keywords according to KFLAG. See *note Keyword
+ substitution::. This option is sticky; future updates of this file
+ in this working directory will use the same KFLAG. The 'status'
+ command can be viewed to see the sticky options. See *note
+ Invoking CVS:: for more information on the 'status' command.
+
+'-l'
+ Local; run only in current working directory. See *note Recursive
+ behavior::.
+
+'-P'
+ Prune empty directories. See *note Moving directories::.
+
+'-p'
+ Pipe files to the standard output.
+
+'-R'
+ Update directories recursively (default). See *note Recursive
+ behavior::.
+
+'-r rev'
+ Retrieve revision/tag REV. This option is sticky, and implies
+ '-P'. See *note Sticky tags::, for more information on sticky
+ tags/dates.
+
+ These special options are also available with 'update'.
+
+'-A'
+ Reset any sticky tags, dates, or '-k' options. Does not reset
+ sticky '-k' options on modified files. See *note Sticky tags:: for
+ more information on sticky tags/dates.
+
+'-C'
+ Overwrite locally modified files with clean copies from the
+ repository (the modified file is saved in '.#FILE.REVISION',
+ however).
+
+'-d'
+ Create any directories that exist in the repository if they're
+ missing from the working directory. Normally, 'update' acts only
+ on directories and files that were already enrolled in your working
+ directory.
+
+ This is useful for updating directories that were created in the
+ repository since the initial checkout; but it has an unfortunate
+ side effect. If you deliberately avoided certain directories in
+ the repository when you created your working directory (either
+ through use of a module name or by listing explicitly the files and
+ directories you wanted on the command line), then updating with
+ '-d' will create those directories, which may not be what you want.
+
+'-I NAME'
+ Ignore files whose names match NAME (in your working directory)
+ during the update. You can specify '-I' more than once on the
+ command line to specify several files to ignore. Use '-I !' to
+ avoid ignoring any files at all. See *note cvsignore:: for other
+ ways to make CVS ignore some files.
+
+'-WSPEC'
+ Specify file names that should be filtered during update. You can
+ use this option repeatedly.
+
+ SPEC can be a file name pattern of the same type that you can
+ specify in the '.cvswrappers' file. See *note Wrappers::.
+
+'-jREVISION'
+ With two '-j' options, merge changes from the revision specified
+ with the first '-j' option to the revision specified with the
+ second 'j' option, into the working directory.
+
+ With one '-j' option, merge changes from the ancestor revision to
+ the revision specified with the '-j' option, into the working
+ directory. The ancestor revision is the common ancestor of the
+ revision which the working directory is based on, and the revision
+ specified in the '-j' option.
+
+ Note that using a single '-j TAGNAME' option rather than '-j
+ BRANCHNAME' to merge changes from a branch will often not remove
+ files which were removed on the branch. See *note Merging adds and
+ removals:: for more information.
+
+ In addition, each '-j' option can contain an optional date
+ specification which, when used with branches, can limit the chosen
+ revision to one within a specific date. An optional date is
+ specified by adding a colon (:) to the tag:
+ '-jSYMBOLIC_TAG:DATE_SPECIFIER'.
+
+ See *note Branching and merging::.
+
+A.19.2 update output
+--------------------
+
+'update' and 'checkout' keep you informed of their progress by printing
+a line for each file, preceded by one character indicating the status of
+the file:
+
+'U FILE'
+ The file was brought up to date with respect to the repository.
+ This is done for any file that exists in the repository but not in
+ your working directory, and for files that you haven't changed but
+ are not the most recent versions available in the repository.
+
+'P FILE'
+ Like 'U', but the CVS server sends a patch instead of an entire
+ file. This accomplishes the same thing as 'U' using less
+ bandwidth.
+
+'A FILE'
+ The file has been added to your private copy of the sources, and
+ will be added to the source repository when you run 'commit' on the
+ file. This is a reminder to you that the file needs to be
+ committed.
+
+'R FILE'
+ The file has been removed from your private copy of the sources,
+ and will be removed from the source repository when you run
+ 'commit' on the file. This is a reminder to you that the file
+ needs to be committed.
+
+'M FILE'
+ The file is modified in your working directory.
+
+ 'M' can indicate one of two states for a file you're working on:
+ either there were no modifications to the same file in the
+ repository, so that your file remains as you last saw it; or there
+ were modifications in the repository as well as in your copy, but
+ they were merged successfully, without conflict, in your working
+ directory.
+
+ CVS will print some messages if it merges your work, and a backup
+ copy of your working file (as it looked before you ran 'update')
+ will be made. The exact name of that file is printed while
+ 'update' runs.
+
+'C FILE'
+ A conflict was detected while trying to merge your changes to FILE
+ with changes from the source repository. FILE (the copy in your
+ working directory) is now the result of attempting to merge the two
+ revisions; an unmodified copy of your file is also in your working
+ directory, with the name '.#FILE.REVISION' where REVISION is the
+ revision that your modified file started from. Resolve the
+ conflict as described in *note Conflicts example::. (Note that
+ some systems automatically purge files that begin with '.#' if they
+ have not been accessed for a few days. If you intend to keep a
+ copy of your original file, it is a very good idea to rename it.)
+ Under VMS, the file name starts with '__' rather than '.#'.
+
+'? FILE'
+ FILE is in your working directory, but does not correspond to
+ anything in the source repository, and is not in the list of files
+ for CVS to ignore (see the description of the '-I' option, and
+ *note cvsignore::).
+
+Appendix B Quick reference to CVS commands
+******************************************
+
+This appendix describes how to invoke CVS, with references to where each
+command or feature is described in detail. For other references run the
+'cvs --help' command, or see *note Index::.
+
+ A CVS command looks like:
+
+ cvs [ GLOBAL_OPTIONS ] COMMAND [ COMMAND_OPTIONS ] [ COMMAND_ARGS ]
+
+ Global options:
+
+'--allow-root=ROOTDIR'
+ Specify legal CVSROOT directory (server only) (not in CVS 1.9 and
+ older). See *note Password authentication server::.
+
+'-a'
+ Authenticate all communication (client only) (not in CVS 1.9 and
+ older). See *note Global options::.
+
+'-b'
+ Specify RCS location (CVS 1.9 and older). See *note Global
+ options::.
+
+'-d ROOT'
+ Specify the CVSROOT. See *note Repository::.
+
+'-e EDITOR'
+ Edit messages with EDITOR. See *note Committing your changes::.
+
+'-f'
+ Do not read the '~/.cvsrc' file. See *note Global options::.
+
+'-H'
+'--help'
+ Print a help message. See *note Global options::.
+
+'-n'
+ Do not change any files. See *note Global options::.
+
+'-Q'
+ Be really quiet. See *note Global options::.
+
+'-q'
+ Be somewhat quiet. See *note Global options::.
+
+'-r'
+ Make new working files read-only. See *note Global options::.
+
+'-s VARIABLE=VALUE'
+ Set a user variable. See *note Variables::.
+
+'-T TEMPDIR'
+ Put temporary files in TEMPDIR. See *note Global options::.
+
+'-t'
+ Trace CVS execution. See *note Global options::.
+
+'-v'
+'--version'
+ Display version and copyright information for CVS.
+
+'-w'
+ Make new working files read-write. See *note Global options::.
+
+'-x'
+ Encrypt all communication (client only). See *note Global
+ options::.
+
+'-z GZIP-LEVEL'
+ Set the compression level (client only). See *note Global
+ options::.
+
+ Keyword expansion modes (*note Substitution modes::):
+
+ -kkv $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+ -kkvl $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+ -kk $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+ -kv file1,v 1.1 1993/12/09 03:21:13 joe Exp
+ -ko no expansion
+ -kb no expansion, file is binary
+
+ Keywords (*note Keyword list::):
+
+ $Author: ineiev $
+ $Date: 2015/12/28 15:57:44 $
+ $Header: /web/trans-coord/trans-coord/manual/cvs/cvs.txt,v 1.1 2015/12/28
15:57:44 ineiev Exp $
+ $Id: cvs.txt,v 1.1 2015/12/28 15:57:44 ineiev Exp $
+ $Locker: $
+ $Name: $
+ $RCSfile: cvs.txt,v $
+ $Revision: 1.1 $
+ $Source: /web/trans-coord/trans-coord/manual/cvs/cvs.txt,v $
+ $State: Exp $
+ $Log: cvs.txt,v $
+ Revision 1.1 2015/12/28 15:57:44 ineiev
+ Add cvs manual RT #1073518.
+
+ Revision 1.1 1993/12/09 03:30:17 joe
+ Initial revision
+
+
+ Commands, command options, and command arguments:
+
+'add [OPTIONS] [FILES...]'
+ Add a new file/directory. See *note Adding files::.
+
+ '-k KFLAG'
+ Set keyword expansion.
+
+ '-m MSG'
+ Set file description.
+
+'admin [OPTIONS] [FILES...]'
+ Administration of history files in the repository. See *note
+ admin::.
+
+ '-b[REV]'
+ Set default branch. See *note Reverting local changes::.
+
+ '-cSTRING'
+ Set comment leader.
+
+ '-kSUBST'
+ Set keyword substitution. See *note Keyword substitution::.
+
+ '-l[REV]'
+ Lock revision REV, or latest revision.
+
+ '-mREV:MSG'
+ Replace the log message of revision REV with MSG.
+
+ '-oRANGE'
+ Delete revisions from the repository. See *note admin
+ options::.
+
+ '-q'
+ Run quietly; do not print diagnostics.
+
+ '-sSTATE[:REV]'
+ Set the state. See *note admin options:: for more information
+ on possible states.
+
+ '-t'
+ Set file description from standard input.
+
+ '-tFILE'
+ Set file description from FILE.
+
+ '-t-STRING'
+ Set file description to STRING.
+
+ '-u[REV]'
+ Unlock revision REV, or latest revision.
+
+'annotate [OPTIONS] [FILES...]'
+ Show last revision where each line was modified. See *note
+ annotate::.
+
+ '-D DATE'
+ Annotate the most recent revision no later than DATE. See
+ *note Common options::.
+
+ '-F'
+ Force annotation of binary files. (Without this option,
+ binary files are skipped with a message.)
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-l'
+ Local; run only in current working directory. *Note Recursive
+ behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r TAG'
+ Annotate revision TAG. See *note Common options::.
+
+'checkout [OPTIONS] MODULES...'
+ Get a copy of the sources. See *note checkout::.
+
+ '-A'
+ Reset any sticky tags/date/options. See *note Sticky tags::
+ and *note Keyword substitution::.
+
+ '-c'
+ Output the module database. See *note checkout options::.
+
+ '-D DATE'
+ Check out revisions as of DATE (is sticky). See *note Common
+ options::.
+
+ '-d DIR'
+ Check out into DIR. See *note checkout options::.
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-j REV'
+ Merge in changes. See *note checkout options::.
+
+ '-k KFLAG'
+ Use KFLAG keyword expansion. See *note Substitution modes::.
+
+ '-l'
+ Local; run only in current working directory. *Note Recursive
+ behavior::.
+
+ '-N'
+ Don't "shorten" module paths if -d specified. See *note
+ checkout options::.
+
+ '-n'
+ Do not run module program (if any). See *note checkout
+ options::.
+
+ '-P'
+ Prune empty directories. See *note Moving directories::.
+
+ '-p'
+ Check out files to standard output (avoids stickiness). See
+ *note checkout options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r TAG'
+ Checkout revision TAG (is sticky). See *note Common
+ options::.
+
+ '-s'
+ Like -c, but include module status. See *note checkout
+ options::.
+
+'commit [OPTIONS] [FILES...]'
+ Check changes into the repository. See *note commit::.
+
+ '-F FILE'
+ Read log message from FILE. See *note commit options::.
+
+ '-f'
+ Force the file to be committed; disables recursion. See *note
+ commit options::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-m MSG'
+ Use MSG as log message. See *note commit options::.
+
+ '-n'
+ Do not run module program (if any). See *note commit
+ options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r REV'
+ Commit to REV. See *note commit options::.
+
+'diff [OPTIONS] [FILES...]'
+ Show differences between revisions. See *note diff::. In addition
+ to the options shown below, accepts a wide variety of options to
+ control output style, for example '-c' for context diffs.
+
+ '-D DATE1'
+ Diff revision for date against working file. See *note diff
+ options::.
+
+ '-D DATE2'
+ Diff REV1/DATE1 against DATE2. See *note diff options::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-N'
+ Include diffs for added and removed files. See *note diff
+ options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r REV1'
+ Diff revision for REV1 against working file. See *note diff
+ options::.
+
+ '-r REV2'
+ Diff REV1/DATE1 against REV2. See *note diff options::.
+
+'edit [OPTIONS] [FILES...]'
+ Get ready to edit a watched file. See *note Editing files::.
+
+ '-a ACTIONS'
+ Specify actions for temporary watch, where ACTIONS is 'edit',
+ 'unedit', 'commit', 'all', or 'none'. See *note Editing
+ files::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+'editors [OPTIONS] [FILES...]'
+ See who is editing a watched file. See *note Watch information::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+'export [OPTIONS] MODULES...'
+ Export files from CVS. See *note export::.
+
+ '-D DATE'
+ Check out revisions as of DATE. See *note Common options::.
+
+ '-d DIR'
+ Check out into DIR. See *note export options::.
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-k KFLAG'
+ Use KFLAG keyword expansion. See *note Substitution modes::.
+
+ '-l'
+ Local; run only in current working directory. *Note Recursive
+ behavior::.
+
+ '-N'
+ Don't "shorten" module paths if -d specified. See *note
+ export options::.
+
+ '-n'
+ Do not run module program (if any). See *note export
+ options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r TAG'
+ Checkout revision TAG. See *note Common options::.
+
+'history [OPTIONS] [FILES...]'
+ Show repository access history. See *note history::.
+
+ '-a'
+ All users (default is self). See *note history options::.
+
+ '-b STR'
+ Back to record with STR in module/file/repos field. See *note
+ history options::.
+
+ '-c'
+ Report on committed (modified) files. See *note history
+ options::.
+
+ '-D DATE'
+ Since DATE. See *note history options::.
+
+ '-e'
+ Report on all record types. See *note history options::.
+
+ '-l'
+ Last modified (committed or modified report). See *note
+ history options::.
+
+ '-m MODULE'
+ Report on MODULE (repeatable). See *note history options::.
+
+ '-n MODULE'
+ In MODULE. See *note history options::.
+
+ '-o'
+ Report on checked out modules. See *note history options::.
+
+ '-p REPOSITORY'
+ In REPOSITORY. See *note history options::.
+
+ '-r REV'
+ Since revision REV. See *note history options::.
+
+ '-T'
+ Produce report on all TAGs. See *note history options::.
+
+ '-t TAG'
+ Since tag record placed in history file (by anyone). See
+ *note history options::.
+
+ '-u USER'
+ For user USER (repeatable). See *note history options::.
+
+ '-w'
+ Working directory must match. See *note history options::.
+
+ '-x TYPES'
+ Report on TYPES, one or more of 'TOEFWUPCGMAR'. See *note
+ history options::.
+
+ '-z ZONE'
+ Output for time zone ZONE. See *note history options::.
+
+'import [OPTIONS] REPOSITORY VENDOR-TAG RELEASE-TAGS...'
+ Import files into CVS, using vendor branches. See *note import::.
+
+ '-b BRA'
+ Import to vendor branch BRA. See *note Multiple vendor
+ branches::.
+
+ '-d'
+ Use the file's modification time as the time of import. See
+ *note import options::.
+
+ '-k KFLAG'
+ Set default keyword substitution mode. See *note import
+ options::.
+
+ '-m MSG'
+ Use MSG for log message. See *note import options::.
+
+ '-I IGN'
+ More files to ignore (! to reset). See *note import
+ options::.
+
+ '-W SPEC'
+ More wrappers. See *note import options::.
+
+'init'
+ Create a CVS repository if it doesn't exist. See *note Creating a
+ repository::.
+
+'kserver'
+ Kerberos authenticated server. See *note Kerberos authenticated::.
+
+'log [OPTIONS] [FILES...]'
+ Print out history information for files. See *note log::.
+
+ '-b'
+ Only list revisions on the default branch. See *note log
+ options::.
+
+ '-d DATES'
+ Specify dates (D1<D2 for range, D for latest before). See
+ *note log options::.
+
+ '-h'
+ Only print header. See *note log options::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-N'
+ Do not list tags. See *note log options::.
+
+ '-R'
+ Only print name of RCS file. See *note log options::.
+
+ '-rREVS'
+ Only list revisions REVS. See *note log options::.
+
+ '-s STATES'
+ Only list revisions with specified states. See *note log
+ options::.
+
+ '-t'
+ Only print header and descriptive text. See *note log
+ options::.
+
+ '-wLOGINS'
+ Only list revisions checked in by specified logins. See *note
+ log options::.
+
+'login'
+ Prompt for password for authenticating server. See *note Password
+ authentication client::.
+
+'logout'
+ Remove stored password for authenticating server. See *note
+ Password authentication client::.
+
+'pserver'
+ Password authenticated server. See *note Password authentication
+ server::.
+
+'rannotate [OPTIONS] [MODULES...]'
+ Show last revision where each line was modified. See *note
+ annotate::.
+
+ '-D DATE'
+ Annotate the most recent revision no later than DATE. See
+ *note Common options::.
+
+ '-F'
+ Force annotation of binary files. (Without this option,
+ binary files are skipped with a message.)
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-l'
+ Local; run only in current working directory. *Note Recursive
+ behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r TAG'
+ Annotate revision TAG. See *note Common options::.
+
+'rdiff [OPTIONS] MODULES...'
+ Show differences between releases. See *note rdiff::.
+
+ '-c'
+ Context diff output format (default). See *note rdiff
+ options::.
+
+ '-D DATE'
+ Select revisions based on DATE. See *note Common options::.
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r REV'
+ Select revisions based on REV. See *note Common options::.
+
+ '-s'
+ Short patch - one liner per file. See *note rdiff options::.
+
+ '-t'
+ Top two diffs - last change made to the file. See *note diff
+ options::.
+
+ '-u'
+ Unidiff output format. See *note rdiff options::.
+
+ '-V VERS'
+ Use RCS Version VERS for keyword expansion (obsolete). See
+ *note rdiff options::.
+
+'release [OPTIONS] DIRECTORY'
+ Indicate that a directory is no longer in use. See *note
+ release::.
+
+ '-d'
+ Delete the given directory. See *note release options::.
+
+'remove [OPTIONS] [FILES...]'
+ Remove an entry from the repository. See *note Removing files::.
+
+ '-f'
+ Delete the file before removing it. See *note Removing
+ files::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+'rlog [OPTIONS] [FILES...]'
+ Print out history information for modules. See *note log::.
+
+ '-b'
+ Only list revisions on the default branch. See *note log
+ options::.
+
+ '-d DATES'
+ Specify dates (D1<D2 for range, D for latest before). See
+ *note log options::.
+
+ '-h'
+ Only print header. See *note log options::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-N'
+ Do not list tags. See *note log options::.
+
+ '-R'
+ Only print name of RCS file. See *note log options::.
+
+ '-rREVS'
+ Only list revisions REVS. See *note log options::.
+
+ '-s STATES'
+ Only list revisions with specified states. See *note log
+ options::.
+
+ '-t'
+ Only print header and descriptive text. See *note log
+ options::.
+
+ '-wLOGINS'
+ Only list revisions checked in by specified logins. See *note
+ log options::.
+
+'rtag [OPTIONS] TAG MODULES...'
+ Add a symbolic tag to a module. See *note Revisions:: and *note
+ Branching and merging::.
+
+ '-a'
+ Clear tag from removed files that would not otherwise be
+ tagged. See *note Tagging add/remove::.
+
+ '-b'
+ Create a branch named TAG. See *note Branching and merging::.
+
+ '-B'
+ Used in conjunction with -F or -d, enables movement and
+ deletion of branch tags. Use with extreme caution.
+
+ '-D DATE'
+ Tag revisions as of DATE. See *note Tagging by date/tag::.
+
+ '-d'
+ Delete TAG. See *note Modifying tags::.
+
+ '-F'
+ Move TAG if it already exists. See *note Modifying tags::.
+
+ '-f'
+ Force a head revision match if tag/date not found. See *note
+ Tagging by date/tag::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-n'
+ No execution of tag program. See *note Common options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r REV'
+ Tag existing tag REV. See *note Tagging by date/tag::.
+
+'server'
+ Rsh server. See *note Connecting via rsh::.
+
+'status [OPTIONS] FILES...'
+ Display status information in a working directory. See *note File
+ status::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-v'
+ Include tag information for file. See *note Tags::.
+
+'tag [OPTIONS] TAG [FILES...]'
+ Add a symbolic tag to checked out version of files. See *note
+ Revisions:: and *note Branching and merging::.
+
+ '-b'
+ Create a branch named TAG. See *note Branching and merging::.
+
+ '-c'
+ Check that working files are unmodified. See *note Tagging
+ the working directory::.
+
+ '-D DATE'
+ Tag revisions as of DATE. See *note Tagging by date/tag::.
+
+ '-d'
+ Delete TAG. See *note Modifying tags::.
+
+ '-F'
+ Move TAG if it already exists. See *note Modifying tags::.
+
+ '-f'
+ Force a head revision match if tag/date not found. See *note
+ Tagging by date/tag::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r REV'
+ Tag existing tag REV. See *note Tagging by date/tag::.
+
+'unedit [OPTIONS] [FILES...]'
+ Undo an edit command. See *note Editing files::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+'update [OPTIONS] [FILES...]'
+ Bring work tree in sync with repository. See *note update::.
+
+ '-A'
+ Reset any sticky tags/date/options. See *note Sticky tags::
+ and *note Keyword substitution::.
+
+ '-C'
+ Overwrite locally modified files with clean copies from the
+ repository (the modified file is saved in '.#FILE.REVISION',
+ however).
+
+ '-D DATE'
+ Check out revisions as of DATE (is sticky). See *note Common
+ options::.
+
+ '-d'
+ Create directories. See *note update options::.
+
+ '-f'
+ Use head revision if tag/date not found. See *note Common
+ options::.
+
+ '-I IGN'
+ More files to ignore (! to reset). See *note import
+ options::.
+
+ '-j REV'
+ Merge in changes. See *note update options::.
+
+ '-k KFLAG'
+ Use KFLAG keyword expansion. See *note Substitution modes::.
+
+ '-l'
+ Local; run only in current working directory. *Note Recursive
+ behavior::.
+
+ '-P'
+ Prune empty directories. See *note Moving directories::.
+
+ '-p'
+ Check out files to standard output (avoids stickiness). See
+ *note update options::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ '-r TAG'
+ Checkout revision TAG (is sticky). See *note Common
+ options::.
+
+ '-W SPEC'
+ More wrappers. See *note import options::.
+
+'version'
+
+ Display the version of CVS being used. If the repository is
+ remote, display both the client and server versions.
+
+'watch [on|off|add|remove] [OPTIONS] [FILES...]'
+
+ on/off: turn on/off read-only checkouts of files. See *note
+ Setting a watch::.
+
+ add/remove: add or remove notification on actions. See *note
+ Getting Notified::.
+
+ '-a ACTIONS'
+ Specify actions for temporary watch, where ACTIONS is 'edit',
+ 'unedit', 'commit', 'all', or 'none'. See *note Editing
+ files::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+'watchers [OPTIONS] [FILES...]'
+ See who is watching a file. See *note Watch information::.
+
+ '-l'
+ Local; run only in current working directory. See *note
+ Recursive behavior::.
+
+ '-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+Appendix C Reference manual for Administrative files
+****************************************************
+
+Inside the repository, in the directory '$CVSROOT/CVSROOT', there are a
+number of supportive files for CVS. You can use CVS in a limited
+fashion without any of them, but if they are set up properly they can
+help make life easier. For a discussion of how to edit them, see *note
+Intro administrative files::.
+
+ The most important of these files is the 'modules' file, which
+defines the modules inside the repository.
+
+C.1 The modules file
+====================
+
+The 'modules' file records your definitions of names for collections of
+source code. CVS will use these definitions if you use CVS to update
+the modules file (use normal commands like 'add', 'commit', etc).
+
+ The 'modules' file may contain blank lines and comments (lines
+beginning with '#') as well as module definitions. Long lines can be
+continued on the next line by specifying a backslash ('\') as the last
+character on the line.
+
+ There are three basic types of modules: alias modules, regular
+modules, and ampersand modules. The difference between them is the way
+that they map files in the repository to files in the working directory.
+In all of the following examples, the top-level repository contains a
+directory called 'first-dir', which contains two files, 'file1' and
+'file2', and a directory 'sdir'. 'first-dir/sdir' contains a file
+'sfile'.
+
+C.1.1 Alias modules
+-------------------
+
+Alias modules are the simplest kind of module:
+
+'MNAME -a ALIASES...'
+ This represents the simplest way of defining a module MNAME. The
+ '-a' flags the definition as a simple alias: CVS will treat any use
+ of MNAME (as a command argument) as if the list of names ALIASES
+ had been specified instead. ALIASES may contain either other
+ module names or paths. When you use paths in aliases, 'checkout'
+ creates all intermediate directories in the working directory, just
+ as if the path had been specified explicitly in the CVS arguments.
+
+ For example, if the modules file contains:
+
+ amodule -a first-dir
+
+then the following two commands are equivalent:
+
+ $ cvs co amodule
+ $ cvs co first-dir
+
+and they each would provide output such as:
+
+ cvs checkout: Updating first-dir
+ U first-dir/file1
+ U first-dir/file2
+ cvs checkout: Updating first-dir/sdir
+ U first-dir/sdir/sfile
+
+C.1.2 Regular modules
+---------------------
+
+'MNAME [ options ] DIR [ FILES... ]'
+ In the simplest case, this form of module definition reduces to
+ 'MNAME DIR'. This defines all the files in directory DIR as module
+ mname. DIR is a relative path (from '$CVSROOT') to a directory of
+ source in the source repository. In this case, on checkout, a
+ single directory called MNAME is created as a working directory; no
+ intermediate directory levels are used by default, even if DIR was
+ a path involving several directory levels.
+
+ For example, if a module is defined by:
+
+ regmodule first-dir
+
+then regmodule will contain the files from first-dir:
+
+ $ cvs co regmodule
+ cvs checkout: Updating regmodule
+ U regmodule/file1
+ U regmodule/file2
+ cvs checkout: Updating regmodule/sdir
+ U regmodule/sdir/sfile
+ $
+
+ By explicitly specifying files in the module definition after DIR,
+you can select particular files from directory DIR. Here is an example:
+
+ regfiles first-dir/sdir sfile
+
+With this definition, getting the regfiles module will create a single
+working directory 'regfiles' containing the file listed, which comes
+from a directory deeper in the CVS source repository:
+
+ $ cvs co regfiles
+ U regfiles/sfile
+ $
+
+C.1.3 Ampersand modules
+-----------------------
+
+A module definition can refer to other modules by including '&MODULE' in
+its definition.
+ MNAME [ options ] &MODULE...
+
+ Then getting the module creates a subdirectory for each such module,
+in the directory containing the module. For example, if modules
+contains
+
+ ampermod &first-dir
+
+then a checkout will create an 'ampermod' directory which contains a
+directory called 'first-dir', which in turns contains all the
+directories and files which live there. For example, the command
+
+ $ cvs co ampermod
+
+will create the following files:
+
+ ampermod/first-dir/file1
+ ampermod/first-dir/file2
+ ampermod/first-dir/sdir/sfile
+
+ There is one quirk/bug: the messages that CVS prints omit the
+'ampermod', and thus do not correctly display the location to which it
+is checking out the files:
+
+ $ cvs co ampermod
+ cvs checkout: Updating first-dir
+ U first-dir/file1
+ U first-dir/file2
+ cvs checkout: Updating first-dir/sdir
+ U first-dir/sdir/sfile
+ $
+
+ Do not rely on this buggy behavior; it may get fixed in a future
+release of CVS.
+
+C.1.4 Excluding directories
+---------------------------
+
+An alias module may exclude particular directories from other modules by
+using an exclamation mark ('!') before the name of each directory to be
+excluded.
+
+ For example, if the modules file contains:
+
+ exmodule -a !first-dir/sdir first-dir
+
+then checking out the module 'exmodule' will check out everything in
+'first-dir' except any files in the subdirectory 'first-dir/sdir'.
+
+C.1.5 Module options
+--------------------
+
+Either regular modules or ampersand modules can contain options, which
+supply additional information concerning the module.
+
+'-d NAME'
+ Name the working directory something other than the module name.
+
+'-e PROG'
+ Specify a program PROG to run whenever files in a module are
+ exported. PROG runs with a single argument, the module name.
+
+'-o PROG'
+ Specify a program PROG to run whenever files in a module are
+ checked out. PROG runs with a single argument, the module name.
+ See *note Module program options:: for information on how PROG is
+ called.
+
+'-s STATUS'
+ Assign a status to the module. When the module file is printed
+ with 'cvs checkout -s' the modules are sorted according to
+ primarily module status, and secondarily according to the module
+ name. This option has no other meaning. You can use this option
+ for several things besides status: for instance, list the person
+ that is responsible for this module.
+
+'-t PROG'
+ Specify a program PROG to run whenever files in a module are tagged
+ with 'rtag'. PROG runs with two arguments: the module name and the
+ symbolic tag specified to 'rtag'. It is not run when 'tag' is
+ executed. Generally you will find that the 'taginfo' file is a
+ better solution (*note taginfo::).
+
+ You should also see *note Module program options:: about how the
+"program options" programs are run.
+
+C.1.6 How the modules file "program options" programs are run
+-------------------------------------------------------------
+
+For checkout, rtag, and export, the program is server-based, and as such
+the following applies:-
+
+ If using remote access methods (pserver, ext, etc.), CVS will execute
+this program on the server from a temporary directory. The path is
+searched for this program.
+
+ If using "local access" (on a local or remote NFS file system, i.e.,
+repository set just to a path), the program will be executed from the
+newly checked-out tree, if found there, or alternatively searched for in
+the path if not.
+
+ The programs are all run after the operation has effectively
+completed.
+
+C.2 The cvswrappers file
+========================
+
+Wrappers refers to a CVS feature which lets you control certain settings
+based on the name of the file which is being operated on. The settings
+are '-k' for binary files, and '-m' for nonmergeable text files.
+
+ The '-m' option specifies the merge methodology that should be used
+when a non-binary file is updated. 'MERGE' means the usual CVS
+behavior: try to merge the files. 'COPY' means that 'cvs update' will
+refuse to merge files, as it also does for files specified as binary
+with '-kb' (but if the file is specified as binary, there is no need to
+specify '-m 'COPY''). CVS will provide the user with the two versions
+of the files, and require the user using mechanisms outside CVS, to
+insert any necessary changes.
+
+ *WARNING: Do not use 'COPY' with CVS 1.9 or earlier - such versions
+of CVS will copy one version of your file over the other, wiping out the
+previous contents.* The '-m' wrapper option only affects behavior when
+merging is done on update; it does not affect how files are stored. See
+*note Binary files::, for more on binary files.
+
+ The basic format of the file 'cvswrappers' is:
+
+ wildcard [option value][option value]...
+
+ where option is one of
+ -m update methodology value: MERGE or COPY
+ -k keyword expansion value: expansion mode
+
+ and value is a single-quote delimited value.
+
+ For example, the following command imports a directory, treating
+files whose name ends in '.exe' as binary:
+
+ cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
+
+C.3 The Trigger Scripts
+=======================
+
+Several of the administrative files support triggers, or the launching
+external scripts or programs at specific times before or after
+particular events. The individual files are discussed in the later
+sections, *note commit files:: and *note taginfo::, but some of the
+common elements are discussed here.
+
+ All the trigger scripts are launched in a copy of the user sandbox
+being committed, on the server, in client-server mode. In local mode,
+the scripts are actually launched directly from the user sandbox
+directory being committed. For most intents and purposes, the same
+scripts can be run in both locations without alteration.
+
+C.3.1 The common syntax
+-----------------------
+
+The administrative files such as 'commitinfo', 'loginfo', 'rcsinfo',
+'verifymsg', etc., all have a common format. The purpose of the files
+are described later on. The common syntax is described here.
+
+ Each line contains the following:
+ * A regular expression. This is a basic regular expression in the
+ syntax used by GNU emacs.
+
+ * A whitespace separator--one or more spaces and/or tabs.
+
+ * A file name or command-line template.
+
+Blank lines are ignored. Lines that start with the character '#' are
+treated as comments. Long lines unfortunately can _not_ be broken in
+two parts in any way.
+
+ The first regular expression that matches the current directory name
+in the repository is used. The rest of the line is used as a file name
+or command-line as appropriate.
+
+C.3.2 Security and the Trigger Scripts
+--------------------------------------
+
+Security is a huge subject, and implementing a secure system is a
+non-trivial task. This section will barely touch on all the issues
+involved, but it is well to note that, as with any script you will be
+allowing an untrusted user to run on your server, there are measures you
+can take to help prevent your trigger scripts from being abused.
+
+ For instance, since the CVS trigger scripts all run in a copy of the
+user's sandbox on the server, a naively coded Perl trigger script which
+attempts to use a Perl module that is not installed on the system can be
+hijacked by any user with commit access who is checking in a file with
+the correct name. Other scripting languages may be vulnerable to
+similar hacks.
+
+ One way to make a script more secure, at least with Perl, is to use
+scripts which invoke the '-T', or "taint-check" switch on their '#!'
+line. In the most basic terms, this causes Perl to avoid running code
+that may have come from an external source. Please run the 'perldoc
+perlsec' command for more on Perl security. Again, other languages may
+implement other security verification hooks which look more or less like
+Perl's "taint-check" mechanism.
+
+C.4 The commit support files
+============================
+
+There are three kinds of trigger scripts (*note Trigger Scripts::) that
+can be run at various times during a commit. They are specified in
+files in the repository, as described below. The following table
+summarizes the file names and the purpose of the corresponding programs.
+
+'commitinfo'
+ The program is responsible for checking that the commit is allowed.
+ If it exits with a non-zero exit status the commit will be aborted.
+
+'verifymsg'
+ The specified program is used to evaluate the log message, and
+ possibly verify that it contains all required fields. This is most
+ useful in combination with the 'rcsinfo' file, which can hold a log
+ message template (*note rcsinfo::).
+
+'editinfo'
+ The specified program is used to edit the log message, and possibly
+ verify that it contains all required fields. This is most useful
+ in combination with the 'rcsinfo' file, which can hold a log
+ message template (*note rcsinfo::). (obsolete)
+
+'loginfo'
+ The specified program is called when the commit is complete. It
+ receives the log message and some additional information and can
+ store the log message in a file, or mail it to appropriate persons,
+ or maybe post it to a local newsgroup, or... Your imagination is
+ the limit!
+
+C.4.1 Commitinfo
+----------------
+
+The 'commitinfo' file defines programs to execute whenever 'cvs commit'
+is about to execute. These programs are used for pre-commit checking to
+verify that the modified, added and removed files are really ready to be
+committed. This could be used, for instance, to verify that the changed
+files conform to to your site's standards for coding practice.
+
+ As mentioned earlier, each line in the 'commitinfo' file consists of
+a regular expression and a command-line template. The template can
+include a program name and any number of arguments you wish to supply to
+it. The full path to the current source repository is appended to the
+template, followed by the file names of any files involved in the commit
+(added, removed, and modified files).
+
+ The first line with a regular expression matching the directory
+within the repository will be used. If the command returns a non-zero
+exit status the commit will be aborted.
+
+ If the repository name does not match any of the regular expressions
+in this file, the 'DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name 'ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or the
+name 'DEFAULT'.
+
+ The command will be run in the root of the workspace containing the
+new versions of any files the user would like to modify (commit), _or in
+a copy of the workspace on the server (*note Remote repositories::)_.
+If a file is being removed, there will be no copy of the file under the
+current directory. If a file is being added, there will be no
+corresponding archive file in the repository unless the file is being
+resurrected.
+
+ Note that both the repository directory and the corresponding Attic
+(*note Attic::) directory may need to be checked to locate the archive
+file corresponding to any given file being committed. Much of the
+information about the specific commit request being made, including the
+destination branch, commit message, and command line options specified,
+is not available to the command.
+
+C.4.2 Verifying log messages
+----------------------------
+
+Once you have entered a log message, you can evaluate that message to
+check for specific content, such as a bug ID. Use the 'verifymsg' file
+to specify a program that is used to verify the log message. This
+program could be a simple script that checks that the entered message
+contains the required fields.
+
+ The 'verifymsg' file is often most useful together with the 'rcsinfo'
+file, which can be used to specify a log message template.
+
+ Each line in the 'verifymsg' file consists of a regular expression
+and a command-line template. The template must include a program name,
+and can include any number of arguments. The full path to the current
+log message template file is appended to the template.
+
+ One thing that should be noted is that the 'ALL' keyword is not
+supported. If more than one matching line is found, the first one is
+used. This can be useful for specifying a default verification script
+in a directory, and then overriding it in a subdirectory.
+
+ If the repository name does not match any of the regular expressions
+in this file, the 'DEFAULT' line is used, if it is specified.
+
+ If the verification script exits with a non-zero exit status, the
+commit is aborted.
+
+ In the default configuration, CVS allows the verification script to
+change the log message. This is controlled via the RereadLogAfterVerify
+CVSROOT/config option.
+
+ When 'RereadLogAfterVerify=always' or 'RereadLogAfterVerify=stat',
+the log message will either always be reread after the verification
+script is run or reread only if the log message file status has changed.
+
+ *Note config::, for more on CVSROOT/config options.
+
+ It is NOT a good idea for a 'verifymsg' script to interact directly
+with the user in the various client/server methods. For the 'pserver'
+method, there is no protocol support for communicating between
+'verifymsg' and the client on the remote end. For the 'ext' and
+'server' methods, it is possible for CVS to become confused by the
+characters going along the same channel as the CVS protocol messages.
+See *note Remote repositories::, for more information on client/server
+setups. In addition, at the time the 'verifymsg' script runs, the CVS
+server has locks in place in the repository. If control is returned to
+the user here then other users may be stuck waiting for access to the
+repository.
+
+ This option can be useful if you find yourself using an rcstemplate
+that needs to be modified to remove empty elements or to fill in default
+values. It can also be useful if the rcstemplate has changed in the
+repository and the CVS/Template was not updated, but is able to be
+adapted to the new format by the verification script that is run by
+'verifymsg'.
+
+ An example of an update might be to change all occurrences of
+'BugId:' to be 'DefectId:' (which can be useful if the rcstemplate has
+recently been changed and there are still checked-out user trees with
+cached copies in the CVS/Template file of the older version).
+
+ Another example of an update might be to delete a line that contains
+'BugID: none' from the log message after validation of that value as
+being allowed is made.
+
+ The following is a little silly example of a 'verifymsg' file,
+together with the corresponding 'rcsinfo' file, the log message template
+and an verification script. We begin with the log message template. We
+want to always record a bug-id number on the first line of the log
+message. The rest of log message is free text. The following template
+is found in the file '/usr/cvssupport/tc.template'.
+
+ BugId:
+
+ The script '/usr/cvssupport/bugid.verify' is used to evaluate the log
+message.
+
+ #!/bin/sh
+ #
+ # bugid.verify filename
+ #
+ # Verify that the log message contains a valid bugid
+ # on the first line.
+ #
+ if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
+ exit 0
+ elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
+ # It is okay to allow commits with 'BugId: none',
+ # but do not put that text into the real log message.
+ grep -v '^BugId:[ ]*none$' > $1.rewrite
+ mv $1.rewrite $1
+ exit 0
+ else
+ echo "No BugId found."
+ exit 1
+ fi
+
+ The 'verifymsg' file contains this line:
+
+ ^tc /usr/cvssupport/bugid.verify
+
+ The 'rcsinfo' file contains this line:
+
+ ^tc /usr/cvssupport/tc.template
+
+ The 'config' file contains this line:
+
+ RereadLogAfterVerify=always
+
+C.4.3 Editinfo
+--------------
+
+*The 'editinfo' feature has been rendered obsolete. To set a default
+editor for log messages use the 'CVSEDITOR', 'EDITOR' environment
+variables (*note Environment variables::) or the '-e' global option
+(*note Global options::). See *note verifymsg::, for information on the
+use of the 'verifymsg' feature for evaluating log messages.*
+
+ If you want to make sure that all log messages look the same way, you
+can use the 'editinfo' file to specify a program that is used to edit
+the log message. This program could be a custom-made editor that always
+enforces a certain style of the log message, or maybe a simple shell
+script that calls an editor, and checks that the entered message
+contains the required fields.
+
+ If no matching line is found in the 'editinfo' file, the editor
+specified in the environment variable '$CVSEDITOR' is used instead. If
+that variable is not set, then the environment variable '$EDITOR' is
+used instead. If that variable is not set a default will be used. See
+*note Committing your changes::.
+
+ The 'editinfo' file is often most useful together with the 'rcsinfo'
+file, which can be used to specify a log message template.
+
+ Each line in the 'editinfo' file consists of a regular expression and
+a command-line template. The template must include a program name, and
+can include any number of arguments. The full path to the current log
+message template file is appended to the template.
+
+ One thing that should be noted is that the 'ALL' keyword is not
+supported. If more than one matching line is found, the first one is
+used. This can be useful for specifying a default edit script in a
+module, and then overriding it in a subdirectory.
+
+ If the repository name does not match any of the regular expressions
+in this file, the 'DEFAULT' line is used, if it is specified.
+
+ If the edit script exits with a non-zero exit status, the commit is
+aborted.
+
+ Note: when CVS is accessing a remote repository, or when the '-m' or
+'-F' options to 'cvs commit' are used, 'editinfo' will not be consulted.
+There is no good workaround for this; use 'verifymsg' instead.
+
+C.4.3.1 Editinfo example
+........................
+
+The following is a little silly example of a 'editinfo' file, together
+with the corresponding 'rcsinfo' file, the log message template and an
+editor script. We begin with the log message template. We want to
+always record a bug-id number on the first line of the log message. The
+rest of log message is free text. The following template is found in
+the file '/usr/cvssupport/tc.template'.
+
+ BugId:
+
+ The script '/usr/cvssupport/bugid.edit' is used to edit the log
+message.
+
+ #!/bin/sh
+ #
+ # bugid.edit filename
+ #
+ # Call $EDITOR on FILENAME, and verify that the
+ # resulting file contains a valid bugid on the first
+ # line.
+ if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
+ if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
+ $CVSEDITOR $1
+ until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
+ do echo -n "No BugId found. Edit again? ([y]/n)"
+ read ans
+ case ${ans} in
+ n*) exit 1;;
+ esac
+ $CVSEDITOR $1
+ done
+
+ The 'editinfo' file contains this line:
+
+ ^tc /usr/cvssupport/bugid.edit
+
+ The 'rcsinfo' file contains this line:
+
+ ^tc /usr/cvssupport/tc.template
+
+C.4.4 Loginfo
+-------------
+
+The 'loginfo' file is used to control where 'cvs commit' log information
+is sent. The first entry on a line is a regular expression which is
+tested against the directory that the change is being made to, relative
+to the '$CVSROOT'. If a match is found, then the remainder of the line
+is a filter program that should expect log information on its standard
+input. Note that the filter program *must* read *all* of the log
+information or CVS may fail with a broken pipe signal.
+
+ If the repository name does not match any of the regular expressions
+in this file, the 'DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name 'ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or
+'DEFAULT'.
+
+ The first matching regular expression is used.
+
+ *Note commit files::, for a description of the syntax of the
+'loginfo' file.
+
+ The user may specify a format string as part of the filter. The
+string is composed of a '%' followed by a space, or followed by a single
+format character, or followed by a set of format characters surrounded
+by '{' and '}' as separators. The format characters are:
+
+s
+ file name
+V
+ old version number (pre-checkin)
+v
+ new version number (post-checkin)
+
+ All other characters that appear in a format string expand to an
+empty field (commas separating fields are still provided).
+
+ For example, some valid format strings are '%', '%s', '%{s}', and
+'%{sVv}'.
+
+ The output will be a space separated string of tokens enclosed in
+quotation marks ("). Any embedded dollar signs ($), backticks (`),
+backslashes (\), or quotation marks will be preceded by a backslash
+(this allows the shell to correctly parse it as a single string,
+reguardless of the characters it contains). For backwards
+compatibility, the first token will be the repository subdirectory. The
+rest of the tokens will be comma-delimited lists of the information
+requested in the format string. For example, if
+'/u/src/master/yoyodyne/tc' is the repository, '%{sVv}' is the format
+string, and three files (ChangeLog, Makefile, foo.c) were modified, the
+output might be:
+
+ "yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13"
+
+ As another example, '%{}' means that only the name of the repository
+will be generated.
+
+ Note: when CVS is accessing a remote repository, 'loginfo' will be
+run on the _remote_ (i.e., server) side, not the client side (*note
+Remote repositories::).
+
+C.4.4.1 Loginfo example
+.......................
+
+The following 'loginfo' file, together with the tiny shell-script below,
+appends all log messages to the file '$CVSROOT/CVSROOT/commitlog', and
+any commits to the administrative files (inside the 'CVSROOT' directory)
+are also logged in '/usr/adm/cvsroot-log'. Commits to the 'prog1'
+directory are mailed to ceder.
+
+ ALL /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
+ ^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+ ^prog1 Mail -s %s ceder
+
+ The shell-script '/usr/local/bin/cvs-log' looks like this:
+
+ #!/bin/sh
+ (echo "------------------------------------------------------";
+ echo -n $2" ";
+ date;
+ echo;
+ cat) >> $1
+
+C.4.4.2 Keeping a checked out copy
+..................................
+
+It is often useful to maintain a directory tree which contains files
+which correspond to the latest version in the repository. For example,
+other developers might want to refer to the latest sources without
+having to check them out, or you might be maintaining a web site with
+CVS and want every checkin to cause the files used by the web server to
+be updated.
+
+ The way to do this is by having loginfo invoke 'cvs update'. Doing
+so in the naive way will cause a problem with locks, so the 'cvs update'
+must be run in the background. Here is an example for unix (this should
+all be on one line):
+
+ ^cyclic-pages (date; cat; (sleep 2; cd /u/www/local-docs;
+ cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
+
+ This will cause checkins to repository directories starting with
+'cyclic-pages' to update the checked out tree in '/u/www/local-docs'.
+
+C.5 Rcsinfo
+===========
+
+The 'rcsinfo' file can be used to specify a form to edit when filling
+out the commit log. The 'rcsinfo' file has a syntax similar to the
+'verifymsg', 'commitinfo' and 'loginfo' files. *Note syntax::. Unlike
+the other files the second part is _not_ a command-line template.
+Instead, the part after the regular expression should be a full pathname
+to a file containing the log message template.
+
+ If the repository name does not match any of the regular expressions
+in this file, the 'DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name 'ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or
+'DEFAULT'.
+
+ The log message template will be used as a default log message. If
+you specify a log message with 'cvs commit -m MESSAGE' or 'cvs commit -f
+FILE' that log message will override the template.
+
+ *Note verifymsg::, for an example 'rcsinfo' file.
+
+ When CVS is accessing a remote repository, the contents of 'rcsinfo'
+at the time a directory is first checked out will specify a template
+which does not then change. If you edit 'rcsinfo' or its templates, you
+may need to check out a new working directory.
+
+C.6 Taginfo
+===========
+
+The 'taginfo' file defines programs to execute when someone executes a
+'tag' or 'rtag' command. The 'taginfo' file has the standard form for
+trigger scripts (*note Trigger Scripts::), where each line is a regular
+expression followed by a command to execute (*note syntax::). The
+arguments passed to the command are, in order, the TAGNAME, OPERATION
+('add' for 'tag', 'mov' for 'tag -F', and 'del' for 'tag -d'),
+REPOSITORY, and any remaining are pairs of FILENAME REVISION. A
+non-zero exit of the filter program will cause the tag to be aborted.
+
+ Here is an example of using the 'taginfo' file to log 'tag' and
+'rtag' commands. In the 'taginfo' file put:
+
+ ALL /usr/local/cvsroot/CVSROOT/loggit
+
+Where '/usr/local/cvsroot/CVSROOT/loggit' contains the following script:
+
+ #!/bin/sh
+ echo "$@" >>/home/kingdon/cvsroot/CVSROOT/taglog
+
+C.7 Ignoring files via cvsignore
+================================
+
+There are certain file names that frequently occur inside your working
+copy, but that you don't want to put under CVS control. Examples are
+all the object files that you get while you compile your sources.
+Normally, when you run 'cvs update', it prints a line for each file it
+encounters that it doesn't know about (*note update output::).
+
+ CVS has a list of files (or sh(1) file name patterns) that it should
+ignore while running 'update', 'import' and 'release'. This list is
+constructed in the following way.
+
+ * The list is initialized to include certain file name patterns:
+ names associated with CVS administration, or with other common
+ source control systems; common names for patch files, object files,
+ archive files, and editor backup files; and other names that are
+ usually artifacts of assorted utilities. Currently, the default
+ list of ignored file name patterns is:
+
+ RCS SCCS CVS CVS.adm
+ RCSLOG cvslog.*
+ tags TAGS
+ .make.state .nse_depinfo
+ *~ #* .#* ,* _$* *$
+ *.old *.bak *.BAK *.orig *.rej .del-*
+ *.a *.olb *.o *.obj *.so *.exe
+ *.Z *.elc *.ln
+ core
+
+ * The per-repository list in '$CVSROOT/CVSROOT/cvsignore' is appended
+ to the list, if that file exists.
+
+ * The per-user list in '.cvsignore' in your home directory is
+ appended to the list, if it exists.
+
+ * Any entries in the environment variable '$CVSIGNORE' is appended to
+ the list.
+
+ * Any '-I' options given to CVS is appended.
+
+ * As CVS traverses through your directories, the contents of any
+ '.cvsignore' will be appended to the list. The patterns found in
+ '.cvsignore' are only valid for the directory that contains them,
+ not for any sub-directories.
+
+ In any of the 5 places listed above, a single exclamation mark ('!')
+clears the ignore list. This can be used if you want to store any file
+which normally is ignored by CVS.
+
+ Specifying '-I !' to 'cvs import' will import everything, which is
+generally what you want to do if you are importing files from a pristine
+distribution or any other source which is known to not contain any
+extraneous files. However, looking at the rules above you will see
+there is a fly in the ointment; if the distribution contains any
+'.cvsignore' files, then the patterns from those files will be processed
+even if '-I !' is specified. The only workaround is to remove the
+'.cvsignore' files in order to do the import. Because this is awkward,
+in the future '-I !' might be modified to override '.cvsignore' files in
+each directory.
+
+ Note that the syntax of the ignore files consists of a series of
+lines, each of which contains a space separated list of filenames. This
+offers no clean way to specify filenames which contain spaces, but you
+can use a workaround like 'foo?bar' to match a file named 'foo bar' (it
+also matches 'fooxbar' and the like). Also note that there is currently
+no way to specify comments.
+
+C.8 The checkoutlist file
+=========================
+
+It may be helpful to use CVS to maintain your own files in the 'CVSROOT'
+directory. For example, suppose that you have a script 'logcommit.pl'
+which you run by including the following line in the 'commitinfo'
+administrative file:
+
+ ALL $CVSROOT/CVSROOT/logcommit.pl
+
+ To maintain 'logcommit.pl' with CVS you would add the following line
+to the 'checkoutlist' administrative file:
+
+ logcommit.pl
+
+ The format of 'checkoutlist' is one line for each file that you want
+to maintain using CVS, giving the name of the file, followed optionally
+by more whitespace and any error message that should print if the file
+cannot be checked out into CVSROOT after a commit:
+
+ logcommit.pl Could not update CVSROOT/logcommit.pl.
+
+ After setting up 'checkoutlist' in this fashion, the files listed
+there will function just like CVS's built-in administrative files. For
+example, when checking in one of the files you should get a message such
+as:
+
+ cvs commit: Rebuilding administrative file database
+
+and the checked out copy in the 'CVSROOT' directory should be updated.
+
+ Note that listing 'passwd' (*note Password authentication server::)
+in 'checkoutlist' is not recommended for security reasons.
+
+ For information about keeping a checkout out copy in a more general
+context than the one provided by 'checkoutlist', see *note Keeping a
+checked out copy::.
+
+C.9 The history file
+====================
+
+The file '$CVSROOT/CVSROOT/history' is used to log information for the
+'history' command (*note history::). This file must be created to turn
+on logging. This is done automatically if the 'cvs init' command is
+used to set up the repository (*note Creating a repository::).
+
+ The file format of the 'history' file is documented only in comments
+in the CVS source code, but generally programs should use the 'cvs
+history' command to access it anyway, in case the format changes with
+future releases of CVS.
+
+C.10 Expansions in administrative files
+=======================================
+
+Sometimes in writing an administrative file, you might want the file to
+be able to know various things based on environment CVS is running in.
+There are several mechanisms to do that.
+
+ To find the home directory of the user running CVS (from the 'HOME'
+environment variable), use '~' followed by '/' or the end of the line.
+Likewise for the home directory of USER, use '~USER'. These variables
+are expanded on the server machine, and don't get any reasonable
+expansion if pserver (*note Password authenticated::) is in use;
+therefore user variables (see below) may be a better choice to customize
+behavior based on the user running CVS.
+
+ One may want to know about various pieces of information internal to
+CVS. A CVS internal variable has the syntax '${VARIABLE}', where
+VARIABLE starts with a letter and consists of alphanumeric characters
+and '_'. If the character following VARIABLE is a non-alphanumeric
+character other than '_', the '{' and '}' can be omitted. The CVS
+internal variables are:
+
+'CVSROOT'
+ This is the absolute path to the current CVS root directory. *Note
+ Repository::, for a description of the various ways to specify
+ this, but note that the internal variable contains just the
+ directory and not any of the access method information.
+
+'RCSBIN'
+ In CVS 1.9.18 and older, this specified the directory where CVS was
+ looking for RCS programs. Because CVS no longer runs RCS programs,
+ specifying this internal variable is now an error.
+
+'CVSEDITOR'
+'EDITOR'
+'VISUAL'
+ These all expand to the same value, which is the editor that CVS is
+ using. *Note Global options::, for how to specify this.
+
+'USER'
+ Username of the user running CVS (on the CVS server machine). When
+ using pserver, this is the user specified in the repository
+ specification which need not be the same as the username the server
+ is running as (*note Password authentication server::). Do not
+ confuse this with the environment variable of the same name.
+
+ If you want to pass a value to the administrative files which the
+user who is running CVS can specify, use a user variable. To expand a
+user variable, the administrative file contains '${=VARIABLE}'. To set
+a user variable, specify the global option '-s' to CVS, with argument
+'VARIABLE=VALUE'. It may be particularly useful to specify this option
+via '.cvsrc' (*note ~/.cvsrc::).
+
+ For example, if you want the administrative file to refer to a test
+directory you might create a user variable 'TESTDIR'. Then if CVS is
+invoked as
+
+ cvs -s TESTDIR=/work/local/tests
+
+and the administrative file contains 'sh ${=TESTDIR}/runtests', then
+that string is expanded to 'sh /work/local/tests/runtests'.
+
+ All other strings containing '$' are reserved; there is no way to
+quote a '$' character so that '$' represents itself.
+
+ Environment variables passed to administrative files are:
+
+'CVS_USER'
+ The CVS-specific username provided by the user, if it can be
+ provided (currently just for the pserver access method), and to the
+ empty string otherwise. ('CVS_USER' and 'USER' may differ when
+ '$CVSROOT/CVSROOT/passwd' is used to map CVS usernames to system
+ usernames.)
+
+'LOGNAME'
+ The username of the system user.
+
+'USER'
+ Same as 'LOGNAME'. Do not confuse this with the internal variable
+ of the same name.
+
+C.11 The CVSROOT/config configuration file
+==========================================
+
+The administrative file 'config' contains various miscellaneous settings
+which affect the behavior of CVS. The syntax is slightly different from
+the other administrative files. Variables are not expanded. Lines
+which start with '#' are considered comments. Other lines consist of a
+keyword, '=', and a value. Note that this syntax is very strict.
+Extraneous spaces or tabs are not permitted.
+
+ Currently defined keywords are:
+
+'RCSBIN=BINDIR'
+ For CVS 1.9.12 through 1.9.18, this setting told CVS to look for
+ RCS programs in the BINDIR directory. Current versions of CVS do
+ not run RCS programs; for compatibility this setting is accepted,
+ but it does nothing.
+
+'SystemAuth=VALUE'
+ If VALUE is 'yes', then pserver should check for users in the
+ system's user database if not found in 'CVSROOT/passwd'. If it is
+ 'no', then all pserver users must exist in 'CVSROOT/passwd'. The
+ default is 'yes'. For more on pserver, see *note Password
+ authenticated::.
+
+'TopLevelAdmin=VALUE'
+ Modify the 'checkout' command to create a 'CVS' directory at the
+ top level of the new working directory, in addition to 'CVS'
+ directories created within checked-out directories. The default
+ value is 'no'.
+
+ This option is useful if you find yourself performing many commands
+ at the top level of your working directory, rather than in one of
+ the checked out subdirectories. The 'CVS' directory created there
+ will mean you don't have to specify 'CVSROOT' for each command. It
+ also provides a place for the 'CVS/Template' file (*note Working
+ directory storage::).
+
+'LockDir=DIRECTORY'
+ Put CVS lock files in DIRECTORY rather than directly in the
+ repository. This is useful if you want to let users read from the
+ repository while giving them write access only to DIRECTORY, not to
+ the repository. It can also be used to put the locks on a very
+ fast in-memory file system to speed up locking and unlocking the
+ repository. You need to create DIRECTORY, but CVS will create
+ subdirectories of DIRECTORY as it needs them. For information on
+ CVS locks, see *note Concurrency::.
+
+ Before enabling the LockDir option, make sure that you have tracked
+ down and removed any copies of CVS 1.9 or older. Such versions
+ neither support LockDir, nor will give an error indicating that
+ they don't support it. The result, if this is allowed to happen,
+ is that some CVS users will put the locks one place, and others
+ will put them another place, and therefore the repository could
+ become corrupted. CVS 1.10 does not support LockDir but it will
+ print a warning if run on a repository with LockDir enabled.
+
+'LogHistory=VALUE'
+ Control what is logged to the 'CVSROOT/history' file (*note
+ history::). Default of 'TOEFWUPCGMAR' (or simply 'all') will log
+ all transactions. Any subset of the default is legal. (For
+ example, to only log transactions that modify the '*,v' files, use
+ 'LogHistory=TMAR'.)
+
+'RereadLogAfterVerify=VALUE'
+ Modify the 'commit' command such that CVS will reread the log
+ message after running the program specified by 'verifymsg'. VALUE
+ may be one of 'yes' or 'always', indicating that the log message
+ should always be reread; 'no' or 'never', indicating that it should
+ never be reread; or VALUE may be 'stat', indicating that the file
+ should be checked with the file system 'stat()' function to see if
+ it has changed (see warning below) before rereading. The default
+ value is 'always'.
+
+ *The 'stat' mode can cause CVS to pause for up to one extra second
+ per directory committed. This can be less IO and CPU intensive but
+ is not recommended for use with large repositories*
+
+ *Note verifymsg::, for more information on how verifymsg may be
+ used.
+
+'IgnoreUnknownConfigKeys=VALUE'
+ If VALUE is 'yes', then CVS should ignore any keywords in
+ 'CVSROOT/config' which it does not recognize. This option is
+ intended primarily for transitions between versions of CVS which
+ support more configuration options in an environment where a
+ read-only mirror of the current CVS server may be maintained by
+ someone else who is not yet ready to upgrade to the same version.
+ It is recommended that this option be used only for a short time so
+ that problems with the 'CVSROOT/config' file will be found quickly.
+ The default is 'no'.
+
+Appendix D All environment variables which affect CVS
+*****************************************************
+
+This is a complete list of all environment variables that affect CVS.
+
+'$CVSIGNORE'
+ A whitespace-separated list of file name patterns that CVS should
+ ignore. *Note cvsignore::.
+
+'$CVSWRAPPERS'
+ A whitespace-separated list of file name patterns that CVS should
+ treat as wrappers. *Note Wrappers::.
+
+'$CVSREAD'
+ If this is set, 'checkout' and 'update' will try hard to make the
+ files in your working directory read-only. When this is not set,
+ the default behavior is to permit modification of your working
+ files.
+
+'$CVSUMASK'
+ Controls permissions of files in the repository. See *note File
+ permissions::.
+
+'$CVSROOT'
+ Should contain the full pathname to the root of the CVS source
+ repository (where the RCS files are kept). This information must
+ be available to CVS for most commands to execute; if '$CVSROOT' is
+ not set, or if you wish to override it for one invocation, you can
+ supply it on the command line: 'cvs -d cvsroot cvs_command...' Once
+ you have checked out a working directory, CVS stores the
+ appropriate root (in the file 'CVS/Root'), so normally you only
+ need to worry about this when initially checking out a working
+ directory.
+
+'$CVSEDITOR'
+'$EDITOR'
+'$VISUAL'
+ Specifies the program to use for recording log messages during
+ commit. '$CVSEDITOR' overrides '$EDITOR', which overrides
+ '$VISUAL'. See *note Committing your changes:: for more or *note
+ Global options:: for alternative ways of specifying a log editor.
+
+'$PATH'
+ If '$RCSBIN' is not set, and no path is compiled into CVS, it will
+ use '$PATH' to try to find all programs it uses.
+
+'$HOME'
+'$HOMEPATH'
+'$HOMEDRIVE'
+ Used to locate the directory where the '.cvsrc' file, and other
+ such files, are searched. On Unix, CVS just checks for 'HOME'. On
+ Windows NT, the system will set 'HOMEDRIVE', for example to 'd:'
+ and 'HOMEPATH', for example to '\joe'. On Windows 95, you'll
+ probably need to set 'HOMEDRIVE' and 'HOMEPATH' yourself.
+
+'$CVS_RSH'
+ Specifies the external program which CVS connects with, when
+ ':ext:' access method is specified. *note Connecting via rsh::.
+
+'$CVS_SSH'
+ Specifies the external program which CVS connects with, when
+ ':extssh:' access method is specified. *note Connecting via rsh::.
+
+'$CVS_SERVER'
+ Used in client-server mode when accessing a remote repository using
+ RSH. It specifies the name of the program to start on the server
+ side (and any necessary arguments) when accessing a remote
+ repository using the ':ext:', ':fork:', or ':server:' access
+ methods. The default value for ':ext:' and ':server:' is 'cvs';
+ the default value for ':fork:' is the name used to run the client.
+ *note Connecting via rsh::
+
+'$CVS_PASSFILE'
+ Used in client-server mode when accessing the 'cvs login server'.
+ Default value is '$HOME/.cvspass'. *note Password authentication
+ client::
+
+'$CVS_CLIENT_PORT'
+ Used in client-server mode to set the port to use when accessing
+ the server via Kerberos, GSSAPI, or CVS's password authentication
+ protocol if the port is not specified in the CVSROOT. *note Remote
+ repositories::
+
+'$CVS_RCMD_PORT'
+ Used in client-server mode. If set, specifies the port number to
+ be used when accessing the RCMD demon on the server side.
+ (Currently not used for Unix clients).
+
+'$CVS_CLIENT_LOG'
+ Used for debugging only in client-server mode. If set, everything
+ sent to the server is logged into '$CVS_CLIENT_LOG.in' and
+ everything sent from the server is logged into
+ '$CVS_CLIENT_LOG.out'.
+
+'$CVS_SERVER_SLEEP'
+ Used only for debugging the server side in client-server mode. If
+ set, delays the start of the server child process the specified
+ amount of seconds so that you can attach to it with a debugger.
+
+'$CVS_IGNORE_REMOTE_ROOT'
+ For CVS 1.10 and older, setting this variable prevents CVS from
+ overwriting the 'CVS/Root' file when the '-d' global option is
+ specified. Later versions of CVS do not rewrite 'CVS/Root', so
+ 'CVS_IGNORE_REMOTE_ROOT' has no effect.
+
+'$COMSPEC'
+ Used under OS/2 only. It specifies the name of the command
+ interpreter and defaults to CMD.EXE.
+
+'$TMPDIR'
+'$TMP'
+'$TEMP'
+ Directory in which temporary files are located. The CVS server
+ uses 'TMPDIR'. *Note Global options::, for a description of how to
+ specify this. Some parts of CVS will always use '/tmp' (via the
+ 'tmpnam' function provided by the system).
+
+ On Windows NT, 'TMP' is used (via the '_tempnam' function provided
+ by the system).
+
+ The 'patch' program which is used by the CVS client uses 'TMPDIR',
+ and if it is not set, uses '/tmp' (at least with GNU patch 2.1).
+ Note that if your server and client are both running CVS 1.9.10 or
+ later, CVS will not invoke an external 'patch' program.
+
+Appendix E Compatibility between CVS Versions
+*********************************************
+
+The repository format is compatible going back to CVS 1.3. But see
+*note Watches Compatibility::, if you have copies of CVS 1.6 or older
+and you want to use the optional developer communication features.
+
+ The working directory format is compatible going back to CVS 1.5. It
+did change between CVS 1.3 and CVS 1.5. If you run CVS 1.5 or newer on
+a working directory checked out with CVS 1.3, CVS will convert it, but
+to go back to CVS 1.3 you need to check out a new working directory with
+CVS 1.3.
+
+ The remote protocol is interoperable going back to CVS 1.5, but no
+further (1.5 was the first official release with the remote protocol,
+but some older versions might still be floating around). In many cases
+you need to upgrade both the client and the server to take advantage of
+new features and bug fixes, however.
+
+Appendix F Troubleshooting
+**************************
+
+If you are having trouble with CVS, this appendix may help. If there is
+a particular error message which you are seeing, then you can look up
+the message alphabetically. If not, you can look through the section on
+other problems to see if your problem is mentioned there.
+
+F.1 Partial list of error messages
+==================================
+
+Here is a partial list of error messages that you may see from CVS. It
+is not a complete list--CVS is capable of printing many, many error
+messages, often with parts of them supplied by the operating system, but
+the intention is to list the common and/or potentially confusing error
+messages.
+
+ The messages are alphabetical, but introductory text such as 'cvs
+update: ' is not considered in ordering them.
+
+ In some cases the list includes messages printed by old versions of
+CVS (partly because users may not be sure which version of CVS they are
+using at any particular moment).
+
+'FILE:LINE: Assertion 'TEXT' failed'
+ The exact format of this message may vary depending on your system.
+ It indicates a bug in CVS, which can be handled as described in
+ *note BUGS::.
+
+'cvs COMMAND: authorization failed: server HOST rejected access'
+ This is a generic response when trying to connect to a pserver
+ server which chooses not to provide a specific reason for denying
+ authorization. Check that the username and password specified are
+ correct and that the 'CVSROOT' specified is allowed by
+ '--allow-root' in 'inetd.conf'. See *note Password
+ authenticated::.
+
+'cvs COMMAND: conflict: removed FILE was modified by second party'
+ This message indicates that you removed a file, and someone else
+ modified it. To resolve the conflict, first run 'cvs add FILE'.
+ If desired, look at the other party's modification to decide
+ whether you still want to remove it. If you don't want to remove
+ it, stop here. If you do want to remove it, proceed with 'cvs
+ remove FILE' and commit your removal.
+
+'cannot change permissions on temporary directory'
+ Operation not permitted
+ This message has been happening in a non-reproducible, occasional
+ way when we run the client/server testsuite, both on Red Hat Linux
+ 3.0.3 and 4.1. We haven't been able to figure out what causes it,
+ nor is it known whether it is specific to Linux (or even to this
+ particular machine!). If the problem does occur on other unices,
+ 'Operation not permitted' would be likely to read 'Not owner' or
+ whatever the system in question uses for the unix 'EPERM' error.
+ If you have any information to add, please let us know as described
+ in *note BUGS::. If you experience this error while using CVS,
+ retrying the operation which produced it should work fine.
+
+'cvs [server aborted]: Cannot check out files into the repository itself'
+ The obvious cause for this message (especially for
+ non-client/server CVS) is that the CVS root is, for example,
+ '/usr/local/cvsroot' and you try to check out files when you are in
+ a subdirectory, such as '/usr/local/cvsroot/test'. However, there
+ is a more subtle cause, which is that the temporary directory on
+ the server is set to a subdirectory of the root (which is also not
+ allowed). If this is the problem, set the temporary directory to
+ somewhere else, for example '/var/tmp'; see 'TMPDIR' in *note
+ Environment variables::, for how to set the temporary directory.
+
+'cannot commit files as 'root''
+ See ''root' is not allowed to commit files'.
+
+'cannot open CVS/Entries for reading: No such file or directory'
+ This generally indicates a CVS internal error, and can be handled
+ as with other CVS bugs (*note BUGS::). Usually there is a
+ workaround--the exact nature of which would depend on the situation
+ but which hopefully could be figured out.
+
+'cvs [init aborted]: cannot open CVS/Root: No such file or directory'
+ This message is harmless. Provided it is not accompanied by other
+ errors, the operation has completed successfully. This message
+ should not occur with current versions of CVS, but it is documented
+ here for the benefit of CVS 1.9 and older.
+
+'cvs server: cannot open /root/.cvsignore: Permission denied'
+'cvs [server aborted]: can't chdir(/root): Permission denied'
+ See *note Connection::.
+
+'cvs [checkout aborted]: cannot rename file FILE to CVS/,,FILE: Invalid
argument'
+ This message has been reported as intermittently happening with CVS
+ 1.9 on Solaris 2.5. The cause is unknown; if you know more about
+ what causes it, let us know as described in *note BUGS::.
+
+'cvs [COMMAND aborted]: cannot start server via rcmd'
+ This, unfortunately, is a rather nonspecific error message which
+ CVS 1.9 will print if you are running the CVS client and it is
+ having trouble connecting to the server. Current versions of CVS
+ should print a much more specific error message. If you get this
+ message when you didn't mean to run the client at all, you probably
+ forgot to specify ':local:', as described in *note Repository::.
+
+'ci: FILE,v: bad diff output line: Binary files - and /tmp/T2a22651 differ'
+ CVS 1.9 and older will print this message when trying to check in a
+ binary file if RCS is not correctly installed. Re-read the
+ instructions that came with your RCS distribution and the INSTALL
+ file in the CVS distribution. Alternately, upgrade to a current
+ version of CVS, which checks in files itself rather than via RCS.
+
+'cvs checkout: could not check out FILE'
+ With CVS 1.9, this can mean that the 'co' program (part of RCS)
+ returned a failure. It should be preceded by another error
+ message, however it has been observed without another error message
+ and the cause is not well-understood. With the current version of
+ CVS, which does not run 'co', if this message occurs without
+ another error message, it is definitely a CVS bug (*note BUGS::).
+
+'cvs [login aborted]: could not find out home directory'
+ This means that you need to set the environment variables that CVS
+ uses to locate your home directory. See the discussion of 'HOME',
+ 'HOMEDRIVE', and 'HOMEPATH' in *note Environment variables::.
+
+'cvs update: could not merge revision REV of FILE: No such file or directory'
+ CVS 1.9 and older will print this message if there was a problem
+ finding the 'rcsmerge' program. Make sure that it is in your
+ 'PATH', or upgrade to a current version of CVS, which does not
+ require an external 'rcsmerge' program.
+
+'cvs [update aborted]: could not patch FILE: No such file or directory'
+ This means that there was a problem finding the 'patch' program.
+ Make sure that it is in your 'PATH'. Note that despite appearances
+ the message is _not_ referring to whether it can find FILE. If
+ both the client and the server are running a current version of
+ CVS, then there is no need for an external patch program and you
+ should not see this message. But if either client or server is
+ running CVS 1.9, then you need 'patch'.
+
+'cvs update: could not patch FILE; will refetch'
+ This means that for whatever reason the client was unable to apply
+ a patch that the server sent. The message is nothing to be
+ concerned about, because inability to apply the patch only slows
+ things down and has no effect on what CVS does.
+
+'dying gasps from SERVER unexpected'
+ There is a known bug in the server for CVS 1.9.18 and older which
+ can cause this. For me, this was reproducible if I used the '-t'
+ global option. It was fixed by Andy Piper's 14 Nov 1997 change to
+ src/filesubr.c, if anyone is curious. If you see the message, you
+ probably can just retry the operation which failed, or if you have
+ discovered information concerning its cause, please let us know as
+ described in *note BUGS::.
+
+'end of file from server (consult above messages if any)'
+ The most common cause for this message is if you are using an
+ external 'rsh' or 'ssh' program and it exited with an error. In
+ this case the 'rsh' program should have printed a message, which
+ will appear before the above message. For more information on
+ setting up a CVS client and server, see *note Remote
+ repositories::.
+
+'cvs [update aborted]: EOF in key in RCS file FILE,v'
+'cvs [checkout aborted]: EOF while looking for end of string in RCS file
FILE,v'
+ This means that there is a syntax error in the given RCS file.
+ Note that this might be true even if RCS can read the file OK; CVS
+ does more error checking of errors in the RCS file. That is why
+ you may see this message when upgrading from CVS 1.9 to CVS 1.10.
+ The likely cause for the original corruption is hardware, the
+ operating system, or the like. Of course, if you find a case in
+ which CVS seems to corrupting the file, by all means report it,
+ (*note BUGS::). There are quite a few variations of this error
+ message, depending on exactly where in the RCS file CVS finds the
+ syntax error.
+
+'cvs commit: Executing 'mkmodules''
+ This means that your repository is set up for a version of CVS
+ prior to CVS 1.8. When using CVS 1.8 or later, the above message
+ will be preceded by
+
+ cvs commit: Rebuilding administrative file database
+
+ If you see both messages, the database is being rebuilt twice,
+ which is unnecessary but harmless. If you wish to avoid the
+ duplication, and you have no versions of CVS 1.7 or earlier in use,
+ remove '-i mkmodules' every place it appears in your 'modules'
+ file. For more information on the 'modules' file, see *note
+ modules::.
+
+'missing author'
+ Typically this can happen if you created an RCS file with your
+ username set to empty. CVS will, bogusly, create an illegal RCS
+ file with no value for the author field. The solution is to make
+ sure your username is set to a non-empty value and re-create the
+ RCS file.
+
+'cvs [checkout aborted]: no such tag TAG'
+ This message means that CVS isn't familiar with the tag TAG.
+ Usually this means that you have mistyped a tag name; however there
+ are (relatively obscure) cases in which CVS will require you to try
+ a few other CVS commands involving that tag, before you find one
+ which will cause CVS to update the 'val-tags' file; see discussion
+ of val-tags in *note File permissions::. You only need to worry
+ about this once for a given tag; when a tag is listed in
+ 'val-tags', it stays there. Note that using '-f' to not require
+ tag matches does not override this check; see *note Common
+ options::.
+
+'cvs [COMMAND aborted]: out of memory'
+ There is insufficient (virtual) memory available to continue. In
+ client/server mode, the problem is almost certainly on the server
+ rather than the client; see *note Server requirements:: for memory
+ estimates. Many systems have limits on the amount of virtual
+ memory that a single process can use, so a process can run out of
+ virtual memory long before the system itself has run out. The
+ method of increasing the per-process limits varies depending on the
+ operating system.
+
+'*PANIC* administration files missing'
+ This typically means that there is a directory named CVS but it
+ does not contain the administrative files which CVS puts in a CVS
+ directory. If the problem is that you created a CVS directory via
+ some mechanism other than CVS, then the answer is simple, use a
+ name other than CVS. If not, it indicates a CVS bug (*note
+ BUGS::).
+
+'rcs error: Unknown option: -x,v/'
+ This message will be followed by a usage message for RCS. It means
+ that you have an old version of RCS (probably supplied with your
+ operating system), as well as an old version of CVS. CVS 1.9.18
+ and earlier only work with RCS version 5 and later; current
+ versions of CVS do not run RCS programs.
+
+'cvs [server aborted]: received broken pipe signal'
+ This message can be caused by a loginfo program that fails to read
+ all of the log information from its standard input. If you find it
+ happening in any other circumstances, please let us know as
+ described in *note BUGS::.
+
+''root' is not allowed to commit files'
+ When committing a permanent change, CVS makes a log entry of who
+ committed the change. If you are committing the change logged in
+ as "root" (not under "su" or other root-priv giving program), CVS
+ cannot determine who is actually making the change. As such, by
+ default, CVS disallows changes to be committed by users logged in
+ as "root". (You can disable this option by passing the
+ '--enable-rootcommit' option to 'configure' and recompiling CVS.
+ On some systems this means editing the appropriate 'config.h' file
+ before building CVS.)
+
+'Terminated with fatal signal 11'
+ This message usually indicates that CVS (the server, if you're
+ using client/server mode) has run out of (virtual) memory.
+ Although CVS tries to catch the error and issue a more meaningful
+ message, there are many circumstances where that is not possible.
+ If you appear to have lots of memory available to the system, the
+ problem is most likely that you're running into a system-wide limit
+ on the amount of memory a single process can use or a similar
+ process-specific limit. The mechanisms for displaying and setting
+ such limits vary from system to system, so you'll have to consult
+ an expert for your particular system if you don't know how to do
+ that.
+
+'Too many arguments!'
+ This message is typically printed by the 'log.pl' script which is
+ in the 'contrib' directory in the CVS source distribution. In some
+ versions of CVS, 'log.pl' has been part of the default CVS
+ installation. The 'log.pl' script gets called from the 'loginfo'
+ administrative file. Check that the arguments passed in 'loginfo'
+ match what your version of 'log.pl' expects. In particular, the
+ 'log.pl' from CVS 1.3 and older expects the log file as an argument
+ whereas the 'log.pl' from CVS 1.5 and newer expects the log file to
+ be specified with a '-f' option. Of course, if you don't need
+ 'log.pl' you can just comment it out of 'loginfo'.
+
+'cvs [update aborted]: unexpected EOF reading FILE,v'
+ See 'EOF in key in RCS file'.
+
+'cvs [login aborted]: unrecognized auth response from SERVER'
+ This message typically means that the server is not set up
+ properly. For example, if 'inetd.conf' points to a nonexistent cvs
+ executable. To debug it further, find the log file which inetd
+ writes ('/var/log/messages' or whatever inetd uses on your system).
+ For details, see *note Connection::, and *note Password
+ authentication server::.
+
+'cvs commit: Up-to-date check failed for `FILE''
+ This means that someone else has committed a change to that file
+ since the last time that you did a 'cvs update'. So before
+ proceeding with your 'cvs commit' you need to 'cvs update'. CVS
+ will merge the changes that you made and the changes that the other
+ person made. If it does not detect any conflicts it will report 'M
+ FILE' and you are ready to 'cvs commit'. If it detects conflicts
+ it will print a message saying so, will report 'C FILE', and you
+ need to manually resolve the conflict. For more details on this
+ process see *note Conflicts example::.
+
+'Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2
file3'
+ Only one of [exEX3] allowed
+ This indicates a problem with the installation of 'diff3' and
+ 'rcsmerge'. Specifically 'rcsmerge' was compiled to look for GNU
+ diff3, but it is finding unix diff3 instead. The exact text of the
+ message will vary depending on the system. The simplest solution
+ is to upgrade to a current version of CVS, which does not rely on
+ external 'rcsmerge' or 'diff3' programs.
+
+'warning: unrecognized response `TEXT' from cvs server'
+ If TEXT contains a valid response (such as 'ok') followed by an
+ extra carriage return character (on many systems this will cause
+ the second part of the message to overwrite the first part), then
+ it probably means that you are using the ':ext:' access method with
+ a version of rsh, such as most non-unix rsh versions, which does
+ not by default provide a transparent data stream. In such cases
+ you probably want to try ':server:' instead of ':ext:'. If TEXT is
+ something else, this may signify a problem with your CVS server.
+ Double-check your installation against the instructions for setting
+ up the CVS server.
+
+'cvs commit: [TIME] waiting for USER's lock in DIRECTORY'
+ This is a normal message, not an error. See *note Concurrency::,
+ for more details.
+
+'cvs commit: warning: editor session failed'
+ This means that the editor which CVS is using exits with a nonzero
+ exit status. Some versions of vi will do this even when there was
+ not a problem editing the file. If so, point the 'CVSEDITOR'
+ environment variable to a small script such as:
+
+ #!/bin/sh
+ vi $*
+ exit 0
+
+'cvs update: warning: FILE was lost'
+ This means that the working copy of FILE has been deleted but it
+ has not been removed from CVS. This is nothing to be concerned
+ about, the update will just recreate the local file from the
+ repository. (This is a convenient way to discard local changes to
+ a file: just delete it and then run 'cvs update'.)
+
+'cvs update: warning: FILE is not (any longer) pertinent'
+ This means that the working copy of FILE has been deleted, it has
+ not been removed from CVS in the current working directory, but it
+ has been removed from CVS in some other working directory. This is
+ nothing to be concerned about, the update would have removed the
+ local file anyway.
+
+F.2 Trouble making a connection to a CVS server
+===============================================
+
+This section concerns what to do if you are having trouble making a
+connection to a CVS server. If you are running the CVS command line
+client running on Windows, first upgrade the client to CVS 1.9.12 or
+later. The error reporting in earlier versions provided much less
+information about what the problem was. If the client is non-Windows,
+CVS 1.9 should be fine.
+
+ If the error messages are not sufficient to track down the problem,
+the next steps depend largely on which access method you are using.
+
+':ext:'
+ Try running the rsh program from the command line. For example:
+ "rsh servername cvs -v" should print CVS version information. If
+ this doesn't work, you need to fix it before you can worry about
+ CVS problems.
+
+':server:'
+ You don't need a command line rsh program to use this access
+ method, but if you have an rsh program around, it may be useful as
+ a debugging tool. Follow the directions given for :ext:.
+
+':pserver:'
+ Errors along the lines of "connection refused" typically indicate
+ that inetd isn't even listening for connections on port 2401
+ whereas errors like "connection reset by peer", "received broken
+ pipe signal", "recv() from server: EOF", or "end of file from
+ server" typically indicate that inetd is listening for connections
+ but is unable to start CVS (this is frequently caused by having an
+ incorrect path in 'inetd.conf' or by firewall software rejecting
+ the connection). "unrecognized auth response" errors are caused by
+ a bad command line in 'inetd.conf', typically an invalid option or
+ forgetting to put the 'pserver' command at the end of the line.
+ Another less common problem is invisible control characters that
+ your editor "helpfully" added without you noticing.
+
+ One good debugging tool is to "telnet servername 2401". After
+ connecting, send any text (for example "foo" followed by return).
+ If CVS is working correctly, it will respond with
+
+ cvs [pserver aborted]: bad auth protocol start: foo
+
+ If instead you get:
+
+ Usage: cvs [cvs-options] command [command-options-and-arguments]
+ ...
+
+ then you're missing the 'pserver' command at the end of the line in
+ 'inetd.conf'; check to make sure that the entire command is on one
+ line and that it's complete.
+
+ Likewise, if you get something like:
+
+ Unknown command: `pserved'
+
+ CVS commands are:
+ add Add a new file/directory to the repository
+ ...
+
+ then you've misspelled 'pserver' in some way. If it isn't obvious,
+ check for invisible control characters (particularly carriage
+ returns) in 'inetd.conf'.
+
+ If it fails to work at all, then make sure inetd is working right.
+ Change the invocation in 'inetd.conf' to run the echo program
+ instead of cvs. For example:
+
+ 2401 stream tcp nowait root /bin/echo echo hello
+
+ After making that change and instructing inetd to re-read its
+ configuration file, "telnet servername 2401" should show you the
+ text hello and then the server should close the connection. If
+ this doesn't work, you need to fix it before you can worry about
+ CVS problems.
+
+ On AIX systems, the system will often have its own program trying
+ to use port 2401. This is AIX's problem in the sense that port
+ 2401 is registered for use with CVS. I hear that there is an AIX
+ patch available to address this problem.
+
+ Another good debugging tool is the '-d' (debugging) option to
+ inetd. Consult your system documentation for more information.
+
+ If you seem to be connecting but get errors like:
+
+ cvs server: cannot open /root/.cvsignore: Permission denied
+ cvs [server aborted]: can't chdir(/root): Permission denied
+
+ then you probably haven't specified '-f' in 'inetd.conf'. (In
+ releases prior to CVS 1.11.1, this problem can be caused by your
+ system setting the '$HOME' environment variable for programs being
+ run by inetd. In this case, you can either have inetd run a shell
+ script that unsets '$HOME' and then runs CVS, or you can use 'env'
+ to run CVS with a pristine environment.)
+
+ If you can connect successfully for a while but then can't, you've
+ probably hit inetd's rate limit. (If inetd receives too many
+ requests for the same service in a short period of time, it assumes
+ that something is wrong and temporarily disables the service.)
+ Check your inetd documentation to find out how to adjust the rate
+ limit (some versions of inetd have a single rate limit, others
+ allow you to set the limit for each service separately.)
+
+F.3 Other common problems
+=========================
+
+Here is a list of problems which do not fit into the above categories.
+They are in no particular order.
+
+ * On Windows, if there is a 30 second or so delay when you run a CVS
+ command, it may mean that you have your home directory set to
+ 'C:/', for example (see 'HOMEDRIVE' and 'HOMEPATH' in *note
+ Environment variables::). CVS expects the home directory to not
+ end in a slash, for example 'C:' or 'C:\cvs'.
+
+ * If you are running CVS 1.9.18 or older, and 'cvs update' finds a
+ conflict and tries to merge, as described in *note Conflicts
+ example::, but doesn't tell you there were conflicts, then you may
+ have an old version of RCS. The easiest solution probably is to
+ upgrade to a current version of CVS, which does not rely on
+ external RCS programs.
+
+Appendix G Credits
+******************
+
+Roland Pesch, then of Cygnus Support <address@hidden> wrote the manual
+pages which were distributed with CVS 1.3. Much of their text was
+copied into this manual. He also read an early draft of this manual and
+contributed many ideas and corrections.
+
+ The mailing-list 'info-cvs' is sometimes informative. I have
+included information from postings made by the following persons: David
+G. Grubbs <address@hidden>.
+
+ Some text has been extracted from the man pages for RCS.
+
+ The CVS FAQ by David G. Grubbs has provided useful material. The FAQ
+is no longer maintained, however, and this manual is about the closest
+thing there is to a successor (with respect to documenting how to use
+CVS, at least).
+
+ In addition, the following persons have helped by telling me about
+mistakes I've made:
+
+ Roxanne Brunskill <address@hidden>,
+ Kathy Dyer <address@hidden>,
+ Karl Pingle <address@hidden>,
+ Thomas A Peterson <address@hidden>,
+ Inge Wallin <address@hidden>,
+ Dirk Koschuetzki <address@hidden>
+ and Michael Brown <address@hidden>.
+
+ The list of contributors here is not comprehensive; for a more
+complete list of who has contributed to this manual see the file
+'doc/ChangeLog' in the CVS source distribution.
+
+Appendix H Dealing with bugs in CVS or this manual
+**************************************************
+
+Neither CVS nor this manual is perfect, and they probably never will be.
+If you are having trouble using CVS, or think you have found a bug,
+there are a number of things you can do about it. Note that if the
+manual is unclear, that can be considered a bug in the manual, so these
+problems are often worth doing something about as well as problems with
+CVS itself.
+
+ * If you want someone to help you and fix bugs that you report, there
+ are companies which will do that for a fee. One such company is:
+
+ Ximbiot LLC
+ Suite 230
+ 200 Diversion St.
+ Rochester Hills, MI 48307-6636
+ USA
+ Email: address@hidden
+ Phone: (248) 835-1260
+ Fax: (248) 835-1263
+ <http://ximbiot.com/>
+
+
+ * If you got CVS through a distributor, such as an operating system
+ vendor or a vendor of freeware CD-ROMs, you may wish to see whether
+ the distributor provides support. Often, they will provide no
+ support or minimal support, but this may vary from distributor to
+ distributor.
+
+ * If you have the skills and time to do so, you may wish to fix the
+ bug yourself. If you wish to submit your fix for inclusion in
+ future releases of CVS, see the file HACKING in the CVS source
+ distribution. It contains much more information on the process of
+ submitting fixes.
+
+ * There may be resources on the net which can help. A good place to
+ start is:
+
+ <http://cvs.nongnu.org/>
+
+ If you are so inspired, increasing the information available on the
+ net is likely to be appreciated. For example, before the standard
+ CVS distribution worked on Windows 95, there was a web page with
+ some explanation and patches for running CVS on Windows 95, and
+ various people helped out by mentioning this page on mailing lists
+ or newsgroups when the subject came up.
+
+ * It is also possible to report bugs to <address@hidden>. Note
+ that someone may or may not want to do anything with your bug
+ report--if you need a solution consider one of the options
+ mentioned above. People probably do want to hear about bugs which
+ are particularly severe in consequences and/or easy to fix,
+ however. You can also increase your odds by being as clear as
+ possible about the exact nature of the bug and any other relevant
+ information. The way to report bugs is to send email to
+ <address@hidden>. Note that submissions to
+ <address@hidden> may be distributed under the terms of the GNU
+ Public License, so if you don't like this, don't submit them.
+ There is usually no justification for sending mail directly to one
+ of the CVS maintainers rather than to <address@hidden>; those
+ maintainers who want to hear about such bug reports read
+ <address@hidden>. Also note that sending a bug report to other
+ mailing lists or newsgroups is _not_ a substitute for sending it to
+ <address@hidden>. It is fine to discuss CVS bugs on whatever
+ forum you prefer, but there are not necessarily any maintainers
+ reading bug reports sent anywhere except <address@hidden>.
+
+ People often ask if there is a list of known bugs or whether a
+particular bug is a known one. The file BUGS in the CVS source
+distribution is one list of known bugs, but it doesn't necessarily try
+to be comprehensive. Perhaps there will never be a comprehensive,
+detailed list of known bugs.
+
+Index
+*****
+
+* Menu:
+
+* !, in modules file: Excluding directories.
+ (line 8211)
+* #cvs.lock, removing: Concurrency. (line 3910)
+* #cvs.lock, technical details: Locks. (line 946)
+* #cvs.rfl, and backups: Backing up. (line 1358)
+* #cvs.rfl, removing: Concurrency. (line 3910)
+* #cvs.rfl, technical details: Locks. (line 946)
+* #cvs.tfl: Locks. (line 954)
+* #cvs.wfl, removing: Concurrency. (line 3910)
+* #cvs.wfl, technical details: Locks. (line 946)
+* &, in modules file: Ampersand modules. (line 8171)
+* -a, in modules file: Alias modules. (line 8101)
+* -d, in modules file: Module options. (line 8228)
+* -e, in modules file: Module options. (line 8231)
+* -e, in modules file <1>: Module program options.
+ (line 8262)
+* -j (merging branches): Merging a branch. (line 2840)
+* -j (merging branches), and keyword substitution: Merging and keywords.
+ (line 3008)
+* -k (keyword substitution): Substitution modes. (line 4392)
+* -kk, to avoid conflicts during a merge: Merging and keywords.
+ (line 3008)
+* -o, in modules file: Module options. (line 8235)
+* -o, in modules file <1>: Module program options.
+ (line 8262)
+* -s, in modules file: Module options. (line 8241)
+* -t, in modules file: Module options. (line 8249)
+* -t, in modules file <1>: Module program options.
+ (line 8262)
+* .# files: update output. (line 7239)
+* .bashrc, setting CVSROOT in: Specifying a repository.
+ (line 644)
+* .cshrc, setting CVSROOT in: Specifying a repository.
+ (line 644)
+* .cvsrc file: ~/.cvsrc. (line 4750)
+* .profile, setting CVSROOT in: Specifying a repository.
+ (line 644)
+* .tcshrc, setting CVSROOT in: Specifying a repository.
+ (line 644)
+* /usr/local/cvsroot, as example repository: Repository. (line 600)
+* :ext:, setting up: Connecting via rsh. (line 1516)
+* :ext:, troubleshooting: Connection. (line 9593)
+* :extssh:, setting up: Connecting via rsh. (line 1516)
+* :fork:, setting up: Connecting via fork.
+ (line 1899)
+* :gserver:, setting up: GSSAPI authenticated.
+ (line 1825)
+* :kserver:, setting up: Kerberos authenticated.
+ (line 1862)
+* :local:, setting up: Repository. (line 613)
+* :pserver:, setting up: Password authentication client.
+ (line 1723)
+* :pserver:, troubleshooting: Connection. (line 9604)
+* :server:, setting up: Connecting via rsh. (line 1516)
+* :server:, troubleshooting: Connection. (line 9599)
+* <<<<<<<: Conflicts example. (line 3846)
+* =======: Conflicts example. (line 3846)
+* >>>>>>>: Conflicts example. (line 3846)
+* __ files (VMS): update output. (line 7239)
+* Abandoning work: Editing files. (line 4111)
+* Access a branch: Accessing branches. (line 2675)
+* add (subcommand): Adding files. (line 3184)
+* add (subcommand) <1>: add. (line 5089)
+* Adding a tag: Tags. (line 2305)
+* Adding files: Adding files. (line 3156)
+* Admin (subcommand): admin. (line 5153)
+* Administrative files (intro): Intro administrative files.
+ (line 1233)
+* Administrative files (reference): Administrative files.
+ (line 8069)
+* Administrative files, editing them: Intro administrative files.
+ (line 1260)
+* Alias modules: Alias modules. (line 8101)
+* ALL in commitinfo: commitinfo. (line 8430)
+* Ampersand modules: Ampersand modules. (line 8171)
+* annotate (subcommand): annotate. (line 5412)
+* Atomic transactions, lack of: Concurrency. (line 3926)
+* Attic: Attic. (line 849)
+* Authenticated client, using: Password authentication client.
+ (line 1723)
+* Authenticating server, setting up: Password authentication server.
+ (line 1562)
+* Authentication, stream: Global options. (line 4806)
+* Author keyword: Keyword list. (line 4272)
+* Automatically ignored files: cvsignore. (line 8821)
+* Avoiding editor invocation: Common options. (line 5018)
+* Backing up, repository: Backing up. (line 1354)
+* Base directory, in CVS directory: Working directory storage.
+ (line 1205)
+* BASE, as reserved tag name: Tags. (line 2285)
+* BASE, special tag: Common options. (line 5050)
+* Baserev file, in CVS directory: Working directory storage.
+ (line 1211)
+* Baserev.tmp file, in CVS directory: Working directory storage.
+ (line 1219)
+* Bill of materials: Builds. (line 4651)
+* Binary files: Binary files. (line 3509)
+* Branch merge example: Merging a branch. (line 2849)
+* Branch number: Revision numbers. (line 2202)
+* Branch number <1>: Branches and revisions.
+ (line 2754)
+* Branch tags, deleting: Modifying tags. (line 2462)
+* Branch tags, moving: Modifying tags. (line 2480)
+* Branch, accessing: Accessing branches. (line 2675)
+* Branch, check out: Accessing branches. (line 2675)
+* Branch, creating a: Creating a branch. (line 2638)
+* Branch, identifying: Accessing branches. (line 2675)
+* Branch, retrieving: Accessing branches. (line 2675)
+* Branch, vendor-: Tracking sources. (line 4473)
+* Branches motivation: Branches motivation.
+ (line 2620)
+* Branches, copying changes between: Branching and merging.
+ (line 2607)
+* Branches, sticky: Accessing branches. (line 2706)
+* Branching: Branching and merging.
+ (line 2607)
+* Bringing a file up to date: Updating a file. (line 3729)
+* Bugs in this manual or CVS: BUGS. (line 9741)
+* Bugs, reporting: BUGS. (line 9748)
+* Builds: Builds. (line 4632)
+* Changes, copying between branches: Branching and merging.
+ (line 2607)
+* Changing a log message: admin options. (line 5240)
+* Check out a branch: Accessing branches. (line 2675)
+* Checked out copy, keeping: Keeping a checked out copy.
+ (line 8733)
+* Checking out source: Getting the source. (line 464)
+* checkout (subcommand): checkout. (line 5468)
+* Checkout program: Module options. (line 8235)
+* Checkout, as term for getting ready to edit: Editing files.
+ (line 4083)
+* Checkout, example: Getting the source. (line 464)
+* checkoutlist: checkoutlist. (line 8872)
+* Choosing, reserved or unreserved checkouts: Choosing a model.
+ (line 4176)
+* Cleaning up: Cleaning up. (line 531)
+* Client/Server Operation: Remote repositories.
+ (line 1409)
+* Client/Server Operation, port specification: Remote repositories.
+ (line 1409)
+* Client/Server Operation, port specification <1>: Password authentication
server.
+ (line 1562)
+* co (subcommand): checkout. (line 5468)
+* Command reference: Invoking CVS. (line 7260)
+* Command structure: Structure. (line 4697)
+* Comment leader: admin options. (line 5194)
+* commit (subcommand): commit. (line 5643)
+* 'commitinfo': commitinfo. (line 8410)
+* 'commitinfo', command environment: commitinfo. (line 8434)
+* 'commitinfo', working directory: commitinfo. (line 8434)
+* Commits, precommit verification of: commitinfo. (line 8410)
+* Committing changes to files: Committing your changes.
+ (line 488)
+* Committing, administrative support files: commit files. (line 8379)
+* Committing, when to: When to commit. (line 4234)
+* Common options: Common options. (line 4913)
+* Common syntax of info files: syntax. (line 8332)
+* Compatibility, between CVS versions: Compatibility. (line 9221)
+* Compression: Global options. (line 4906)
+* Compression <1>: Invoking CVS. (line 7328)
+* COMSPEC, environment variable: Environment variables.
+ (line 9198)
+* config, in CVSROOT: config. (line 9004)
+* Conflict markers: Conflicts example. (line 3846)
+* Conflict resolution: Conflicts example. (line 3850)
+* Conflicts (merge example): Conflicts example. (line 3818)
+* Contributors (CVS program): What is CVS?. (line 296)
+* Contributors (manual): Credits. (line 9707)
+* Copying a repository: Moving a repository.
+ (line 1390)
+* Copying changes: Branching and merging.
+ (line 2607)
+* Correcting a log message: admin options. (line 5240)
+* Creating a branch: Creating a branch. (line 2638)
+* Creating a project: Starting a new project.
+ (line 2021)
+* Creating a repository: Creating a repository.
+ (line 1309)
+* Credits (CVS program): What is CVS?. (line 296)
+* Credits (manual): Credits. (line 9707)
+* CVS 1.6, and watches: Watches Compatibility.
+ (line 4158)
+* CVS command structure: Structure. (line 4697)
+* CVS directory, in repository: CVS in repository. (line 872)
+* CVS directory, in working directory: Working directory storage.
+ (line 1035)
+* CVS passwd file: Password authentication server.
+ (line 1627)
+* CVS, history of: What is CVS?. (line 296)
+* CVS, introduction to: What is CVS?. (line 274)
+* CVS, versions of: Compatibility. (line 9221)
+* CVS/Base directory: Working directory storage.
+ (line 1205)
+* CVS/Baserev file: Working directory storage.
+ (line 1211)
+* CVS/Baserev.tmp file: Working directory storage.
+ (line 1219)
+* CVS/Entries file: Working directory storage.
+ (line 1089)
+* CVS/Entries.Backup file: Working directory storage.
+ (line 1172)
+* CVS/Entries.Log file: Working directory storage.
+ (line 1149)
+* CVS/Entries.Static file: Working directory storage.
+ (line 1177)
+* CVS/Notify file: Working directory storage.
+ (line 1195)
+* CVS/Notify.tmp file: Working directory storage.
+ (line 1200)
+* CVS/Repository file: Working directory storage.
+ (line 1061)
+* CVS/Root file: Specifying a repository.
+ (line 657)
+* CVS/Tag file: Working directory storage.
+ (line 1184)
+* CVS/Template file: Working directory storage.
+ (line 1225)
+* cvsadmin: admin. (line 5163)
+* CVSEDITOR, environment variable: Committing your changes.
+ (line 499)
+* CVSEDITOR, environment variable <1>: Environment variables.
+ (line 9128)
+* CVSEDITOR, internal variable: Variables. (line 8954)
+* cvsignore (admin file), global: cvsignore. (line 8804)
+* CVSIGNORE, environment variable: Environment variables.
+ (line 9098)
+* CVSREAD, environment variable: Environment variables.
+ (line 9106)
+* CVSREAD, overriding: Global options. (line 4890)
+* cvsroot: Repository. (line 600)
+* CVSROOT (file): Administrative files.
+ (line 8069)
+* CVSROOT, environment variable: Specifying a repository.
+ (line 644)
+* CVSROOT, internal variable: Variables. (line 8943)
+* CVSROOT, module name: Intro administrative files.
+ (line 1233)
+* CVSROOT, multiple repositories: Multiple repositories.
+ (line 1279)
+* CVSROOT, overriding: Global options. (line 4828)
+* CVSROOT, storage of files: CVSROOT storage. (line 1000)
+* CVSROOT/config: config. (line 9004)
+* CVSROOT/Emptydir directory: Working directory storage.
+ (line 1087)
+* CVSROOT/val-tags file, and read-only access to projects: File permissions.
+ (line 783)
+* CVSROOT/val-tags file, forcing tags into: Error messages. (line 9435)
+* CVSUMASK, environment variable: File permissions. (line 791)
+* cvswrappers (admin file): Wrappers. (line 8280)
+* CVSWRAPPERS, environment variable: Wrappers. (line 8280)
+* CVSWRAPPERS, environment variable <1>: Environment variables.
+ (line 9102)
+* CVS_CLIENT_LOG, environment variable: Environment variables.
+ (line 9181)
+* CVS_CLIENT_PORT: Kerberos authenticated.
+ (line 1881)
+* CVS_IGNORE_REMOTE_ROOT, environment variable: Environment variables.
+ (line 9192)
+* CVS_PASSFILE, environment variable: Password authentication client.
+ (line 1763)
+* CVS_RCMD_PORT, environment variable: Environment variables.
+ (line 9176)
+* CVS_RSH, environment variable: Environment variables.
+ (line 9148)
+* CVS_SERVER, and :fork:: Connecting via fork.
+ (line 1917)
+* CVS_SERVER, environment variable: Connecting via rsh. (line 1506)
+* CVS_SERVER_SLEEP, environment variable: Environment variables.
+ (line 9187)
+* CVS_SSH, environment variable: Environment variables.
+ (line 9152)
+* CVS_USER, environment variable: Variables. (line 8988)
+* Date keyword: Keyword list. (line 4275)
+* Dates: Common options. (line 4925)
+* Dead state: Attic. (line 860)
+* Decimal revision number: Revision numbers. (line 2202)
+* DEFAULT in commitinfo: commitinfo. (line 8427)
+* DEFAULT in editinfo: editinfo. (line 8594)
+* DEFAULT in 'verifymsg': verifymsg. (line 8471)
+* Defining a module: Defining the module.
+ (line 2159)
+* Defining modules (intro): Intro administrative files.
+ (line 1233)
+* Defining modules (reference manual): modules. (line 8081)
+* Deleting branch tags: Modifying tags. (line 2462)
+* Deleting files: Removing files. (line 3224)
+* Deleting revisions: admin options. (line 5262)
+* Deleting sticky tags: Sticky tags. (line 2567)
+* Deleting tags: Modifying tags. (line 2462)
+* Descending directories: Recursive behavior. (line 3093)
+* Device nodes: Special Files. (line 4678)
+* Diff: Viewing differences.
+ (line 575)
+* diff (subcommand): diff. (line 5776)
+* Differences, merging: Merging two revisions.
+ (line 2947)
+* Directories, moving: Moving directories. (line 3431)
+* Directories, removing: Removing directories.
+ (line 3315)
+* Directory, descending: Recursive behavior. (line 3093)
+* Disjoint repositories: Multiple repositories.
+ (line 1279)
+* Distributing log messages: loginfo. (line 8649)
+* driver.c (merge example): Conflicts example. (line 3756)
+* edit (subcommand): Editing files. (line 4090)
+* editinfo (admin file): editinfo. (line 8562)
+* Editing administrative files: Intro administrative files.
+ (line 1260)
+* Editing the modules file: Defining the module.
+ (line 2159)
+* Editor, avoiding invocation of: Common options. (line 5018)
+* EDITOR, environment variable: Committing your changes.
+ (line 499)
+* EDITOR, environment variable <1>: Environment variables.
+ (line 9129)
+* EDITOR, internal variable: Variables. (line 8955)
+* EDITOR, overriding: Global options. (line 4833)
+* Editor, specifying per module: editinfo. (line 8562)
+* editors (subcommand): Watch information. (line 4145)
+* emerge: Conflicts example. (line 3889)
+* Emptydir, in CVSROOT directory: Working directory storage.
+ (line 1087)
+* Encryption: Global options. (line 4896)
+* Entries file, in CVS directory: Working directory storage.
+ (line 1089)
+* Entries.Backup file, in CVS directory: Working directory storage.
+ (line 1172)
+* Entries.Log file, in CVS directory: Working directory storage.
+ (line 1149)
+* Entries.Static file, in CVS directory: Working directory storage.
+ (line 1177)
+* Environment variables: Environment variables.
+ (line 9096)
+* environment variables, passed to administrative files: Variables.
+ (line 8987)
+* Errors, reporting: BUGS. (line 9748)
+* Example of a work-session: A sample session. (line 451)
+* Example of merge: Conflicts example. (line 3756)
+* Example, branch merge: Merging a branch. (line 2849)
+* Excluding directories, in modules file: Excluding directories.
+ (line 8211)
+* Exit status, of commitinfo: commitinfo. (line 8423)
+* Exit status, of CVS: Exit status. (line 4732)
+* Exit status, of editor: Error messages. (line 9557)
+* Exit status, of 'verifymsg': verifymsg. (line 8474)
+* export (subcommand): export. (line 6329)
+* Export program: Module options. (line 8231)
+* Fetching source: Getting the source. (line 464)
+* File had conflicts on merge: File status. (line 3693)
+* File locking: Multiple developers.
+ (line 3622)
+* File permissions, general: File permissions. (line 763)
+* File permissions, Windows-specific: Windows permissions.
+ (line 833)
+* File status: File status. (line 3653)
+* Files, moving: Moving files. (line 3337)
+* Files, reference manual: Administrative files.
+ (line 8069)
+* Fixing a log message: admin options. (line 5240)
+* Forcing a tag match: Common options. (line 4979)
+* fork, access method: Connecting via fork.
+ (line 1899)
+* Form for log message: rcsinfo. (line 8754)
+* Format of CVS commands: Structure. (line 4697)
+* Getting started: A sample session. (line 451)
+* Getting the source: Getting the source. (line 464)
+* Global cvsignore: cvsignore. (line 8804)
+* Global options: Global options. (line 4799)
+* Group, UNIX file permissions, in repository: File permissions.
+ (line 763)
+* gserver (client/server connection method), port specification: Remote
repositories.
+ (line 1409)
+* gserver (client/server connection method), port specification <1>: Password
authentication server.
+ (line 1562)
+* GSSAPI: GSSAPI authenticated.
+ (line 1825)
+* Gzip: Global options. (line 4906)
+* Gzip <1>: Invoking CVS. (line 7328)
+* Hard links: Special Files. (line 4678)
+* HEAD, as reserved tag name: Tags. (line 2285)
+* HEAD, special tag: Common options. (line 5050)
+* Header keyword: Keyword list. (line 4278)
+* history (subcommand): history. (line 6392)
+* History browsing: History browsing. (line 3466)
+* History file: history file. (line 8910)
+* History files: Repository files. (line 745)
+* History of CVS: What is CVS?. (line 296)
+* HOME, environment variable: Environment variables.
+ (line 9139)
+* HOMEDRIVE, environment variable: Environment variables.
+ (line 9141)
+* HOMEPATH, environment variable: Environment variables.
+ (line 9140)
+* Id keyword: Keyword list. (line 4284)
+* Ident (shell command): Using keywords. (line 4349)
+* Identifying a branch: Accessing branches. (line 2675)
+* Identifying files: Keyword substitution.
+ (line 4256)
+* Ignored files: cvsignore. (line 8821)
+* IgnoreUnknownConfigKeys, in CVSROOT/config: config. (line 9082)
+* Ignoring files: cvsignore. (line 8804)
+* import (subcommand): import. (line 6532)
+* Importing files: From files. (line 2039)
+* Importing files, from other version control systems: From other version
control systems.
+ (line 2083)
+* Importing modules: First import. (line 4491)
+* Index: Index. (line 9815)
+* inetd, configuring for pserver: Password authentication server.
+ (line 1562)
+* Info files: Trigger Scripts. (line 8317)
+* Info files (syntax): syntax. (line 8332)
+* Info files, security: Trigger Script Security.
+ (line 8355)
+* Informing others: Informing others. (line 3896)
+* init (subcommand): Creating a repository.
+ (line 1338)
+* Installed images (VMS): File permissions. (line 815)
+* Internal variables: Variables. (line 8923)
+* Introduction to CVS: What is CVS?. (line 274)
+* Invoking CVS: Invoking CVS. (line 7260)
+* Isolation: History browsing. (line 3466)
+* Join: Merging a branch. (line 2847)
+* Keeping a checked out copy: Keeping a checked out copy.
+ (line 8733)
+* Kerberos, using :gserver:: GSSAPI authenticated.
+ (line 1825)
+* Kerberos, using :kserver:: Kerberos authenticated.
+ (line 1862)
+* Kerberos, using kerberized rsh: Connecting via rsh. (line 1516)
+* Keyword expansion: Keyword substitution.
+ (line 4256)
+* Keyword List: Keyword list. (line 4270)
+* Keyword substitution: Keyword substitution.
+ (line 4256)
+* Keyword substitution, and merging: Merging and keywords.
+ (line 3008)
+* Keyword substitution, changing modes: Substitution modes. (line 4392)
+* Kflag: Substitution modes. (line 4392)
+* kinit: Kerberos authenticated.
+ (line 1887)
+* Known bugs in this manual or CVS: BUGS. (line 9806)
+* kserver (client/server connection method), port specification: Remote
repositories.
+ (line 1409)
+* kserver (client/server connection method), port specification <1>: Password
authentication server.
+ (line 1562)
+* Layout of repository: Repository. (line 600)
+* Left-hand options: Global options. (line 4799)
+* Linear development: Revision numbers. (line 2202)
+* Link, symbolic, importing: import output. (line 6637)
+* List, mailing list: What is CVS?. (line 312)
+* Locally Added: File status. (line 3666)
+* Locally Modified: File status. (line 3663)
+* Locally Removed: File status. (line 3670)
+* LockDir, in CVSROOT/config: config. (line 9039)
+* Locker keyword: Keyword list. (line 4293)
+* Locking files: Multiple developers.
+ (line 3622)
+* Locks, cvs, and backups: Backing up. (line 1358)
+* Locks, cvs, introduction: Concurrency. (line 3905)
+* Locks, cvs, technical details: Locks. (line 946)
+* log (subcommand): log. (line 6653)
+* Log information, saving: history file. (line 8910)
+* Log keyword: Keyword list. (line 4297)
+* Log message entry: Committing your changes.
+ (line 488)
+* Log message template: rcsinfo. (line 8754)
+* Log message, correcting: admin options. (line 5240)
+* Log message, verifying: verifymsg. (line 8452)
+* Log messages: loginfo. (line 8649)
+* Log messages, editing: editinfo. (line 8562)
+* LogHistory, in CVSROOT/config: config. (line 9058)
+* Login (subcommand): Password authentication client.
+ (line 1723)
+* loginfo (admin file): loginfo. (line 8649)
+* LOGNAME, environment variable: Variables. (line 8995)
+* Logout (subcommand): Password authentication client.
+ (line 1787)
+* Mail, automatic mail on commit: Informing others. (line 3896)
+* Mailing list: What is CVS?. (line 312)
+* Mailing log messages: loginfo. (line 8649)
+* Main trunk and branches: Branching and merging.
+ (line 2607)
+* make: Builds. (line 4632)
+* Many repositories: Multiple repositories.
+ (line 1279)
+* Markers, conflict: Conflicts example. (line 3846)
+* Merge, an example: Conflicts example. (line 3756)
+* Merge, branch example: Merging a branch. (line 2849)
+* Merging: Branching and merging.
+ (line 2607)
+* Merging a branch: Merging a branch. (line 2840)
+* Merging a file: Updating a file. (line 3729)
+* Merging two revisions: Merging two revisions.
+ (line 2947)
+* Merging, and keyword substitution: Merging and keywords.
+ (line 3008)
+* mkmodules: Error messages. (line 9409)
+* Modifications, copying between branches: Branching and merging.
+ (line 2607)
+* Module status: Module options. (line 8241)
+* Module, defining: Defining the module.
+ (line 2159)
+* Modules (admin file): modules. (line 8081)
+* Modules file: Intro administrative files.
+ (line 1233)
+* Modules file program options: Module program options.
+ (line 8262)
+* Modules file, changing: Defining the module.
+ (line 2159)
+* modules.db: CVSROOT storage. (line 1019)
+* modules.dir: CVSROOT storage. (line 1019)
+* modules.pag: CVSROOT storage. (line 1019)
+* Motivation for branches: Branches motivation.
+ (line 2620)
+* Moving a repository: Moving a repository.
+ (line 1390)
+* Moving branch tags: Modifying tags. (line 2480)
+* Moving directories: Moving directories. (line 3431)
+* Moving files: Moving files. (line 3337)
+* Moving tags: Modifying tags. (line 2480)
+* Multiple developers: Multiple developers.
+ (line 3622)
+* Multiple repositories: Multiple repositories.
+ (line 1279)
+* Name keyword: Keyword list. (line 4287)
+* Name, symbolic (tag): Tags. (line 2285)
+* Needs Checkout: File status. (line 3674)
+* Needs Merge: File status. (line 3684)
+* Needs Patch: File status. (line 3679)
+* Newsgroups: What is CVS?. (line 312)
+* notify (admin file): Getting Notified. (line 4048)
+* Notify file, in CVS directory: Working directory storage.
+ (line 1195)
+* Notify.tmp file, in CVS directory: Working directory storage.
+ (line 1200)
+* Number, branch: Revision numbers. (line 2202)
+* Number, branch <1>: Branches and revisions.
+ (line 2754)
+* Number, revision-: Revision numbers. (line 2202)
+* Option defaults: ~/.cvsrc. (line 4750)
+* Options, global: Global options. (line 4799)
+* Options, in modules file: Module options. (line 8225)
+* Outdating revisions: admin options. (line 5262)
+* Overlap: Updating a file. (line 3747)
+* Overriding CVSREAD: Global options. (line 4890)
+* Overriding CVSROOT: Global options. (line 4828)
+* Overriding EDITOR: Global options. (line 4833)
+* Overriding RCSBIN: Global options. (line 4814)
+* Overriding TMPDIR: Global options. (line 4820)
+* Overview: Overview. (line 264)
+* Ownership, saving in CVS: Special Files. (line 4678)
+* Parallel repositories: Multiple repositories.
+ (line 1279)
+* passwd (admin file): Password authentication server.
+ (line 1627)
+* Password client, using: Password authentication client.
+ (line 1723)
+* Password server, setting up: Password authentication server.
+ (line 1562)
+* PATH, environment variable: Environment variables.
+ (line 9135)
+* Per-directory sticky tags/dates: Working directory storage.
+ (line 1184)
+* Per-module editor: editinfo. (line 8562)
+* Permissions, general: File permissions. (line 763)
+* Permissions, saving in CVS: Special Files. (line 4678)
+* Permissions, Windows-specific: Windows permissions.
+ (line 833)
+* Policy: When to commit. (line 4234)
+* port, specifying for remote repositories: Remote repositories.
+ (line 1409)
+* port, specifying for remote repositories <1>: Password authentication server.
+ (line 1562)
+* Precommit checking: commitinfo. (line 8410)
+* pserver (client/server connection method), port specification: Remote
repositories.
+ (line 1409)
+* pserver (client/server connection method), port specification <1>: Password
authentication server.
+ (line 1562)
+* pserver (subcommand): Password authentication server.
+ (line 1562)
+* PVCS, importing files from: From other version control systems.
+ (line 2121)
+* RCS history files: Repository files. (line 745)
+* RCS revision numbers: Tags. (line 2270)
+* RCS, importing files from: From other version control systems.
+ (line 2087)
+* RCS-style locking: Multiple developers.
+ (line 3622)
+* RCSBIN, in CVSROOT/config: config. (line 9013)
+* RCSBIN, internal variable: Variables. (line 8949)
+* RCSBIN, overriding: Global options. (line 4814)
+* RCSfile keyword: Keyword list. (line 4320)
+* rcsinfo (admin file): rcsinfo. (line 8754)
+* rdiff (subcommand): rdiff. (line 6808)
+* Read-only files, and -r: Global options. (line 4872)
+* Read-only files, and CVSREAD: Environment variables.
+ (line 9106)
+* Read-only files, and watches: Setting a watch. (line 3972)
+* Read-only files, in repository: File permissions. (line 763)
+* Read-only mode: Global options. (line 4853)
+* Read-only repository access: Read-only access. (line 1923)
+* readers (admin file): Read-only access. (line 1923)
+* Recursive (directory descending): Recursive behavior. (line 3093)
+* Reference manual (files): Administrative files.
+ (line 8069)
+* Reference manual for variables: Environment variables.
+ (line 9096)
+* Reference, commands: Invoking CVS. (line 7260)
+* Regular expression syntax: syntax. (line 8336)
+* Regular modules: Regular modules. (line 8132)
+* release (subcommand): release. (line 6908)
+* Releases, revisions and versions: Versions revisions releases.
+ (line 2222)
+* Releasing your working copy: Cleaning up. (line 531)
+* Remote repositories: Remote repositories.
+ (line 1409)
+* Remote repositories, port specification: Remote repositories.
+ (line 1409)
+* Remote repositories, port specification <1>: Password authentication server.
+ (line 1562)
+* Remove (subcommand): Removing files. (line 3252)
+* remove (subcommand): remove. (line 6994)
+* Removing a change: Merging two revisions.
+ (line 2950)
+* Removing branch tags: Modifying tags. (line 2462)
+* Removing directories: Removing directories.
+ (line 3315)
+* Removing files: Removing files. (line 3224)
+* Removing tags: Modifying tags. (line 2462)
+* Removing your working copy: Cleaning up. (line 531)
+* Renaming directories: Moving directories. (line 3431)
+* Renaming files: Moving files. (line 3337)
+* Renaming tags: Modifying tags. (line 2500)
+* Replacing a log message: admin options. (line 5240)
+* Reporting bugs: BUGS. (line 9748)
+* Repositories, multiple: Multiple repositories.
+ (line 1279)
+* Repositories, remote: Remote repositories.
+ (line 1409)
+* Repositories, remote, port specification: Remote repositories.
+ (line 1409)
+* Repositories, remote, port specification <1>: Password authentication server.
+ (line 1562)
+* Repository (intro): Repository. (line 600)
+* Repository file, in CVS directory: Working directory storage.
+ (line 1061)
+* Repository, backing up: Backing up. (line 1354)
+* Repository, example: Repository. (line 600)
+* Repository, how data is stored: Repository storage. (line 670)
+* Repository, moving: Moving a repository.
+ (line 1390)
+* Repository, setting up: Creating a repository.
+ (line 1309)
+* RereadLogAfterVerify, in CVSROOT/config: config. (line 9065)
+* Reserved checkouts: Multiple developers.
+ (line 3622)
+* Resetting sticky tags: Sticky tags. (line 2567)
+* Resolving a conflict: Conflicts example. (line 3850)
+* Restoring old version of removed file: Merging two revisions.
+ (line 2960)
+* Resurrecting old version of dead file: Merging two revisions.
+ (line 2960)
+* Retrieve a branch: Accessing branches. (line 2675)
+* Retrieving an old revision using tags: Tags. (line 2345)
+* Reverting to repository version: Editing files. (line 4111)
+* Revision keyword: Keyword list. (line 4323)
+* Revision management: Revision management.
+ (line 4223)
+* Revision numbers: Revision numbers. (line 2202)
+* Revision numbers (branches): Branches and revisions.
+ (line 2754)
+* Revision tree: Revision numbers. (line 2202)
+* Revision tree, making branches: Branching and merging.
+ (line 2607)
+* Revisions, merging differences between: Merging two revisions.
+ (line 2947)
+* Revisions, versions and releases: Versions revisions releases.
+ (line 2222)
+* Right-hand options: Common options. (line 4913)
+* Root file, in CVS directory: Specifying a repository.
+ (line 657)
+* rsh: Connecting via rsh. (line 1486)
+* rsh replacements (Kerberized, SSH, &c): Connecting via rsh.
+ (line 1516)
+* rtag (subcommand): Tagging by date/tag.
+ (line 2417)
+* rtag, creating a branch using: Creating a branch. (line 2638)
+* Saving space: admin options. (line 5262)
+* SCCS, importing files from: From other version control systems.
+ (line 2114)
+* Security, file permissions in repository: File permissions.
+ (line 763)
+* Security, GSSAPI: GSSAPI authenticated.
+ (line 1825)
+* Security, Kerberos: Kerberos authenticated.
+ (line 1862)
+* Security, of pserver: Password authentication security.
+ (line 1793)
+* Security, setuid: File permissions. (line 815)
+* Server, CVS: Remote repositories.
+ (line 1409)
+* Server, temporary directories: Server temporary directory.
+ (line 1990)
+* Setgid: File permissions. (line 815)
+* Setting up a repository: Creating a repository.
+ (line 1309)
+* Setuid: File permissions. (line 815)
+* Source keyword: Keyword list. (line 4326)
+* Source, getting CVS source: What is CVS?. (line 306)
+* Source, getting from CVS: Getting the source. (line 464)
+* Special files: Special Files. (line 4678)
+* Specifying dates: Common options. (line 4925)
+* Spreading information: Informing others. (line 3896)
+* ssh: Connecting via rsh. (line 1480)
+* SSH (rsh replacement): Connecting via rsh. (line 1516)
+* Starting a project with CVS: Starting a new project.
+ (line 2021)
+* State keyword: Keyword list. (line 4329)
+* Status of a file: File status. (line 3653)
+* Status of a module: Module options. (line 8241)
+* Sticky date: Sticky tags. (line 2574)
+* Sticky tags: Sticky tags. (line 2542)
+* Sticky tags, resetting: Sticky tags. (line 2567)
+* Sticky tags/dates, per-directory: Working directory storage.
+ (line 1184)
+* Storing log messages: loginfo. (line 8649)
+* Stream authentication: Global options. (line 4806)
+* Structure: Structure. (line 4697)
+* Subdirectories: Recursive behavior. (line 3093)
+* Support, getting CVS support: BUGS. (line 9751)
+* Symbolic link, importing: import output. (line 6637)
+* Symbolic links: Special Files. (line 4678)
+* Symbolic name (tag): Tags. (line 2285)
+* Syntax of info files: syntax. (line 8332)
+* SystemAuth, in CVSROOT/config: config. (line 9019)
+* tag (subcommand): Tagging the working directory.
+ (line 2392)
+* Tag file, in CVS directory: Working directory storage.
+ (line 1184)
+* Tag program: Module options. (line 8249)
+* tag, command, introduction: Tags. (line 2285)
+* tag, creating a branch using: Creating a branch. (line 2638)
+* Tag, example: Tags. (line 2305)
+* Tag, retrieving old revisions: Tags. (line 2345)
+* Tag, symbolic name: Tags. (line 2285)
+* taginfo (admin file): taginfo. (line 8782)
+* Tags: Tags. (line 2266)
+* Tags, deleting: Modifying tags. (line 2462)
+* Tags, logging: taginfo. (line 8782)
+* Tags, moving: Modifying tags. (line 2480)
+* Tags, renaming: Modifying tags. (line 2500)
+* Tags, sticky: Sticky tags. (line 2542)
+* Tags, verifying: taginfo. (line 8782)
+* tc, Trivial Compiler (example): A sample session. (line 451)
+* Team of developers: Multiple developers.
+ (line 3622)
+* TEMP, environment variable: Environment variables.
+ (line 9204)
+* Template file, in CVS directory: Working directory storage.
+ (line 1225)
+* Template for log message: rcsinfo. (line 8754)
+* Temporary directories, and server: Server temporary directory.
+ (line 1990)
+* Temporary files, location of: Environment variables.
+ (line 9205)
+* Third-party sources: Tracking sources. (line 4469)
+* Time: Common options. (line 4925)
+* Timezone, in input: Common options. (line 4941)
+* Timezone, in output: log. (line 6662)
+* TMP, environment variable: Environment variables.
+ (line 9203)
+* TMPDIR, environment variable: Environment variables.
+ (line 9202)
+* TMPDIR, overriding: Global options. (line 4820)
+* TopLevelAdmin, in CVSROOT/config: config. (line 9026)
+* Trace: Global options. (line 4881)
+* Traceability: History browsing. (line 3466)
+* Tracking sources: Tracking sources. (line 4469)
+* Transactions, atomic, lack of: Concurrency. (line 3926)
+* Trigger scripts: Trigger Scripts. (line 8317)
+* Trigger scripts, security: Trigger Script Security.
+ (line 8355)
+* Trivial Compiler (example): A sample session. (line 451)
+* Typical repository: Repository. (line 600)
+* Umask, for repository files: File permissions. (line 791)
+* Undoing a change: Merging two revisions.
+ (line 2950)
+* unedit (subcommand): Editing files. (line 4111)
+* Unknown: File status. (line 3698)
+* Unreserved checkouts: Multiple developers.
+ (line 3622)
+* Unresolved Conflict: File status. (line 3688)
+* Up-to-date: File status. (line 3658)
+* update (subcommand): update. (line 7075)
+* Update, introduction: Updating a file. (line 3729)
+* update, to display file status: File status. (line 3719)
+* Updating a file: Updating a file. (line 3729)
+* User aliases: Password authentication server.
+ (line 1656)
+* User variables: Variables. (line 8967)
+* USER, environment variable: Variables. (line 8998)
+* USER, internal variable: Variables. (line 8960)
+* users (admin file): Getting Notified. (line 4063)
+* val-tags file, and read-only access to projects: File permissions.
+ (line 783)
+* val-tags file, forcing tags into: Error messages. (line 9435)
+* Variables: Variables. (line 8923)
+* Vendor: Tracking sources. (line 4473)
+* Vendor branch: Tracking sources. (line 4473)
+* 'verifymsg' (admin file): verifymsg. (line 8452)
+* 'verifymsg', changing the log message: verifymsg. (line 8477)
+* 'verifymsg', changing the log message <1>: config. (line 9065)
+* version (subcommand): Invoking CVS. (line 8032)
+* Versions, of CVS: Compatibility. (line 9221)
+* Versions, revisions and releases: Versions revisions releases.
+ (line 2222)
+* Viewing differences: Viewing differences.
+ (line 575)
+* VISUAL, environment variable: Committing your changes.
+ (line 505)
+* VISUAL, environment variable <1>: Environment variables.
+ (line 9130)
+* VISUAL, internal variable: Variables. (line 8956)
+* watch add (subcommand): Getting Notified. (line 4001)
+* watch off (subcommand): Setting a watch. (line 3986)
+* watch on (subcommand): Setting a watch. (line 3970)
+* watch remove (subcommand): Getting Notified. (line 4042)
+* watchers (subcommand): Watch information. (line 4136)
+* Watches: Watches. (line 3949)
+* wdiff (import example): First import. (line 4504)
+* Web pages, maintaining with CVS: Keeping a checked out copy.
+ (line 8733)
+* What (shell command): Using keywords. (line 4362)
+* What branches are good for: Branches motivation.
+ (line 2620)
+* What is CVS not?: What is CVS not?. (line 333)
+* What is CVS?: What is CVS?. (line 274)
+* When to commit: When to commit. (line 4234)
+* Windows, and permissions: Windows permissions.
+ (line 833)
+* Work-session, example of: A sample session. (line 451)
+* Working copy: Multiple developers.
+ (line 3622)
+* Working copy, removing: Cleaning up. (line 531)
+* Wrappers: Wrappers. (line 8280)
+* writers (admin file): Read-only access. (line 1923)
+* Ximbiot: BUGS. (line 9751)
+* xinetd, configuring for pserver: Password authentication server.
+ (line 1562)
+* Zone, time, in input: Common options. (line 4941)
+* Zone, time, in output: log. (line 6662)
+
Index: cvs.txt.gz
===================================================================
RCS file: cvs.txt.gz
diff -N cvs.txt.gz
Binary files /dev/null and /tmp/cvseh9EiW differ
Index: index.html
===================================================================
RCS file: index.html
diff -N index.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ index.html 28 Dec 2015 15:57:45 -0000 1.1
@@ -0,0 +1,69 @@
+<!--#include virtual="/server/header.html" -->
+<title>CVS Manual - GNU Project - Free Software Foundation (FSF)</title>
+<!--#include virtual="/server/banner.html" -->
+<h2>CVS Manual</h2>
+
+<address>Free Software Foundation</address>
+<address>last updated December 28, 2015</address>
+
+<p>This manual (cvs) is available in the following formats:</p>
+
+<ul>
+<li><a href="cvs.html">HTML
+ (796K bytes)</a> - entirely on one web page.</li>
+<li><a href="html_node/index.html">HTML</a> - with one web page per
+ node.</li>
+<li><a href="cvs.html.gz">HTML compressed
+ (164K gzipped characters)</a> - entirely on
+ one web page.</li>
+<li><a href="cvs.html_node.tar.gz">HTML compressed
+ (212K gzipped tar file)</a> -
+ with one web page per node.</li>
+<li><a href="cvs.info.tar.gz">Info document
+ (256K bytes gzipped tar file)</a>.</li>
+<li><a href="cvs.txt">ASCII text
+ (448K bytes)</a>.</li>
+<li><a href="cvs.txt.gz">ASCII text compressed
+ (124K bytes gzipped)</a>.</li>
+<li><a href="cvs.dvi.gz">TeX dvi file
+ (224K bytes gzipped)</a>.</li>
+<li><a href="cvs.pdf">PDF file
+ (1160K bytes)</a>.</li>
+<li><a href="cvs.texi.tar.gz">Texinfo source
+ (184K bytes gzipped tar file).</a></li>
+</ul>
+
+<p>You can <a href="http://shop.fsf.org/">buy printed copies of
+some manuals</a> (among other items) from the Free Software Foundation;
+this helps support FSF activities.</p>
+
+<p>(This page generated by the <a
href="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh">gendocs.sh
+script</a>.)</p>
+
+<!-- If needed, change the copyright block at the bottom. In general,
+ all pages on the GNU web server should have the section about
+ verbatim copying. Please do NOT remove this without talking
+ with the webmasters first.
+ Please make sure the copyright date is consistent with the document
+ and that it is like this: "2001, 2002", not this: "2001-2002". -->
+</div><!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.html" -->
+<div id="footer">
+
+<p>Please send general FSF & GNU inquiries to
+<a href="mailto:address@hidden"><address@hidden></a>.
+There are also <a href="/contact/">other ways to contact</a>
+the FSF.<br />
+Please send broken links and other corrections or suggestions to
+<a href="mailto:bug-cvs@@nongnu.org"><bug-cvs@@nongnu.org></a>.</p>
+
+<p>Copyright © 2013 Free Software Foundation, Inc.</p>
+
+<p>Verbatim copying and distribution of this entire article are
+permitted worldwide, without royalty, in any medium, provided this
+notice, and the copyright notice, are preserved.</p>
+
+</div>
+</div>
+</body>
+</html>
Index: html_node/A-sample-session.html
===================================================================
RCS file: html_node/A-sample-session.html
diff -N html_node/A-sample-session.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/A-sample-session.html 28 Dec 2015 15:57:45 -0000 1.1
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: A sample session</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: A sample session">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
A sample session">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Overview.html#Overview" rel="up" title="Overview">
+<link href="Getting-the-source.html#Getting-the-source" rel="next"
title="Getting the source">
+<link href="What-is-CVS-not_003f.html#What-is-CVS-not_003f" rel="prev"
title="What is CVS not?">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="A-sample-session"></a>
+<div class="header">
+<p>
+Previous: <a href="What-is-CVS-not_003f.html#What-is-CVS-not_003f"
accesskey="p" rel="prev">What is CVS not?</a>, Up: <a
href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="A-sample-session-1"></a>
+<h3 class="section">1.3 A sample session</h3>
+<a name="index-Example-of-a-work_002dsession"></a>
+<a name="index-Getting-started"></a>
+<a name="index-Work_002dsession_002c-example-of"></a>
+<a name="index-tc_002c-Trivial-Compiler-_0028example_0029"></a>
+<a name="index-Trivial-Compiler-_0028example_0029"></a>
+
+
+<p>As a way of introducing <small>CVS</small>, we’ll go through a
+typical work-session using <small>CVS</small>. The first thing
+to understand is that <small>CVS</small> stores all files in a
+centralized <em>repository</em> (see <a
href="Repository.html#Repository">Repository</a>); this
+section assumes that a repository is set up.
+</p>
+<p>Suppose you are working on a simple compiler. The source
+consists of a handful of C files and a <samp>Makefile</samp>.
+The compiler is called ‘<samp>tc</samp>’ (Trivial Compiler),
+and the repository is set up so that there is a module
+called ‘<samp>tc</samp>’.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Getting-the-source.html#Getting-the-source" accesskey="1">Getting the
source</a>:</td><td> </td><td align="left" valign="top">Creating a
workspace
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Committing-your-changes.html#Committing-your-changes"
accesskey="2">Committing your changes</a>:</td><td> </td><td
align="left" valign="top">Making your work available to others
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Cleaning-up.html#Cleaning-up" accesskey="3">Cleaning
up</a>:</td><td> </td><td align="left" valign="top">Cleaning up
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Viewing-differences.html#Viewing-differences" accesskey="4">Viewing
differences</a>:</td><td> </td><td align="left" valign="top">Viewing
differences
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Accessing-branches.html
===================================================================
RCS file: html_node/Accessing-branches.html
diff -N html_node/Accessing-branches.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Accessing-branches.html 28 Dec 2015 15:57:45 -0000 1.1
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Accessing
branches</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Accessing branches">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Accessing branches">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Branches-and-revisions.html#Branches-and-revisions" rel="next"
title="Branches and revisions">
+<link href="Creating-a-branch.html#Creating-a-branch" rel="prev"
title="Creating a branch">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Accessing-branches"></a>
+<div class="header">
+<p>
+Next: <a href="Branches-and-revisions.html#Branches-and-revisions"
accesskey="n" rel="next">Branches and revisions</a>, Previous: <a
href="Creating-a-branch.html#Creating-a-branch" accesskey="p"
rel="prev">Creating a branch</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Accessing-branches-1"></a>
+<h3 class="section">5.3 Accessing branches</h3>
+<a name="index-Check-out-a-branch"></a>
+<a name="index-Retrieve-a-branch"></a>
+<a name="index-Access-a-branch"></a>
+<a name="index-Identifying-a-branch"></a>
+<a name="index-Branch_002c-check-out"></a>
+<a name="index-Branch_002c-retrieving"></a>
+<a name="index-Branch_002c-accessing"></a>
+<a name="index-Branch_002c-identifying"></a>
+
+<p>You can retrieve a branch in one of two ways: by
+checking it out fresh from the repository, or by
+switching an existing working copy over to the branch.
+</p>
+<p>To check out a branch from the repository, invoke
+‘<samp>checkout</samp>’ with the ‘<samp>-r</samp>’
flag, followed by
+the tag name of the branch (see <a
href="Creating-a-branch.html#Creating-a-branch">Creating a branch</a>):
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r rel-1-0-patches tc
+</pre></div>
+
+<p>Or, if you already have a working copy, you can switch
+it to a given branch with ‘<samp>update -r</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs update -r rel-1-0-patches tc
+</pre></div>
+
+<p>or equivalently:
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs update -r rel-1-0-patches
+</pre></div>
+
+<p>It does not matter if the working copy was originally
+on the main trunk or on some other branch – the above
+command will switch it to the named branch. And
+similarly to a regular ‘<samp>update</samp>’ command,
+‘<samp>update -r</samp>’ merges any changes you have made,
+notifying you of conflicts where they occur.
+</p>
+<p>Once you have a working copy tied to a particular
+branch, it remains there until you tell it otherwise.
+This means that changes checked in from the working
+copy will add new revisions on that branch, while
+leaving the main trunk and other branches unaffected.
+</p>
+<a name="index-Branches_002c-sticky"></a>
+<p>To find out what branch a working copy is on, you can
+use the ‘<samp>status</samp>’ command. In its output, look for
+the field named ‘<samp>Sticky tag</samp>’ (see <a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a>)
+– that’s <small>CVS</small>’s way of telling you the branch,
if
+any, of the current working files:
+</p>
+<div class="example">
+<pre class="example">$ cvs status -v driver.c backend.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7 Sat Dec 5 18:25:54 1992
+ RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.7.2)
+ rel-1-0 (revision: 1.7)
+
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.4.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.4.2)
+ rel-1-0 (revision: 1.4)
+ rel-0-4 (revision: 1.4)
+
+</pre></div>
+
+<p>Don’t be confused by the fact that the branch numbers
+for each file are different (‘<samp>1.7.2</samp>’ and
+‘<samp>1.4.2</samp>’ respectively). The branch tag is the
+same, ‘<samp>rel-1-0-patches</samp>’, and the files are
+indeed on the same branch. The numbers simply reflect
+the point in each file’s revision history at which the
+branch was made. In the above example, one can deduce
+that ‘<samp>driver.c</samp>’ had been through more changes than
+‘<samp>backend.c</samp>’ before this branch was created.
+</p>
+<p>See <a href="Branches-and-revisions.html#Branches-and-revisions">Branches
and revisions</a> for details about how
+branch numbers are constructed.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Branches-and-revisions.html#Branches-and-revisions"
accesskey="n" rel="next">Branches and revisions</a>, Previous: <a
href="Creating-a-branch.html#Creating-a-branch" accesskey="p"
rel="prev">Creating a branch</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Adding-and-removing.html
===================================================================
RCS file: html_node/Adding-and-removing.html
diff -N html_node/Adding-and-removing.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Adding-and-removing.html 28 Dec 2015 15:57:46 -0000 1.1
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Adding and
removing</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Adding and removing">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Adding and removing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Adding-files.html#Adding-files" rel="next" title="Adding files">
+<link href="Recursive-behavior.html#Recursive-behavior" rel="prev"
title="Recursive behavior">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Adding-and-removing"></a>
+<div class="header">
+<p>
+Next: <a href="History-browsing.html#History-browsing" accesskey="n"
rel="next">History browsing</a>, Previous: <a
href="Recursive-behavior.html#Recursive-behavior" accesskey="p"
rel="prev">Recursive behavior</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adding_002c-removing_002c-and-renaming-files-and-directories"></a>
+<h2 class="chapter">7 Adding, removing, and renaming files and directories</h2>
+
+<p>In the course of a project, one will often add new
+files. Likewise with removing or renaming, or with
+directories. The general concept to keep in mind in
+all these cases is that instead of making an
+irreversible change you want <small>CVS</small> to record the
+fact that a change has taken place, just as with
+modifying an existing file. The exact mechanisms to do
+this in <small>CVS</small> vary depending on the situation.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Adding-files.html#Adding-files" accesskey="1">Adding
files</a>:</td><td> </td><td align="left" valign="top">Adding files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Removing-files.html#Removing-files" accesskey="2">Removing
files</a>:</td><td> </td><td align="left" valign="top">Removing files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Removing-directories.html#Removing-directories" accesskey="3">Removing
directories</a>:</td><td> </td><td align="left"
valign="top">Removing directories
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Moving-files.html#Moving-files" accesskey="4">Moving
files</a>:</td><td> </td><td align="left" valign="top">Moving and
renaming files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Moving-directories.html#Moving-directories" accesskey="5">Moving
directories</a>:</td><td> </td><td align="left" valign="top">Moving
and renaming directories
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Adding-files.html
===================================================================
RCS file: html_node/Adding-files.html
diff -N html_node/Adding-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Adding-files.html 28 Dec 2015 15:57:46 -0000 1.1
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Adding files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Adding files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Adding files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="up"
title="Adding and removing">
+<link href="Removing-files.html#Removing-files" rel="next" title="Removing
files">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="prev"
title="Adding and removing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Adding-files"></a>
+<div class="header">
+<p>
+Next: <a href="Removing-files.html#Removing-files" accesskey="n"
rel="next">Removing files</a>, Up: <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adding-files-to-a-directory"></a>
+<h3 class="section">7.1 Adding files to a directory</h3>
+<a name="index-Adding-files"></a>
+
+<p>To add a new file to a directory, follow these steps.
+</p>
+<ul>
+<li> You must have a working copy of the directory.
+See <a href="Getting-the-source.html#Getting-the-source">Getting the
source</a>.
+
+</li><li> Create the new file inside your working copy of the directory.
+
+</li><li> Use ‘<samp>cvs add <var>filename</var></samp>’ to tell
<small>CVS</small> that you
+want to version control the file. If the file contains
+binary data, specify ‘<samp>-kb</samp>’ (see <a
href="Binary-files.html#Binary-files">Binary files</a>).
+
+</li><li> Use ‘<samp>cvs commit <var>filename</var></samp>’ to
actually check
+in the file into the repository. Other developers
+cannot see the file until you perform this step.
+</li></ul>
+
+<p>You can also use the <code>add</code> command to add a new
+directory.
+</p>
+<p>Unlike most other commands, the <code>add</code> command is
+not recursive. You have to explicitly name files and
+directories that you wish to add to the repository.
+However, each directory will need to be added
+separately before you will be able to add new files
+to those directories.
+</p>
+<div class="example">
+<pre class="example">$ mkdir -p foo/bar
+$ cp ~/myfile foo/bar/myfile
+$ cvs add foo foo/bar
+$ cvs add foo/bar/myfile
+</pre></div>
+
+<a name="index-add-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-add"></a>Command: <strong>cvs add</strong>
<em>[<code>-k</code> kflag] [<code>-m</code> message] files …</em></dt>
+<dd>
+<p>Schedule <var>files</var> to be added to the repository.
+The files or directories specified with <code>add</code> must
+already exist in the current directory. To add a whole
+new directory hierarchy to the source repository (for
+example, files received from a third-party vendor), use
+the <code>import</code> command instead. See <a
href="import.html#import">import</a>.
+</p>
+<p>The added files are not placed in the source repository
+until you use <code>commit</code> to make the change
+permanent. Doing an <code>add</code> on a file that was
+removed with the <code>remove</code> command will undo the
+effect of the <code>remove</code>, unless a <code>commit</code>
+command intervened. See <a href="Removing-files.html#Removing-files">Removing
files</a>, for an
+example.
+</p>
+<p>The ‘<samp>-k</samp>’ option specifies the default way that
+this file will be checked out; for more information see
+<a href="Substitution-modes.html#Substitution-modes">Substitution modes</a>.
+</p>
+<p>The ‘<samp>-m</samp>’ option specifies a description for the
+file. This description appears in the history log (if
+it is enabled, see <a href="history-file.html#history-file">history file</a>).
It will also be
+saved in the version history inside the repository when
+the file is committed. The <code>log</code> command displays
+this description. The description can be changed using
+‘<samp>admin -t</samp>’. See <a
href="admin.html#admin">admin</a>. If you omit the
+‘<samp>-m <var>description</var></samp>’ flag, an empty string will
+be used. You will not be prompted for a description.
+</p></dd></dl>
+
+<p>For example, the following commands add the file
+<samp>backend.c</samp> to the repository:
+</p>
+<div class="example">
+<pre class="example">$ cvs add backend.c
+$ cvs commit -m "Early version. Not yet compilable." backend.c
+</pre></div>
+
+<p>When you add a file it is added only on the branch
+which you are working on (see <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>). You can
+later merge the additions to another branch if you want
+(see <a
href="Merging-adds-and-removals.html#Merging-adds-and-removals">Merging adds
and removals</a>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Removing-files.html#Removing-files" accesskey="n"
rel="next">Removing files</a>, Up: <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Administrative-files.html
===================================================================
RCS file: html_node/Administrative-files.html
diff -N html_node/Administrative-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Administrative-files.html 28 Dec 2015 15:57:46 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Administrative
files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Administrative files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Administrative files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="modules.html#modules" rel="next" title="modules">
+<link href="Invoking-CVS.html#Invoking-CVS" rel="prev" title="Invoking CVS">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Administrative-files"></a>
+<div class="header">
+<p>
+Next: <a href="Environment-variables.html#Environment-variables" accesskey="n"
rel="next">Environment variables</a>, Previous: <a
href="Invoking-CVS.html#Invoking-CVS" accesskey="p" rel="prev">Invoking
CVS</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Reference-manual-for-Administrative-files"></a>
+<h2 class="appendix">Appendix C Reference manual for Administrative files</h2>
+<a name="index-Administrative-files-_0028reference_0029"></a>
+<a name="index-Files_002c-reference-manual"></a>
+<a name="index-Reference-manual-_0028files_0029"></a>
+<a name="index-CVSROOT-_0028file_0029"></a>
+
+<p>Inside the repository, in the directory
+<samp>$CVSROOT/CVSROOT</samp>, there are a number of
+supportive files for <small>CVS</small>. You can use <small>CVS</small> in a
limited
+fashion without any of them, but if they are set up
+properly they can help make life easier. For a
+discussion of how to edit them, see <a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a>.
+</p>
+<p>The most important of these files is the <samp>modules</samp>
+file, which defines the modules inside the repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="modules.html#modules"
accesskey="1">modules</a>:</td><td> </td><td align="left"
valign="top">Defining modules
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Wrappers.html#Wrappers"
accesskey="2">Wrappers</a>:</td><td> </td><td align="left"
valign="top">Specify binary-ness based on file name
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Trigger-Scripts.html#Trigger-Scripts" accesskey="3">Trigger
Scripts</a>:</td><td> </td><td align="left" valign="top">Some notes
on the commit support files and
+ taginfo, referenced below.
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="commit-files.html#commit-files" accesskey="4">commit
files</a>:</td><td> </td><td align="left" valign="top">The commit
support files (commitinfo,
+ verifymsg, editinfo, loginfo)
+</td></tr>
+<tr><td align="left" valign="top">• <a href="taginfo.html#taginfo"
accesskey="5">taginfo</a>:</td><td> </td><td align="left"
valign="top">Verifying/Logging tags
+</td></tr>
+<tr><td align="left" valign="top">• <a href="rcsinfo.html#rcsinfo"
accesskey="6">rcsinfo</a>:</td><td> </td><td align="left"
valign="top">Templates for the log messages
+</td></tr>
+<tr><td align="left" valign="top">• <a href="cvsignore.html#cvsignore"
accesskey="7">cvsignore</a>:</td><td> </td><td align="left"
valign="top">Ignoring files via cvsignore
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="checkoutlist.html#checkoutlist"
accesskey="8">checkoutlist</a>:</td><td> </td><td align="left"
valign="top">Adding your own administrative files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="history-file.html#history-file" accesskey="9">history
file</a>:</td><td> </td><td align="left" valign="top">History
information
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Variables.html#Variables">Variables</a>:</td><td> </td><td
align="left" valign="top">Various variables are expanded
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="config.html#config">config</a>:</td><td> </td><td align="left"
valign="top">Miscellaneous CVS configuration
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Alias-modules.html
===================================================================
RCS file: html_node/Alias-modules.html
diff -N html_node/Alias-modules.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Alias-modules.html 28 Dec 2015 15:57:46 -0000 1.1
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Alias modules</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Alias modules">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Alias modules">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Regular-modules.html#Regular-modules" rel="next" title="Regular
modules">
+<link href="modules.html#modules" rel="prev" title="modules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Alias-modules"></a>
+<div class="header">
+<p>
+Next: <a href="Regular-modules.html#Regular-modules" accesskey="n"
rel="next">Regular modules</a>, Up: <a href="modules.html#modules"
accesskey="u" rel="up">modules</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Alias-modules-1"></a>
+<h4 class="appendixsubsec">C.1.1 Alias modules</h4>
+<a name="index-Alias-modules"></a>
+<a name="index-_002da_002c-in-modules-file"></a>
+
+<p>Alias modules are the simplest kind of module:
+</p>
+<dl compact="compact">
+<dt><code><var>mname</var> -a <var>aliases</var>…</code></dt>
+<dd><p>This represents the simplest way of defining a module
+<var>mname</var>. The ‘<samp>-a</samp>’ flags the definition as a
+simple alias: <small>CVS</small> will treat any use of <var>mname</var> (as
+a command argument) as if the list of names
+<var>aliases</var> had been specified instead.
+<var>aliases</var> may contain either other module names or
+paths. When you use paths in aliases, <code>checkout</code>
+creates all intermediate directories in the working
+directory, just as if the path had been specified
+explicitly in the <small>CVS</small> arguments.
+</p></dd>
+</dl>
+
+<p>For example, if the modules file contains:
+</p>
+<div class="example">
+<pre class="example">amodule -a first-dir
+</pre></div>
+
+<p>then the following two commands are equivalent:
+</p>
+<div class="example">
+<pre class="example">$ cvs co amodule
+$ cvs co first-dir
+</pre></div>
+
+<p>and they each would provide output such as:
+</p>
+<div class="example">
+<pre class="example">cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Ampersand-modules.html
===================================================================
RCS file: html_node/Ampersand-modules.html
diff -N html_node/Ampersand-modules.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Ampersand-modules.html 28 Dec 2015 15:57:47 -0000 1.1
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Ampersand modules</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Ampersand modules">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Ampersand modules">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Excluding-directories.html#Excluding-directories" rel="next"
title="Excluding directories">
+<link href="Regular-modules.html#Regular-modules" rel="prev" title="Regular
modules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Ampersand-modules"></a>
+<div class="header">
+<p>
+Next: <a href="Excluding-directories.html#Excluding-directories" accesskey="n"
rel="next">Excluding directories</a>, Previous: <a
href="Regular-modules.html#Regular-modules" accesskey="p" rel="prev">Regular
modules</a>, Up: <a href="modules.html#modules" accesskey="u"
rel="up">modules</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Ampersand-modules-1"></a>
+<h4 class="appendixsubsec">C.1.3 Ampersand modules</h4>
+<a name="index-Ampersand-modules"></a>
+<a name="index-_0026_002c-in-modules-file"></a>
+
+<p>A module definition can refer to other modules by
+including ‘<samp>&<var>module</var></samp>’ in its definition.
+</p><div class="example">
+<pre class="example"><var>mname</var> [ options ]
<var>&module</var>…
+</pre></div>
+
+<p>Then getting the module creates a subdirectory for each such
+module, in the directory containing the module. For
+example, if modules contains
+</p>
+<div class="example">
+<pre class="example">ampermod &first-dir
+</pre></div>
+
+<p>then a checkout will create an <code>ampermod</code> directory
+which contains a directory called <code>first-dir</code>,
+which in turns contains all the directories and files
+which live there. For example, the command
+</p>
+<div class="example">
+<pre class="example">$ cvs co ampermod
+</pre></div>
+
+<p>will create the following files:
+</p>
+<div class="example">
+<pre class="example">ampermod/first-dir/file1
+ampermod/first-dir/file2
+ampermod/first-dir/sdir/sfile
+</pre></div>
+
+<p>There is one quirk/bug: the messages that <small>CVS</small>
+prints omit the <samp>ampermod</samp>, and thus do not
+correctly display the location to which it is checking
+out the files:
+</p>
+<div class="example">
+<pre class="example">$ cvs co ampermod
+cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+$
+</pre></div>
+
+<p>Do not rely on this buggy behavior; it may get fixed in
+a future release of <small>CVS</small>.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/Assigning-revisions.html
===================================================================
RCS file: html_node/Assigning-revisions.html
diff -N html_node/Assigning-revisions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Assigning-revisions.html 28 Dec 2015 15:57:47 -0000 1.1
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Assigning
revisions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Assigning revisions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Assigning revisions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Tags.html#Tags" rel="next" title="Tags">
+<link href="Versions-revisions-releases.html#Versions-revisions-releases"
rel="prev" title="Versions revisions releases">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Assigning-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="Tags.html#Tags" accesskey="n" rel="next">Tags</a>, Previous: <a
href="Versions-revisions-releases.html#Versions-revisions-releases"
accesskey="p" rel="prev">Versions revisions releases</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Assigning-revisions-1"></a>
+<h3 class="section">4.3 Assigning revisions</h3>
+
+<p>By default, <small>CVS</small> will assign numeric revisions by
+leaving the first number the same and incrementing the
+second number. For example, <code>1.1</code>, <code>1.2</code>,
+<code>1.3</code>, etc.
+</p>
+<p>When adding a new file, the second number will always
+be one and the first number will equal the highest
+first number of any file in that directory. For
+example, the current directory contains files whose
+highest numbered revisions are <code>1.7</code>, <code>3.1</code>,
+and <code>4.12</code>, then an added file will be given the
+numeric revision <code>4.1</code>.
+(When using client/server <small>CVS</small>,
+only files that are actually sent to the server are considered.)
+</p>
+<p>Normally there is no reason to care
+about the revision numbers—it is easier to treat them
+as internal numbers that <small>CVS</small> maintains, and tags
+provide a better way to distinguish between things like
+release 1 versus release 2 of your product
+(see <a href="Tags.html#Tags">Tags</a>). However, if you want to set the
+numeric revisions, the ‘<samp>-r</samp>’ option to <code>cvs
+commit</code> can do that. The ‘<samp>-r</samp>’ option implies
the
+‘<samp>-f</samp>’ option, in the sense that it causes the
+files to be committed even if they are not modified.
+</p>
+<p>For example, to bring all your files up to
+revision 3.0 (including those that haven’t changed),
+you might invoke:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -r 3.0
+</pre></div>
+
+<p>Note that the number you specify with ‘<samp>-r</samp>’ must be
+larger than any existing revision number. That is, if
+revision 3.0 exists, you cannot ‘<samp>cvs commit
+-r 1.3</samp>’. If you want to maintain several releases in
+parallel, you need to use a branch (see <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tags.html#Tags" accesskey="n" rel="next">Tags</a>, Previous: <a
href="Versions-revisions-releases.html#Versions-revisions-releases"
accesskey="p" rel="prev">Versions revisions releases</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Attic.html
===================================================================
RCS file: html_node/Attic.html
diff -N html_node/Attic.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Attic.html 28 Dec 2015 15:57:47 -0000 1.1
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Attic</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Attic">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Attic">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="CVS-in-repository.html#CVS-in-repository" rel="next" title="CVS in
repository">
+<link href="Windows-permissions.html#Windows-permissions" rel="prev"
title="Windows permissions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Attic"></a>
+<div class="header">
+<p>
+Next: <a href="CVS-in-repository.html#CVS-in-repository" accesskey="n"
rel="next">CVS in repository</a>, Previous: <a
href="Windows-permissions.html#Windows-permissions" accesskey="p"
rel="prev">Windows permissions</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-attic"></a>
+<h4 class="subsection">2.2.4 The attic</h4>
+<a name="index-Attic"></a>
+
+<p>You will notice that sometimes <small>CVS</small> stores an
+<small>RCS</small> file in the <code>Attic</code>. For example, if the
+<small>CVSROOT</small> is <samp>/usr/local/cvsroot</samp> and we are
+talking about the file <samp>backend.c</samp> in the
+directory <samp>yoyodyne/tc</samp>, then the file normally
+would be in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc/backend.c,v
+</pre></div>
+
+<p>but if it goes in the attic, it would be in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v
+</pre></div>
+
+<a name="index-Dead-state"></a>
+<p>instead. It should not matter from a user point of
+view whether a file is in the attic; <small>CVS</small> keeps
+track of this and looks in the attic when it needs to.
+But in case you want to know, the rule is that the RCS
+file is stored in the attic if and only if the head
+revision on the trunk has state <code>dead</code>. A
+<code>dead</code> state means that file has been removed, or
+never added, for that revision. For example, if you
+add a file on a branch, it will have a trunk revision
+in <code>dead</code> state, and a branch revision in a
+non-<code>dead</code> state.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Avoiding-substitution.html
===================================================================
RCS file: html_node/Avoiding-substitution.html
diff -N html_node/Avoiding-substitution.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Avoiding-substitution.html 28 Dec 2015 15:57:47 -0000
1.1
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Avoiding
substitution</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Avoiding substitution">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Avoiding substitution">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="up"
title="Keyword substitution">
+<link href="Substitution-modes.html#Substitution-modes" rel="next"
title="Substitution modes">
+<link href="Using-keywords.html#Using-keywords" rel="prev" title="Using
keywords">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Avoiding-substitution"></a>
+<div class="header">
+<p>
+Next: <a href="Substitution-modes.html#Substitution-modes" accesskey="n"
rel="next">Substitution modes</a>, Previous: <a
href="Using-keywords.html#Using-keywords" accesskey="p" rel="prev">Using
keywords</a>, Up: <a href="Keyword-substitution.html#Keyword-substitution"
accesskey="u" rel="up">Keyword substitution</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Avoiding-substitution-1"></a>
+<h3 class="section">12.3 Avoiding substitution</h3>
+
+<p>Keyword substitution has its disadvantages. Sometimes
+you might want the literal text string
+‘<samp>$<i></i>Author$</samp>’ to appear inside a file without
+<small>CVS</small> interpreting it as a keyword and expanding it
+into something like ‘<samp>$<i></i>Author: ceder $</samp>’.
+</p>
+<p>There is unfortunately no way to selectively turn off
+keyword substitution. You can use ‘<samp>-ko</samp>’
+(see <a href="Substitution-modes.html#Substitution-modes">Substitution
modes</a>) to turn off keyword
+substitution entirely.
+</p>
+<p>In many cases you can avoid using keywords in
+the source, even though they appear in the final
+product. For example, the source for this manual
+contains ‘<samp>address@hidden</samp>’ whenever the text
+‘<samp>$<i></i>Author$</samp>’ should appear. In
<code>nroff</code>
+and <code>troff</code> you can embed the null-character
+<code>\&</code> inside the keyword for a similar effect.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/BUGS.html
===================================================================
RCS file: html_node/BUGS.html
diff -N html_node/BUGS.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/BUGS.html 28 Dec 2015 15:57:47 -0000 1.1
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: BUGS</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: BUGS">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
BUGS">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Index.html#Index" rel="next" title="Index">
+<link href="Credits.html#Credits" rel="prev" title="Credits">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="BUGS"></a>
+<div class="header">
+<p>
+Next: <a href="Index.html#Index" accesskey="n" rel="next">Index</a>, Previous:
<a href="Credits.html#Credits" accesskey="p" rel="prev">Credits</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dealing-with-bugs-in-CVS-or-this-manual"></a>
+<h2 class="appendix">Appendix H Dealing with bugs in CVS or this manual</h2>
+
+<a name="index-Bugs-in-this-manual-or-CVS"></a>
+<p>Neither <small>CVS</small> nor this manual is perfect, and they
+probably never will be. If you are having trouble
+using <small>CVS</small>, or think you have found a bug, there
+are a number of things you can do about it. Note that
+if the manual is unclear, that can be considered a bug
+in the manual, so these problems are often worth doing
+something about as well as problems with <small>CVS</small> itself.
+</p>
+<a name="index-Reporting-bugs"></a>
+<a name="index-Bugs_002c-reporting"></a>
+<a name="index-Errors_002c-reporting"></a>
+<ul>
+<li> If you want someone to help you and fix bugs that you
+report, there are companies which will do that for a
+fee. One such company is:
+
+<a name="index-Ximbiot"></a>
+<a name="index-Support_002c-getting-CVS-support"></a>
+<div class="example">
+<pre class="example">Ximbiot LLC
+Suite 230
+200 Diversion St.
+Rochester Hills, MI 48307-6636
+USA
+Email: address@hidden
+Phone: (248) 835-1260
+Fax: (248) 835-1263
+<a href="http://ximbiot.com/">http://ximbiot.com/</a>
+
+</pre></div>
+
+</li><li> If you got <small>CVS</small> through a distributor, such as an
+operating system vendor or a vendor of freeware
+<small>CD-ROM</small>s, you may wish to see whether the
+distributor provides support. Often, they will provide
+no support or minimal support, but this may vary from
+distributor to distributor.
+
+</li><li> If you have the skills and time to do so, you may wish
+to fix the bug yourself. If you wish to submit your
+fix for inclusion in future releases of <small>CVS</small>, see
+the file <small>HACKING</small> in the <small>CVS</small> source
+distribution. It contains much more information on the
+process of submitting fixes.
+
+</li><li> There may be resources on the net which can help. A
+good place to start is:
+
+<div class="example">
+<pre class="example"><a
href="http://cvs.nongnu.org/">http://cvs.nongnu.org/</a>
+</pre></div>
+
+<p>If you are so inspired, increasing the information
+available on the net is likely to be appreciated. For
+example, before the standard <small>CVS</small> distribution
+worked on Windows 95, there was a web page with some
+explanation and patches for running <small>CVS</small> on Windows
+95, and various people helped out by mentioning this
+page on mailing lists or newsgroups when the subject
+came up.
+</p>
+</li><li> It is also possible to report bugs to <a
href="mailto:address@hidden">address@hidden</a>.
+Note that someone may or may not want to do anything
+with your bug report—if you need a solution consider
+one of the options mentioned above. People probably do
+want to hear about bugs which are particularly severe
+in consequences and/or easy to fix, however. You can
+also increase your odds by being as clear as possible
+about the exact nature of the bug and any other
+relevant information. The way to report bugs is to
+send email to <a href="mailto:address@hidden">address@hidden</a>. Note
+that submissions to <a href="mailto:address@hidden">address@hidden</a> may be
distributed
+under the terms of the <small>GNU</small> Public License, so if
+you don’t like this, don’t submit them. There is
+usually no justification for sending mail directly to
+one of the <small>CVS</small> maintainers rather than to
+<a href="mailto:address@hidden">address@hidden</a>; those maintainers who want
to hear
+about such bug reports read <a
href="mailto:address@hidden">address@hidden</a>. Also note
+that sending a bug report to other mailing lists or
+newsgroups is <em>not</em> a substitute for sending it to
+<a href="mailto:address@hidden">address@hidden</a>. It is fine to discuss
<small>CVS</small> bugs on
+whatever forum you prefer, but there are not
+necessarily any maintainers reading bug reports sent
+anywhere except <a href="mailto:address@hidden">address@hidden</a>.
+</li></ul>
+
+<a name="index-Known-bugs-in-this-manual-or-CVS"></a>
+<p>People often ask if there is a list of known bugs or
+whether a particular bug is a known one. The file
+<small>BUGS</small> in the <small>CVS</small> source distribution is one
+list of known bugs, but it doesn’t necessarily try to
+be comprehensive. Perhaps there will never be a
+comprehensive, detailed list of known bugs.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Index.html#Index" accesskey="n" rel="next">Index</a>, Previous:
<a href="Credits.html#Credits" accesskey="p" rel="prev">Credits</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Backing-up.html
===================================================================
RCS file: html_node/Backing-up.html
diff -N html_node/Backing-up.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Backing-up.html 28 Dec 2015 15:57:48 -0000 1.1
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Backing up</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Backing up">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Backing up">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Moving-a-repository.html#Moving-a-repository" rel="next"
title="Moving a repository">
+<link href="Creating-a-repository.html#Creating-a-repository" rel="prev"
title="Creating a repository">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Backing-up"></a>
+<div class="header">
+<p>
+Next: <a href="Moving-a-repository.html#Moving-a-repository" accesskey="n"
rel="next">Moving a repository</a>, Previous: <a
href="Creating-a-repository.html#Creating-a-repository" accesskey="p"
rel="prev">Creating a repository</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Backing-up-a-repository"></a>
+<h3 class="section">2.7 Backing up a repository</h3>
+<a name="index-Repository_002c-backing-up"></a>
+<a name="index-Backing-up_002c-repository"></a>
+
+<p>There is nothing particularly magical about the files
+in the repository; for the most part it is possible to
+back them up just like any other files. However, there
+are a few issues to consider.
+</p>
+<a name="index-Locks_002c-cvs_002c-and-backups"></a>
+<a name="index-_0023cvs_002erfl_002c-and-backups"></a>
+<p>The first is that to be paranoid, one should either not
+use <small>CVS</small> during the backup, or have the backup
+program lock <small>CVS</small> while doing the backup. To not
+use <small>CVS</small>, you might forbid logins to machines which
+can access the repository, turn off your <small>CVS</small>
+server, or similar mechanisms. The details would
+depend on your operating system and how you have
+<small>CVS</small> set up. To lock <small>CVS</small>, you would create
+<samp>#cvs.rfl</samp> locks in each repository directory.
+See <a href="Concurrency.html#Concurrency">Concurrency</a>, for more on
<small>CVS</small> locks.
+Having said all this, if you just back up without any
+of these precautions, the results are unlikely to be
+particularly dire. Restoring from backup, the
+repository might be in an inconsistent state, but this
+would not be particularly hard to fix manually.
+</p>
+<p>When you restore a repository from backup, assuming
+that changes in the repository were made after the time
+of the backup, working directories which were not
+affected by the failure may refer to revisions which no
+longer exist in the repository. Trying to run <small>CVS</small>
+in such directories will typically produce an error
+message. One way to get those changes back into the
+repository is as follows:
+</p>
+<ul>
+<li> Get a new working directory.
+
+</li><li> Copy the files from the working directory from before
+the failure over to the new working directory (do not
+copy the contents of the <samp>CVS</samp> directories, of
+course).
+
+</li><li> Working in the new working directory, use commands such
+as <code>cvs update</code> and <code>cvs diff</code> to figure out
+what has changed, and then when you are ready, commit
+the changes into the repository.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Moving-a-repository.html#Moving-a-repository" accesskey="n"
rel="next">Moving a repository</a>, Previous: <a
href="Creating-a-repository.html#Creating-a-repository" accesskey="p"
rel="prev">Creating a repository</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Binary-files-in-imports.html
===================================================================
RCS file: html_node/Binary-files-in-imports.html
diff -N html_node/Binary-files-in-imports.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Binary-files-in-imports.html 28 Dec 2015 15:57:48 -0000
1.1
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Binary files in
imports</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Binary files in imports">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Binary files in imports">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Keywords-in-imports.html#Keywords-in-imports" rel="next"
title="Keywords in imports">
+<link href="Reverting-local-changes.html#Reverting-local-changes" rel="prev"
title="Reverting local changes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Binary-files-in-imports"></a>
+<div class="header">
+<p>
+Next: <a href="Keywords-in-imports.html#Keywords-in-imports" accesskey="n"
rel="next">Keywords in imports</a>, Previous: <a
href="Reverting-local-changes.html#Reverting-local-changes" accesskey="p"
rel="prev">Reverting local changes</a>, Up: <a
href="Tracking-sources.html#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-to-handle-binary-files-with-cvs-import"></a>
+<h3 class="section">13.4 How to handle binary files with cvs import</h3>
+
+<p>Use the ‘<samp>-k</samp>’ wrapper option to tell import which
+files are binary. See <a href="Wrappers.html#Wrappers">Wrappers</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Binary-files.html
===================================================================
RCS file: html_node/Binary-files.html
diff -N html_node/Binary-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Binary-files.html 28 Dec 2015 15:57:48 -0000 1.1
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Binary files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Binary files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Binary files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Binary-why.html#Binary-why" rel="next" title="Binary why">
+<link href="user_002ddefined-logging.html#user_002ddefined-logging" rel="prev"
title="user-defined logging">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Binary-files"></a>
+<div class="header">
+<p>
+Next: <a href="Multiple-developers.html#Multiple-developers" accesskey="n"
rel="next">Multiple developers</a>, Previous: <a
href="History-browsing.html#History-browsing" accesskey="p" rel="prev">History
browsing</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Handling-binary-files"></a>
+<h2 class="chapter">9 Handling binary files</h2>
+<a name="index-Binary-files"></a>
+
+<p>The most common use for <small>CVS</small> is to store text
+files. With text files, <small>CVS</small> can merge revisions,
+display the differences between revisions in a
+human-visible fashion, and other such operations.
+However, if you are willing to give up a few of these
+abilities, <small>CVS</small> can store binary files. For
+example, one might store a web site in <small>CVS</small>
+including both text files and binary images.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="Binary-why.html#Binary-why"
accesskey="1">Binary why</a>:</td><td> </td><td align="left"
valign="top">More details on issues with binary files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Binary-howto.html#Binary-howto" accesskey="2">Binary
howto</a>:</td><td> </td><td align="left" valign="top">How to store
them
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Binary-howto.html
===================================================================
RCS file: html_node/Binary-howto.html
diff -N html_node/Binary-howto.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Binary-howto.html 28 Dec 2015 15:57:48 -0000 1.1
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Binary howto</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Binary howto">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Binary howto">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Binary-files.html#Binary-files" rel="up" title="Binary files">
+<link href="Multiple-developers.html#Multiple-developers" rel="next"
title="Multiple developers">
+<link href="Binary-why.html#Binary-why" rel="prev" title="Binary why">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Binary-howto"></a>
+<div class="header">
+<p>
+Previous: <a href="Binary-why.html#Binary-why" accesskey="p" rel="prev">Binary
why</a>, Up: <a href="Binary-files.html#Binary-files" accesskey="u"
rel="up">Binary files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-to-store-binary-files"></a>
+<h3 class="section">9.2 How to store binary files</h3>
+
+<p>There are two issues with using <small>CVS</small> to store
+binary files. The first is that <small>CVS</small> by default
+converts line endings between the canonical form in
+which they are stored in the repository (linefeed
+only), and the form appropriate to the operating system
+in use on the client (for example, carriage return
+followed by line feed for Windows NT).
+</p>
+<p>The second is that a binary file might happen to
+contain data which looks like a keyword (see <a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>), so keyword expansion must be turned
+off.
+</p>
+
+<p>The ‘<samp>-kb</samp>’ option available with some
<small>CVS</small>
+commands insures that neither line ending conversion
+nor keyword expansion will be done.
+</p>
+<p>Here is an example of how you can create a new file
+using the ‘<samp>-kb</samp>’ flag:
+</p>
+<div class="example">
+<pre class="example">$ echo '$<i></i>Id$' > kotest
+$ cvs add -kb -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+</pre></div>
+
+<p>If a file accidentally gets added without ‘<samp>-kb</samp>’,
+one can use the <code>cvs admin</code> command to recover.
+For example:
+</p>
+<div class="example">
+<pre class="example">$ echo '$<i></i>Id$' > kotest
+$ cvs add -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+$ cvs admin -kb kotest
+$ cvs update -A kotest
+# <span class="roman">For non-unix systems:</span>
+# <span class="roman">Copy in a good copy of the file from outside CVS</span>
+$ cvs commit -m "make it binary" kotest
+</pre></div>
+
+<p>When you check in the file <samp>kotest</samp> the file is
+not preserved as a binary file, because you did not
+check it in as a binary file. The <code>cvs
+admin -kb</code> command sets the default keyword
+substitution method for this file, but it does not
+alter the working copy of the file that you have. If you need to
+cope with line endings (that is, you are using
+<small>CVS</small> on a non-unix system), then you need to
+check in a new copy of the file, as shown by the
+<code>cvs commit</code> command above.
+On unix, the <code>cvs update -A</code> command suffices.
+(Note that you can use <code>cvs log</code> to determine the default keyword
+substitution method for a file and <code>cvs status</code> to determine
+the keyword substitution method for a working copy.)
+</p>
+<p>However, in using <code>cvs admin -k</code> to change the
+keyword expansion, be aware that the keyword expansion
+mode is not version controlled. This means that, for
+example, that if you have a text file in old releases,
+and a binary file with the same name in new releases,
+<small>CVS</small> provides no way to check out the file in text
+or binary mode depending on what version you are
+checking out. There is no good workaround for this
+problem.
+</p>
+<p>You can also set a default for whether <code>cvs add</code>
+and <code>cvs import</code> treat a file as binary based on
+its name; for example you could say that files who
+names end in ‘<samp>.exe</samp>’ are binary. See <a
href="Wrappers.html#Wrappers">Wrappers</a>.
+There is currently no way to have <small>CVS</small> detect
+whether a file is binary based on its contents. The
+main difficulty with designing such a feature is that
+it is not clear how to distinguish between binary and
+non-binary files, and the rules to apply would vary
+considerably with the operating system.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Binary-why.html#Binary-why" accesskey="p" rel="prev">Binary
why</a>, Up: <a href="Binary-files.html#Binary-files" accesskey="u"
rel="up">Binary files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Binary-why.html
===================================================================
RCS file: html_node/Binary-why.html
diff -N html_node/Binary-why.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Binary-why.html 28 Dec 2015 15:57:49 -0000 1.1
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Binary why</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Binary why">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Binary why">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Binary-files.html#Binary-files" rel="up" title="Binary files">
+<link href="Binary-howto.html#Binary-howto" rel="next" title="Binary howto">
+<link href="Binary-files.html#Binary-files" rel="prev" title="Binary files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Binary-why"></a>
+<div class="header">
+<p>
+Next: <a href="Binary-howto.html#Binary-howto" accesskey="n" rel="next">Binary
howto</a>, Up: <a href="Binary-files.html#Binary-files" accesskey="u"
rel="up">Binary files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-issues-with-binary-files"></a>
+<h3 class="section">9.1 The issues with binary files</h3>
+
+<p>While the need to manage binary files may seem obvious
+if the files that you customarily work with are binary,
+putting them into version control does present some
+additional issues.
+</p>
+<p>One basic function of version control is to show the
+differences between two revisions. For example, if
+someone else checked in a new version of a file, you
+may wish to look at what they changed and determine
+whether their changes are good. For text files,
+<small>CVS</small> provides this functionality via the <code>cvs
+diff</code> command. For binary files, it may be possible to
+extract the two revisions and then compare them with a
+tool external to <small>CVS</small> (for example, word processing
+software often has such a feature). If there is no
+such tool, one must track changes via other mechanisms,
+such as urging people to write good log messages, and
+hoping that the changes they actually made were the
+changes that they intended to make.
+</p>
+<p>Another ability of a version control system is the
+ability to merge two revisions. For <small>CVS</small> this
+happens in two contexts. The first is when users make
+changes in separate working directories
+(see <a href="Multiple-developers.html#Multiple-developers">Multiple
developers</a>). The second is when one
+merges explicitly with the ‘<samp>update -j</samp>’ command
+(see <a href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>).
+</p>
+<p>In the case of text
+files, <small>CVS</small> can merge changes made independently,
+and signal a conflict if the changes conflict. With
+binary files, the best that <small>CVS</small> can do is present
+the two different copies of the file, and leave it to
+the user to resolve the conflict. The user may choose
+one copy or the other, or may run an external merge
+tool which knows about that particular file format, if
+one exists.
+Note that having the user merge relies primarily on the
+user to not accidentally omit some changes, and thus is
+potentially error prone.
+</p>
+<p>If this process is thought to be undesirable, the best
+choice may be to avoid merging. To avoid the merges
+that result from separate working directories, see the
+discussion of reserved checkouts (file locking) in
+<a href="Multiple-developers.html#Multiple-developers">Multiple
developers</a>. To avoid the merges
+resulting from branches, restrict use of branches.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Binary-howto.html#Binary-howto" accesskey="n" rel="next">Binary
howto</a>, Up: <a href="Binary-files.html#Binary-files" accesskey="u"
rel="up">Binary files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Branches-and-revisions.html
===================================================================
RCS file: html_node/Branches-and-revisions.html
diff -N html_node/Branches-and-revisions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Branches-and-revisions.html 28 Dec 2015 15:57:49 -0000
1.1
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Branches and
revisions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Branches and revisions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Branches and revisions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Magic-branch-numbers.html#Magic-branch-numbers" rel="next"
title="Magic branch numbers">
+<link href="Accessing-branches.html#Accessing-branches" rel="prev"
title="Accessing branches">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Branches-and-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="Magic-branch-numbers.html#Magic-branch-numbers" accesskey="n"
rel="next">Magic branch numbers</a>, Previous: <a
href="Accessing-branches.html#Accessing-branches" accesskey="p"
rel="prev">Accessing branches</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Branches-and-revisions-1"></a>
+<h3 class="section">5.4 Branches and revisions</h3>
+<a name="index-Branch-number-1"></a>
+<a name="index-Number_002c-branch-1"></a>
+<a name="index-Revision-numbers-_0028branches_0029"></a>
+
+<p>Ordinarily, a file’s revision history is a linear
+series of increments (see <a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a>):
+</p>
+<div class="example">
+<pre class="example"> +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+</pre></div>
+
+<p>However, <small>CVS</small> is not limited to linear development. The
+<em>revision tree</em> can be split into <em>branches</em>,
+where each branch is a self-maintained line of
+development. Changes made on one branch can easily be
+moved back to the main trunk.
+</p>
+<p>Each branch has a <em>branch number</em>, consisting of an
+odd number of period-separated decimal integers. The
+branch number is created by appending an integer to the
+revision number where the corresponding branch forked
+off. Having branch numbers allows more than one branch
+to be forked off from a certain revision.
+</p>
+<p>All revisions on a branch have revision numbers formed
+by appending an ordinal number to the branch number.
+The following figure illustrates branching with an
+example.
+</p>
+<div class="example">
+<pre class="example">
+-------------+
+ Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
+ / +-------------+
+ /
+ /
+ +---------+ +---------+ +---------+
+Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ / +---------+ +---------+ +---------+
+ /
+ /
++-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+ +---------+
+Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+ +---------+ +---------+ +---------+
+
+</pre></div>
+
+
+
+<p>The exact details of how the branch number is
+constructed is not something you normally need to be
+concerned about, but here is how it works: When
+<small>CVS</small> creates a branch number it picks the first
+unused even integer, starting with 2. So when you want
+to create a branch from revision 6.4 it will be
+numbered 6.4.2. All branch numbers ending in a zero
+(such as 6.4.0) are used internally by <small>CVS</small>
+(see <a href="Magic-branch-numbers.html#Magic-branch-numbers">Magic branch
numbers</a>). The branch 1.1.1 has a
+special meaning. See <a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Magic-branch-numbers.html#Magic-branch-numbers" accesskey="n"
rel="next">Magic branch numbers</a>, Previous: <a
href="Accessing-branches.html#Accessing-branches" accesskey="p"
rel="prev">Accessing branches</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Branches-motivation.html
===================================================================
RCS file: html_node/Branches-motivation.html
diff -N html_node/Branches-motivation.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Branches-motivation.html 28 Dec 2015 15:57:49 -0000 1.1
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Branches
motivation</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Branches motivation">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Branches motivation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Creating-a-branch.html#Creating-a-branch" rel="next"
title="Creating a branch">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="prev"
title="Branching and merging">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Branches-motivation"></a>
+<div class="header">
+<p>
+Next: <a href="Creating-a-branch.html#Creating-a-branch" accesskey="n"
rel="next">Creating a branch</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="What-branches-are-good-for"></a>
+<h3 class="section">5.1 What branches are good for</h3>
+<a name="index-Branches-motivation"></a>
+<a name="index-What-branches-are-good-for"></a>
+<a name="index-Motivation-for-branches"></a>
+
+<p>Suppose that release 1.0 of tc has been made. You are continuing to
+develop tc, planning to create release 1.1 in a couple of months. After a
+while your customers start to complain about a fatal bug. You check
+out release 1.0 (see <a href="Tags.html#Tags">Tags</a>) and find the bug
+(which turns out to have a trivial fix). However, the current revision
+of the sources are in a state of flux and are not expected to be stable
+for at least another month. There is no way to make a
+bug fix release based on the newest sources.
+</p>
+<p>The thing to do in a situation like this is to create a <em>branch</em> on
+the revision trees for all the files that make up
+release 1.0 of tc. You can then make
+modifications to the branch without disturbing the main trunk. When the
+modifications are finished you can elect to either incorporate them on
+the main trunk, or leave them on the branch.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Branching-and-merging.html
===================================================================
RCS file: html_node/Branching-and-merging.html
diff -N html_node/Branching-and-merging.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Branching-and-merging.html 28 Dec 2015 15:57:49 -0000
1.1
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Branching and
merging</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Branching and merging">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Branching and merging">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Branches-motivation.html#Branches-motivation" rel="next"
title="Branches motivation">
+<link href="Sticky-tags.html#Sticky-tags" rel="prev" title="Sticky tags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Branching-and-merging"></a>
+<div class="header">
+<p>
+Next: <a href="Recursive-behavior.html#Recursive-behavior" accesskey="n"
rel="next">Recursive behavior</a>, Previous: <a href="Revisions.html#Revisions"
accesskey="p" rel="prev">Revisions</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Branching-and-merging-1"></a>
+<h2 class="chapter">5 Branching and merging</h2>
+<a name="index-Branching"></a>
+<a name="index-Merging"></a>
+<a name="index-Copying-changes"></a>
+<a name="index-Main-trunk-and-branches"></a>
+<a name="index-Revision-tree_002c-making-branches"></a>
+<a name="index-Branches_002c-copying-changes-between"></a>
+<a name="index-Changes_002c-copying-between-branches"></a>
+<a name="index-Modifications_002c-copying-between-branches"></a>
+
+<p><small>CVS</small> allows you to isolate changes onto a separate
+line of development, known as a <em>branch</em>. When you
+change files on a branch, those changes do not appear
+on the main trunk or other branches.
+</p>
+<p>Later you can move changes from one branch to another
+branch (or the main trunk) by <em>merging</em>. Merging
+involves first running <code>cvs update -j</code>, to merge
+the changes into the working directory.
+You can then commit that revision, and thus effectively
+copy the changes onto another branch.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Branches-motivation.html#Branches-motivation" accesskey="1">Branches
motivation</a>:</td><td> </td><td align="left" valign="top">What
branches are good for
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Creating-a-branch.html#Creating-a-branch" accesskey="2">Creating a
branch</a>:</td><td> </td><td align="left" valign="top">Creating a
branch
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Accessing-branches.html#Accessing-branches" accesskey="3">Accessing
branches</a>:</td><td> </td><td align="left" valign="top">Checking
out and updating branches
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Branches-and-revisions.html#Branches-and-revisions"
accesskey="4">Branches and revisions</a>:</td><td> </td><td
align="left" valign="top">Branches are reflected in revision numbers
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Magic-branch-numbers.html#Magic-branch-numbers" accesskey="5">Magic
branch numbers</a>:</td><td> </td><td align="left"
valign="top">Magic branch numbers
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Merging-a-branch.html#Merging-a-branch" accesskey="6">Merging a
branch</a>:</td><td> </td><td align="left" valign="top">Merging an
entire branch
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Merging-more-than-once.html#Merging-more-than-once" accesskey="7">Merging
more than once</a>:</td><td> </td><td align="left"
valign="top">Merging from a branch several times
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Merging-two-revisions.html#Merging-two-revisions" accesskey="8">Merging
two revisions</a>:</td><td> </td><td align="left"
valign="top">Merging differences between two revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Merging-adds-and-removals.html#Merging-adds-and-removals"
accesskey="9">Merging adds and removals</a>:</td><td> </td><td
align="left" valign="top">What if files are added or removed?
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a>:</td><td> </td><td align="left" valign="top">Avoiding
conflicts due to keyword substitution
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Builds.html
===================================================================
RCS file: html_node/Builds.html
diff -N html_node/Builds.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Builds.html 28 Dec 2015 15:57:49 -0000 1.1
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Builds</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Builds">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Builds">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Special-Files.html#Special-Files" rel="next" title="Special Files">
+<link href="Multiple-vendor-branches.html#Multiple-vendor-branches" rel="prev"
title="Multiple vendor branches">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Builds"></a>
+<div class="header">
+<p>
+Next: <a href="Special-Files.html#Special-Files" accesskey="n"
rel="next">Special Files</a>, Previous: <a
href="Tracking-sources.html#Tracking-sources" accesskey="p" rel="prev">Tracking
sources</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-your-build-system-interacts-with-CVS"></a>
+<h2 class="chapter">14 How your build system interacts with CVS</h2>
+<a name="index-Builds"></a>
+<a name="index-make"></a>
+
+<p>As mentioned in the introduction, <small>CVS</small> does not
+contain software for building your software from source
+code. This section describes how various aspects of
+your build system might interact with <small>CVS</small>.
+</p>
+<p>One common question, especially from people who are
+accustomed to <small>RCS</small>, is how to make their build get
+an up to date copy of the sources. The answer to this
+with <small>CVS</small> is two-fold. First of all, since
+<small>CVS</small> itself can recurse through directories, there
+is no need to modify your <samp>Makefile</samp> (or whatever
+configuration file your build tool uses) to make sure
+each file is up to date. Instead, just use two
+commands, first <code>cvs -q update</code> and then
+<code>make</code> or whatever the command is to invoke your
+build tool. Secondly, you do not necessarily
+<em>want</em> to get a copy of a change someone else made
+until you have finished your own work. One suggested
+approach is to first update your sources, then
+implement, build and
+test the change you were thinking of, and then commit
+your sources (updating first if necessary). By
+periodically (in between changes, using the approach
+just described) updating your entire tree, you ensure
+that your sources are sufficiently up to date.
+</p>
+<a name="index-Bill-of-materials"></a>
+<p>One common need is to record which versions of which
+source files went into a particular build. This kind
+of functionality is sometimes called <em>bill of
+materials</em> or something similar. The best way to do
+this with <small>CVS</small> is to use the <code>tag</code> command to
+record which versions went into a given build
+(see <a href="Tags.html#Tags">Tags</a>).
+</p>
+<p>Using <small>CVS</small> in the most straightforward manner
+possible, each developer will have a copy of the entire
+source tree which is used in a particular build. If
+the source tree is small, or if developers are
+geographically dispersed, this is the preferred
+solution. In fact one approach for larger projects is
+to break a project down into smaller
+separately-compiled subsystems, and arrange a way of
+releasing them internally so that each developer need
+check out only those subsystems which they are
+actively working on.
+</p>
+<p>Another approach is to set up a structure which allows
+developers to have their own copies of some files, and
+for other files to access source files from a central
+location. Many people have come up with some such a
+system using features such as the symbolic link feature
+found in many operating systems, or the <code>VPATH</code>
+feature found in many versions of <code>make</code>. One build
+tool which is designed to help with this kind of thing
+is Odin (see
+<code>ftp://ftp.cs.colorado.edu/pub/distribs/odin</code>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Special-Files.html#Special-Files" accesskey="n"
rel="next">Special Files</a>, Previous: <a
href="Tracking-sources.html#Tracking-sources" accesskey="p" rel="prev">Tracking
sources</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/CVS-commands.html
===================================================================
RCS file: html_node/CVS-commands.html
diff -N html_node/CVS-commands.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/CVS-commands.html 28 Dec 2015 15:57:50 -0000 1.1
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: CVS commands</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: CVS commands">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
CVS commands">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Structure.html#Structure" rel="next" title="Structure">
+<link href="Special-Files.html#Special-Files" rel="prev" title="Special Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="CVS-commands"></a>
+<div class="header">
+<p>
+Next: <a href="Invoking-CVS.html#Invoking-CVS" accesskey="n"
rel="next">Invoking CVS</a>, Previous: <a
href="Special-Files.html#Special-Files" accesskey="p" rel="prev">Special
Files</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Guide-to-CVS-commands"></a>
+<h2 class="appendix">Appendix A Guide to CVS commands</h2>
+
+<p>This appendix describes the overall structure of
+<small>CVS</small> commands, and describes some commands in
+detail (others are described elsewhere; for a quick
+reference to <small>CVS</small> commands, see <a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="Structure.html#Structure"
accesskey="1">Structure</a>:</td><td> </td><td align="left"
valign="top">Overall structure of CVS commands
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Exit-status.html#Exit-status" accesskey="2">Exit
status</a>:</td><td> </td><td align="left" valign="top">Indicating
CVS’s success or failure
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc"
accesskey="3">~/.cvsrc</a>:</td><td> </td><td align="left"
valign="top">Default options with the ~/.cvsrc file
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Global-options.html#Global-options" accesskey="4">Global
options</a>:</td><td> </td><td align="left" valign="top">Options you
give to the left of cvs_command
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Common-options.html#Common-options" accesskey="5">Common
options</a>:</td><td> </td><td align="left" valign="top">Options you
give to the right of cvs_command
+</td></tr>
+<tr><td align="left" valign="top">• <a href="add.html#add"
accesskey="6">add</a>:</td><td> </td><td align="left"
valign="top">Add files and directories to the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="admin.html#admin"
accesskey="7">admin</a>:</td><td> </td><td align="left"
valign="top">Administration
+</td></tr>
+<tr><td align="left" valign="top">• <a href="annotate.html#annotate"
accesskey="8">annotate</a>:</td><td> </td><td align="left"
valign="top">What revision modified each line of a file?
+</td></tr>
+<tr><td align="left" valign="top">• <a href="checkout.html#checkout"
accesskey="9">checkout</a>:</td><td> </td><td align="left"
valign="top">Checkout sources for editing
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="commit.html#commit">commit</a>:</td><td> </td><td align="left"
valign="top">Check files into the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="diff.html#diff">diff</a>:</td><td> </td><td align="left"
valign="top">Show differences between revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="export.html#export">export</a>:</td><td> </td><td align="left"
valign="top">Export sources from CVS, similar to checkout
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="history.html#history">history</a>:</td><td> </td><td
align="left" valign="top">Show status of files and users
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="import.html#import">import</a>:</td><td> </td><td align="left"
valign="top">Import sources into CVS, using vendor branches
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="log.html#log">log</a>:</td><td> </td><td align="left"
valign="top">Show log messages for files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="rdiff.html#rdiff">rdiff</a>:</td><td> </td><td align="left"
valign="top">’patch’ format diffs between releases
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="release.html#release">release</a>:</td><td> </td><td
align="left" valign="top">Indicate that a directory is no longer in use
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="remove.html#remove">remove</a>:</td><td> </td><td align="left"
valign="top">Remove files from active development
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="update.html#update">update</a>:</td><td> </td><td align="left"
valign="top">Bring work tree in sync with repository
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Invoking-CVS.html#Invoking-CVS" accesskey="n"
rel="next">Invoking CVS</a>, Previous: <a
href="Special-Files.html#Special-Files" accesskey="p" rel="prev">Special
Files</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/CVS-in-repository.html
===================================================================
RCS file: html_node/CVS-in-repository.html
diff -N html_node/CVS-in-repository.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/CVS-in-repository.html 28 Dec 2015 15:57:50 -0000 1.1
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: CVS in repository</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: CVS in repository">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
CVS in repository">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="Locks.html#Locks" rel="next" title="Locks">
+<link href="Attic.html#Attic" rel="prev" title="Attic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="CVS-in-repository"></a>
+<div class="header">
+<p>
+Next: <a href="Locks.html#Locks" accesskey="n" rel="next">Locks</a>, Previous:
<a href="Attic.html#Attic" accesskey="p" rel="prev">Attic</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-CVS-directory-in-the-repository"></a>
+<h4 class="subsection">2.2.5 The CVS directory in the repository</h4>
+<a name="index-CVS-directory_002c-in-repository"></a>
+
+<p>The <samp>CVS</samp> directory in each repository directory
+contains information such as file attributes (in a file
+called <samp>CVS/fileattr</samp>. In the
+future additional files may be added to this directory,
+so implementations should silently ignore additional
+files.
+</p>
+<p>This behavior is implemented only by <small>CVS</small> 1.7 and
+later; for details see <a
href="Watches-Compatibility.html#Watches-Compatibility">Watches
Compatibility</a>.
+</p>
+<p>The format of the <samp>fileattr</samp> file is a series of entries
+of the following form (where ‘<samp>{</samp>’ and
‘<samp>}</samp>’
+means the text between the braces can be repeated zero
+or more times):
+</p>
+<p><var>ent-type</var> <var>filename</var> <tab> <var>attrname</var> =
<var>attrval</var>
+ {; <var>attrname</var> = <var>attrval</var>} <linefeed>
+</p>
+<p><var>ent-type</var> is ‘<samp>F</samp>’ for a file, in which
case the entry specifies the
+attributes for that file.
+</p>
+<p><var>ent-type</var> is ‘<samp>D</samp>’,
+and <var>filename</var> empty, to specify default attributes
+to be used for newly added files.
+</p>
+<p>Other <var>ent-type</var> are reserved for future expansion.
<small>CVS</small> 1.9 and older
+will delete them any time it writes file attributes.
+<small>CVS</small> 1.10 and later will preserve them.
+</p>
+<p>Note that the order of the lines is not significant;
+a program writing the fileattr file may
+rearrange them at its convenience.
+</p>
+<p>There is currently no way of quoting tabs or line feeds in the
+filename, ‘<samp>=</samp>’ in <var>attrname</var>,
+‘<samp>;</samp>’ in <var>attrval</var>, etc. Note: some
implementations also
+don’t handle a NUL character in any of the fields, but
+implementations are encouraged to allow it.
+</p>
+<p>By convention, <var>attrname</var> starting with
‘<samp>_</samp>’ is for an attribute given
+special meaning by <small>CVS</small>; other <var>attrname</var>s are for
user-defined attributes
+(or will be, once implementations start supporting user-defined attributes).
+</p>
+<p>Built-in attributes:
+</p>
+<dl compact="compact">
+<dt><code>_watched</code></dt>
+<dd><p>Present means the file is watched and should be checked out
+read-only.
+</p>
+</dd>
+<dt><code>_watchers</code></dt>
+<dd><p>Users with watches for this file. Value is
+<var>watcher</var> > <var>type</var> { , <var>watcher</var> >
<var>type</var> }
+where <var>watcher</var> is a username, and <var>type</var>
+is zero or more of edit,unedit,commit separated by
+‘<samp>+</samp>’ (that is, nothing if none; there is no
"none" or "all" keyword).
+</p>
+</dd>
+<dt><code>_editors</code></dt>
+<dd><p>Users editing this file. Value is
+<var>editor</var> > <var>val</var> { , <var>editor</var> >
<var>val</var> }
+where <var>editor</var> is a username, and <var>val</var> is
+<var>time</var>+<var>hostname</var>+<var>pathname</var>, where
+<var>time</var> is when the <code>cvs edit</code> command (or
+equivalent) happened,
+and <var>hostname</var> and <var>pathname</var> are for the working directory.
+</p></dd>
+</dl>
+
+<p>Example:
+</p>
+<div class="example">
+<pre class="example">Ffile1 _watched=;_watchers=joe>edit,mary>commit
+Ffile2 _watched=;_editors=sue>8 Jan 1975+workstn1+/home/sue/cvs
+D _watched=
+</pre></div>
+
+<p>means that the file <samp>file1</samp> should be checked out
+read-only. Furthermore, joe is watching for edits and
+mary is watching for commits. The file <samp>file2</samp>
+should be checked out read-only; sue started editing it
+on 8 Jan 1975 in the directory <samp>/home/sue/cvs</samp> on
+the machine <code>workstn1</code>. Future files which are
+added should be checked out read-only. To represent
+this example here, we have shown a space after
+‘<samp>D</samp>’, ‘<samp>Ffile1</samp>’, and
‘<samp>Ffile2</samp>’, but in fact
+there must be a single tab character there and no spaces.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Locks.html#Locks" accesskey="n" rel="next">Locks</a>, Previous:
<a href="Attic.html#Attic" accesskey="p" rel="prev">Attic</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/CVSROOT-storage.html
===================================================================
RCS file: html_node/CVSROOT-storage.html
diff -N html_node/CVSROOT-storage.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/CVSROOT-storage.html 28 Dec 2015 15:57:50 -0000 1.1
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: CVSROOT storage</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: CVSROOT storage">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
CVSROOT storage">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="Working-directory-storage.html#Working-directory-storage"
rel="next" title="Working directory storage">
+<link href="Locks.html#Locks" rel="prev" title="Locks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="CVSROOT-storage"></a>
+<div class="header">
+<p>
+Previous: <a href="Locks.html#Locks" accesskey="p" rel="prev">Locks</a>, Up:
<a href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-files-are-stored-in-the-CVSROOT-directory"></a>
+<h4 class="subsection">2.2.7 How files are stored in the CVSROOT directory</h4>
+<a name="index-CVSROOT_002c-storage-of-files"></a>
+
+<p>The <samp>$CVSROOT/CVSROOT</samp> directory contains the
+various administrative files. In some ways this
+directory is just like any other directory in the
+repository; it contains <small>RCS</small> files whose names end
+in ‘<samp>,v</samp>’, and many of the <small>CVS</small> commands
operate
+on it the same way. However, there are a few
+differences.
+</p>
+<p>For each administrative file, in addition to the
+<small>RCS</small> file, there is also a checked out copy of the
+file. For example, there is an <small>RCS</small> file
+<samp>loginfo,v</samp> and a file <samp>loginfo</samp> which
+contains the latest revision contained in
+<samp>loginfo,v</samp>. When you check in an administrative
+file, <small>CVS</small> should print
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>and update the checked out copy in
+<samp>$CVSROOT/CVSROOT</samp>. If it does not, there is
+something wrong (see <a href="BUGS.html#BUGS">BUGS</a>). To add your own files
+to the files to be updated in this fashion, you can add
+them to the <samp>checkoutlist</samp> administrative file
+(see <a href="checkoutlist.html#checkoutlist">checkoutlist</a>).
+</p>
+<a name="index-modules_002edb"></a>
+<a name="index-modules_002epag"></a>
+<a name="index-modules_002edir"></a>
+<p>By default, the <samp>modules</samp> file behaves as
+described above. If the modules file is very large,
+storing it as a flat text file may make looking up
+modules slow (I’m not sure whether this is as much of a
+concern now as when <small>CVS</small> first evolved this
+feature; I haven’t seen benchmarks). Therefore, by
+making appropriate edits to the <small>CVS</small> source code
+one can store the modules file in a database which
+implements the <code>ndbm</code> interface, such as Berkeley
+db or GDBM. If this option is in use, then the modules
+database will be stored in the files <samp>modules.db</samp>,
+<samp>modules.pag</samp>, and/or <samp>modules.dir</samp>.
+</p>
+<p>For information on the meaning of the various
+administrative files, see <a
href="Administrative-files.html#Administrative-files">Administrative files</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Locks.html#Locks" accesskey="p" rel="prev">Locks</a>, Up:
<a href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Choosing-a-model.html
===================================================================
RCS file: html_node/Choosing-a-model.html
diff -N html_node/Choosing-a-model.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Choosing-a-model.html 28 Dec 2015 15:57:50 -0000 1.1
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Choosing a model</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Choosing a model">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Choosing a model">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Revision-management.html#Revision-management" rel="next"
title="Revision management">
+<link href="Watches-Compatibility.html#Watches-Compatibility" rel="prev"
title="Watches Compatibility">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Choosing-a-model"></a>
+<div class="header">
+<p>
+Previous: <a href="Watches.html#Watches" accesskey="p" rel="prev">Watches</a>,
Up: <a href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Choosing-between-reserved-or-unreserved-checkouts"></a>
+<h3 class="section">10.7 Choosing between reserved or unreserved checkouts</h3>
+<a name="index-Choosing_002c-reserved-or-unreserved-checkouts"></a>
+
+<p>Reserved and unreserved checkouts each have pros and
+cons. Let it be said that a lot of this is a matter of
+opinion or what works given different groups’ working
+styles, but here is a brief description of some of the
+issues. There are many ways to organize a team of
+developers. <small>CVS</small> does not try to enforce a certain
+organization. It is a tool that can be used in several
+ways.
+</p>
+<p>Reserved checkouts can be very counter-productive. If
+two persons want to edit different parts of a file,
+there may be no reason to prevent either of them from
+doing so. Also, it is common for someone to take out a
+lock on a file, because they are planning to edit it,
+but then forget to release the lock.
+</p>
+<p>People, especially people who are familiar with
+reserved checkouts, often wonder how often conflicts
+occur if unreserved checkouts are used, and how
+difficult they are to resolve. The experience with
+many groups is that they occur rarely and usually are
+relatively straightforward to resolve.
+</p>
+<p>The rarity of serious conflicts may be surprising, until one realizes
+that they occur only when two developers disagree on the proper design
+for a given section of code; such a disagreement suggests that the
+team has not been communicating properly in the first place. In order
+to collaborate under <em>any</em> source management regimen, developers
+must agree on the general design of the system; given this agreement,
+overlapping changes are usually straightforward to merge.
+</p>
+<p>In some cases unreserved checkouts are clearly
+inappropriate. If no merge tool exists for the kind of
+file you are managing (for example word processor files
+or files edited by Computer Aided Design programs), and
+it is not desirable to change to a program which uses a
+mergeable data format, then resolving conflicts is
+going to be unpleasant enough that you generally will
+be better off to simply avoid the conflicts instead, by
+using reserved checkouts.
+</p>
+<p>The watches features described above in <a
href="Watches.html#Watches">Watches</a>
+can be considered to be an intermediate model between
+reserved checkouts and unreserved checkouts. When you
+go to edit a file, it is possible to find out who else
+is editing it. And rather than having the system
+simply forbid both people editing the file, it can tell
+you what the situation is and let you figure out
+whether it is a problem in that particular case or not.
+Therefore, for some groups it can be considered the
+best of both the reserved checkout and unreserved
+checkout worlds.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Watches.html#Watches" accesskey="p" rel="prev">Watches</a>,
Up: <a href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Cleaning-up.html
===================================================================
RCS file: html_node/Cleaning-up.html
diff -N html_node/Cleaning-up.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Cleaning-up.html 28 Dec 2015 15:57:50 -0000 1.1
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Cleaning up</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Cleaning up">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Cleaning up">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="A-sample-session.html#A-sample-session" rel="up" title="A sample
session">
+<link href="Viewing-differences.html#Viewing-differences" rel="next"
title="Viewing differences">
+<link href="Committing-your-changes.html#Committing-your-changes" rel="prev"
title="Committing your changes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Cleaning-up"></a>
+<div class="header">
+<p>
+Next: <a href="Viewing-differences.html#Viewing-differences" accesskey="n"
rel="next">Viewing differences</a>, Previous: <a
href="Committing-your-changes.html#Committing-your-changes" accesskey="p"
rel="prev">Committing your changes</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Cleaning-up-1"></a>
+<h4 class="subsection">1.3.3 Cleaning up</h4>
+<a name="index-Cleaning-up"></a>
+<a name="index-Working-copy_002c-removing"></a>
+<a name="index-Removing-your-working-copy"></a>
+<a name="index-Releasing-your-working-copy"></a>
+
+<p>Before you turn to other tasks you decide to remove your working copy of
+tc. One acceptable way to do that is of course
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ rm -r tc
+</pre></div>
+
+<p>but a better way is to use the <code>release</code> command (see <a
href="release.html#release">release</a>):
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs release -d tc
+M driver.c
+? tc
+You have [1] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': n
+** `release' aborted by user choice.
+</pre></div>
+
+<p>The <code>release</code> command checks that all your modifications have
been
+committed. If history logging is enabled it also makes a note in the
+history file. See <a href="history-file.html#history-file">history file</a>.
+</p>
+<p>When you use the ‘<samp>-d</samp>’ flag with
<code>release</code>, it
+also removes your working copy.
+</p>
+<p>In the example above, the <code>release</code> command wrote a couple of
lines
+of output. ‘<samp>? tc</samp>’ means that the file
<samp>tc</samp> is unknown to <small>CVS</small>.
+That is nothing to worry about: <samp>tc</samp> is the executable compiler,
+and it should not be stored in the repository. See <a
href="cvsignore.html#cvsignore">cvsignore</a>,
+for information about how to make that warning go away.
+See <a href="release-output.html#release-output">release output</a>, for a
complete explanation of
+all possible output from <code>release</code>.
+</p>
+<p>‘<samp>M driver.c</samp>’ is more serious. It means that the
+file <samp>driver.c</samp> has been modified since it was
+checked out.
+</p>
+<p>The <code>release</code> command always finishes by telling
+you how many modified files you have in your working
+copy of the sources, and then asks you for confirmation
+before deleting any files or making any note in the
+history file.
+</p>
+<p>You decide to play it safe and answer <kbd>n <span
class="key">RET</span></kbd>
+when <code>release</code> asks for confirmation.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Viewing-differences.html#Viewing-differences" accesskey="n"
rel="next">Viewing differences</a>, Previous: <a
href="Committing-your-changes.html#Committing-your-changes" accesskey="p"
rel="prev">Committing your changes</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Committing-your-changes.html
===================================================================
RCS file: html_node/Committing-your-changes.html
diff -N html_node/Committing-your-changes.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Committing-your-changes.html 28 Dec 2015 15:57:50 -0000
1.1
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Committing your
changes</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Committing your changes">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Committing your changes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="A-sample-session.html#A-sample-session" rel="up" title="A sample
session">
+<link href="Cleaning-up.html#Cleaning-up" rel="next" title="Cleaning up">
+<link href="Getting-the-source.html#Getting-the-source" rel="prev"
title="Getting the source">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Committing-your-changes"></a>
+<div class="header">
+<p>
+Next: <a href="Cleaning-up.html#Cleaning-up" accesskey="n" rel="next">Cleaning
up</a>, Previous: <a href="Getting-the-source.html#Getting-the-source"
accesskey="p" rel="prev">Getting the source</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Committing-your-changes-1"></a>
+<h4 class="subsection">1.3.2 Committing your changes</h4>
+<a name="index-Committing-changes-to-files"></a>
+<a name="index-Log-message-entry"></a>
+
+<p>When you have checked that the compiler is still compilable you decide
+to make a new version of <samp>backend.c</samp>. This will
+store your new <samp>backend.c</samp> in the repository and
+make it available to anyone else who is using that same
+repository.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit backend.c
+</pre></div>
+
+<p><small>CVS</small> starts an editor, to allow you to enter a log
+message. You type in “Added an optimization pass.”,
+save the temporary file, and exit the editor.
+</p>
+<a name="index-CVSEDITOR_002c-environment-variable"></a>
+<a name="index-EDITOR_002c-environment-variable"></a>
+<p>The environment variable <code>$CVSEDITOR</code> determines
+which editor is started. If <code>$CVSEDITOR</code> is not
+set, then if the environment variable <code>$EDITOR</code> is
+set, it will be used. If both <code>$CVSEDITOR</code> and
+<code>$EDITOR</code> are not set then there is a default
+which will vary with your operating system, for example
+<code>vi</code> for unix or <code>notepad</code> for Windows
+NT/95.
+</p>
+<a name="index-VISUAL_002c-environment-variable"></a>
+<p>In addition, <small>CVS</small> checks the <code>$VISUAL</code> environment
+variable. Opinions vary on whether this behavior is desirable and
+whether future releases of <small>CVS</small> should check
<code>$VISUAL</code> or
+ignore it. You will be OK either way if you make sure that
+<code>$VISUAL</code> is either unset or set to the same thing as
+<code>$EDITOR</code>.
+</p>
+<p>When <small>CVS</small> starts the editor, it includes a list of
+files which are modified. For the <small>CVS</small> client,
+this list is based on comparing the modification time
+of the file against the modification time that the file
+had when it was last gotten or updated. Therefore, if
+a file’s modification time has changed but its contents
+have not, it will show up as modified. The simplest
+way to handle this is simply not to worry about it—if
+you proceed with the commit <small>CVS</small> will detect that
+the contents are not modified and treat it as an
+unmodified file. The next <code>update</code> will clue
+<small>CVS</small> in to the fact that the file is unmodified,
+and it will reset its stored timestamp so that the file
+will not show up in future editor sessions.
+</p>
+<p>If you want to avoid
+starting an editor you can specify the log message on
+the command line using the ‘<samp>-m</samp>’ flag instead, like
+this:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Added an optimization pass"
backend.c
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Cleaning-up.html#Cleaning-up" accesskey="n" rel="next">Cleaning
up</a>, Previous: <a href="Getting-the-source.html#Getting-the-source"
accesskey="p" rel="prev">Getting the source</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Common-options.html
===================================================================
RCS file: html_node/Common-options.html
diff -N html_node/Common-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Common-options.html 28 Dec 2015 15:57:51 -0000 1.1
@@ -0,0 +1,308 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Common options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Common options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Common options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="add.html#add" rel="next" title="add">
+<link href="Global-options.html#Global-options" rel="prev" title="Global
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Common-options"></a>
+<div class="header">
+<p>
+Next: <a href="add.html#add" accesskey="n" rel="next">add</a>, Previous: <a
href="Global-options.html#Global-options" accesskey="p" rel="prev">Global
options</a>, Up: <a href="CVS-commands.html#CVS-commands" accesskey="u"
rel="up">CVS commands</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Common-command-options"></a>
+<h3 class="appendixsec">A.5 Common command options</h3>
+<a name="index-Common-options"></a>
+<a name="index-Right_002dhand-options"></a>
+
+<p>This section describes the ‘<samp>command_options</samp>’ that
+are available across several <small>CVS</small> commands. These
+options are always given to the right of
+‘<samp>cvs_command</samp>’. Not all
+commands support all of these options; each option is
+only supported for commands where it makes sense.
+However, when a command has one of these options you
+can almost always count on the same behavior of the
+option as in other commands. (Other command options,
+which are listed with the individual commands, may have
+different behavior from one <small>CVS</small> command to the other).
+</p>
+<p><strong>The ‘<samp>history</samp>’ command is an exception; it
supports
+many options that conflict even with these standard options.</strong>
+</p>
+<dl compact="compact">
+<dd><a name="index-Dates"></a>
+<a name="index-Time"></a>
+<a name="index-Specifying-dates"></a>
+</dd>
+<dt><code>-D <var>date_spec</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date_spec</var>.
+<var>date_spec</var> is a single argument, a date description
+specifying a date in the past.
+</p>
+<p>The specification is <em>sticky</em> when you use it to make a
+private copy of a source file; that is, when you get a working
+file using ‘<samp>-D</samp>’, <small>CVS</small> records the date
you specified, so that
+further updates in the same directory will use the same date
+(for more information on sticky tags/dates, see <a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a>).
+</p>
+<p>‘<samp>-D</samp>’ is available with the <code>annotate</code>,
<code>checkout</code>,
+<code>diff</code>, <code>export</code>, <code>history</code>,
+<code>rdiff</code>, <code>rtag</code>, and <code>update</code> commands.
+(The <code>history</code> command uses this option in a
+slightly different way; see <a
href="history-options.html#history-options">history options</a>).
+</p>
+
+<a name="index-Timezone_002c-in-input"></a>
+<a name="index-Zone_002c-time_002c-in-input"></a>
+<p>A wide variety of date formats are supported by
+<small>CVS</small>. The most standard ones are ISO8601 (from the
+International Standards Organization) and the Internet
+e-mail standard (specified in RFC822 as amended by
+RFC1123).
+</p>
+<p>ISO8601 dates have many variants but a few examples
+are:
+</p>
+<div class="example">
+<pre class="example">1972-09-24
+1972-09-24 20:05
+</pre></div>
+
+<p>There are a lot more ISO8601 date formats, and <small>CVS</small>
+accepts many of them, but you probably don’t want to
+hear the <em>whole</em> long story :-).
+</p>
+
+<p>In addition to the dates allowed in Internet e-mail
+itself, <small>CVS</small> also allows some of the fields to be
+omitted. For example:
+</p>
+<div class="example">
+<pre class="example">24 Sep 1972 20:05
+24 Sep
+</pre></div>
+
+<p>The date is interpreted as being in the
+local timezone, unless a specific timezone is
+specified.
+</p>
+<p>These two date formats are preferred. However,
+<small>CVS</small> currently accepts a wide variety of other date
+formats. They are intentionally not documented here in
+any detail, and future versions of <small>CVS</small> might not
+accept all of them.
+</p>
+<p>One such format is
+<code><var>month</var>/<var>day</var>/<var>year</var></code>. This may
+confuse people who are accustomed to having the month
+and day in the other order; ‘<samp>1/4/96</samp>’ is January 4,
+not April 1.
+</p>
+<p>Remember to quote the argument to the ‘<samp>-D</samp>’
+flag so that your shell doesn’t interpret spaces as
+argument separators. A command using the ‘<samp>-D</samp>’
+flag can look like this:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -D "1 hour ago" cvs.texinfo
+</pre></div>
+
+<a name="index-Forcing-a-tag-match"></a>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>When you specify a particular date or tag to <small>CVS</small>
commands, they
+normally ignore files that do not contain the tag (or did not
+exist prior to the date) that you specified. Use the
‘<samp>-f</samp>’ option
+if you want files retrieved even when there is no match for the
+tag or date. (The most recent revision of the file
+will be used).
+</p>
+<p>Note that even with ‘<samp>-f</samp>’, a tag that you specify
+must exist (that is, in some file, not necessary in
+every file). This is so that <small>CVS</small> will continue to
+give an error if you mistype a tag name.
+</p>
+<p>‘<samp>-f</samp>’ is available with these commands:
+<code>annotate</code>, <code>checkout</code>, <code>export</code>,
+<code>rdiff</code>, <code>rtag</code>, and <code>update</code>.
+</p>
+<p><strong>WARNING: The <code>commit</code> and <code>remove</code>
+commands also have a
+‘<samp>-f</samp>’ option, but it has a different behavior for
+those commands. See <a href="commit-options.html#commit-options">commit
options</a>, and
+<a href="Removing-files.html#Removing-files">Removing files</a>.</strong>
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Alter the default processing of keywords.
+See <a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>, for the meaning of
+<var>kflag</var>. Your <var>kflag</var> specification is
+<em>sticky</em> when you use it to create a private copy
+of a source file; that is, when you use this option
+with the <code>checkout</code> or <code>update</code> commands,
+<small>CVS</small> associates your selected <var>kflag</var> with the
+file, and continues to use it with future update
+commands on the same file until you specify otherwise.
+</p>
+<p>The ‘<samp>-k</samp>’ option is available with the
<code>add</code>,
+<code>checkout</code>, <code>diff</code>, <code>rdiff</code>,
<code>import</code> and
+<code>update</code> commands.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory, rather than
+recursing through subdirectories.
+</p>
+<p>Available with the following commands: <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>edit</code>,
<code>editors</code>, <code>export</code>,
+<code>log</code>, <code>rdiff</code>, <code>remove</code>, <code>rtag</code>,
+<code>status</code>, <code>tag</code>, <code>unedit</code>,
<code>update</code>, <code>watch</code>,
+and <code>watchers</code>.
+</p>
+<a name="index-Editor_002c-avoiding-invocation-of"></a>
+<a name="index-Avoiding-editor-invocation"></a>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as log information, instead of
+invoking an editor.
+</p>
+<p>Available with the following commands: <code>add</code>,
+<code>commit</code> and <code>import</code>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any tag program. (A program can be
+specified to run in the modules
+database (see <a href="modules.html#modules">modules</a>); this option
bypasses it).
+</p>
+<p><strong>This is not the same as the ‘<samp>cvs -n</samp>’
+program option, which you can specify to the left of a cvs command!</strong>
+</p>
+<p>Available with the <code>checkout</code>, <code>export</code>,
+and <code>rtag</code> commands.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a
href="Removing-directories.html#Removing-directories">Removing directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe the files retrieved from the repository to standard output,
+rather than writing them in the current directory. Available
+with the <code>checkout</code> and <code>update</code> commands.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively. This is on by default.
+</p>
+<p>Available with the following commands: <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>edit</code>,
<code>editors</code>, <code>export</code>,
+<code>rdiff</code>, <code>remove</code>, <code>rtag</code>,
+<code>status</code>, <code>tag</code>, <code>unedit</code>,
<code>update</code>, <code>watch</code>,
+and <code>watchers</code>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><a name="index-HEAD_002c-special-tag"></a>
+<a name="index-BASE_002c-special-tag"></a>
+<p>Use the revision specified by the <var>tag</var> argument instead of the
+default <em>head</em> revision. As well as arbitrary tags defined
+with the <code>tag</code> or <code>rtag</code> command, two special tags are
+always available: ‘<samp>HEAD</samp>’ refers to the most recent
version
+available in the repository, and ‘<samp>BASE</samp>’ refers to the
+revision you last checked out into the current working directory.
+</p>
+
+<p>The tag specification is sticky when you use this
+with <code>checkout</code> or <code>update</code> to make your own
+copy of a file: <small>CVS</small> remembers the tag and continues to use it on
+future update commands, until you specify otherwise (for more information
+on sticky tags/dates, see <a href="Sticky-tags.html#Sticky-tags">Sticky
tags</a>).
+</p>
+<p>The tag can be either a symbolic or numeric tag, as
+described in <a href="Tags.html#Tags">Tags</a>, or the name of a branch, as
+described in <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>.
+When a command expects a specific revision,
+the name of a branch is interpreted as the most recent
+revision on that branch.
+</p>
+<p>Specifying the ‘<samp>-q</samp>’ global option along with the
+‘<samp>-r</samp>’ command option is often useful, to suppress
+the warning messages when the <small>RCS</small> file
+does not contain the specified tag.
+</p>
+<p><strong>This is not the same as the overall ‘<samp>cvs
-r</samp>’ option,
+which you can specify to the left of a <small>CVS</small> command!</strong>
+</p>
+<p>‘<samp>-r</samp>’ is available with the <code>annotate</code>,
<code>checkout</code>,
+<code>commit</code>, <code>diff</code>, <code>history</code>,
<code>export</code>, <code>rdiff</code>,
+<code>rtag</code>, and <code>update</code> commands.
+</p>
+</dd>
+<dt><code>-W</code></dt>
+<dd><p>Specify file names that should be filtered. You can
+use this option repeatedly. The spec can be a file
+name pattern of the same type that you can specify in
+the <samp>.cvswrappers</samp> file.
+Available with the following commands: <code>import</code>,
+and <code>update</code>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="add.html#add" accesskey="n" rel="next">add</a>, Previous: <a
href="Global-options.html#Global-options" accesskey="p" rel="prev">Global
options</a>, Up: <a href="CVS-commands.html#CVS-commands" accesskey="u"
rel="up">CVS commands</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Compatibility.html
===================================================================
RCS file: html_node/Compatibility.html
diff -N html_node/Compatibility.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Compatibility.html 28 Dec 2015 15:57:51 -0000 1.1
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Compatibility</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Compatibility">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Compatibility">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Troubleshooting.html#Troubleshooting" rel="next"
title="Troubleshooting">
+<link href="Environment-variables.html#Environment-variables" rel="prev"
title="Environment variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Compatibility"></a>
+<div class="header">
+<p>
+Next: <a href="Troubleshooting.html#Troubleshooting" accesskey="n"
rel="next">Troubleshooting</a>, Previous: <a
href="Environment-variables.html#Environment-variables" accesskey="p"
rel="prev">Environment variables</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Compatibility-between-CVS-Versions"></a>
+<h2 class="appendix">Appendix E Compatibility between CVS Versions</h2>
+
+<a name="index-CVS_002c-versions-of"></a>
+<a name="index-Versions_002c-of-CVS"></a>
+<a name="index-Compatibility_002c-between-CVS-versions"></a>
+<p>The repository format is compatible going back to
+<small>CVS</small> 1.3. But see <a
href="Watches-Compatibility.html#Watches-Compatibility">Watches
Compatibility</a>, if
+you have copies of <small>CVS</small> 1.6 or older and you want
+to use the optional developer communication features.
+</p>
+<p>The working directory format is compatible going back
+to <small>CVS</small> 1.5. It did change between <small>CVS</small> 1.3
+and <small>CVS</small> 1.5. If you run <small>CVS</small> 1.5 or newer on
+a working directory checked out with <small>CVS</small> 1.3,
+<small>CVS</small> will convert it, but to go back to <small>CVS</small>
+1.3 you need to check out a new working directory with
+<small>CVS</small> 1.3.
+</p>
+<p>The remote protocol is interoperable going back to <small>CVS</small> 1.5,
but no
+further (1.5 was the first official release with the remote protocol,
+but some older versions might still be floating around). In many
+cases you need to upgrade both the client and the server to take
+advantage of new features and bug fixes, however.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/Concurrency.html
===================================================================
RCS file: html_node/Concurrency.html
diff -N html_node/Concurrency.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Concurrency.html 28 Dec 2015 15:57:51 -0000 1.1
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Concurrency</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Concurrency">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Concurrency">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Watches.html#Watches" rel="next" title="Watches">
+<link href="Informing-others.html#Informing-others" rel="prev"
title="Informing others">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Concurrency"></a>
+<div class="header">
+<p>
+Next: <a href="Watches.html#Watches" accesskey="n" rel="next">Watches</a>,
Previous: <a href="Informing-others.html#Informing-others" accesskey="p"
rel="prev">Informing others</a>, Up: <a
href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Several-developers-simultaneously-attempting-to-run-CVS"></a>
+<h3 class="section">10.5 Several developers simultaneously attempting to run
CVS</h3>
+
+<a name="index-Locks_002c-cvs_002c-introduction"></a>
+<p>If several developers try to run <small>CVS</small> at the same
+time, one may get the following message:
+</p>
+<div class="example">
+<pre class="example">[11:43:23] waiting for bach's lock in
/usr/local/cvsroot/foo
+</pre></div>
+
+<a name="index-_0023cvs_002erfl_002c-removing"></a>
+<a name="index-_0023cvs_002ewfl_002c-removing"></a>
+<a name="index-_0023cvs_002elock_002c-removing"></a>
+<p><small>CVS</small> will try again every 30 seconds, and either
+continue with the operation or print the message again,
+if it still needs to wait. If a lock seems to stick
+around for an undue amount of time, find the person
+holding the lock and ask them about the cvs command
+they are running. If they aren’t running a cvs
+command, look in the repository directory mentioned in
+the message and remove files which they own whose names
+start with <samp>#cvs.rfl</samp>,
+<samp>#cvs.wfl</samp>, or <samp>#cvs.lock</samp>.
+</p>
+<p>Note that these locks are to protect <small>CVS</small>’s
+internal data structures and have no relationship to
+the word <em>lock</em> in the sense used by
+<small>RCS</small>—which refers to reserved checkouts
+(see <a href="Multiple-developers.html#Multiple-developers">Multiple
developers</a>).
+</p>
+<p>Any number of people can be reading from a given
+repository at a time; only when someone is writing do
+the locks prevent other people from reading or writing.
+</p>
+<a name="index-Atomic-transactions_002c-lack-of"></a>
+<a name="index-Transactions_002c-atomic_002c-lack-of"></a>
+<p>One might hope for the following property:
+</p>
+<blockquote>
+<p>If someone commits some changes in one cvs command,
+then an update by someone else will either get all the
+changes, or none of them.
+</p></blockquote>
+
+<p>but <small>CVS</small> does <em>not</em> have this property. For
+example, given the files
+</p>
+<div class="example">
+<pre class="example">a/one.c
+a/two.c
+b/three.c
+b/four.c
+</pre></div>
+
+<p>if someone runs
+</p>
+<div class="example">
+<pre class="example">cvs ci a/two.c b/three.c
+</pre></div>
+
+<p>and someone else runs <code>cvs update</code> at the same
+time, the person running <code>update</code> might get only
+the change to <samp>b/three.c</samp> and not the change to
+<samp>a/two.c</samp>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Watches.html#Watches" accesskey="n" rel="next">Watches</a>,
Previous: <a href="Informing-others.html#Informing-others" accesskey="p"
rel="prev">Informing others</a>, Up: <a
href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Conflicts-example.html
===================================================================
RCS file: html_node/Conflicts-example.html
diff -N html_node/Conflicts-example.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Conflicts-example.html 28 Dec 2015 15:57:51 -0000 1.1
@@ -0,0 +1,240 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Conflicts example</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Conflicts example">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Conflicts example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Informing-others.html#Informing-others" rel="next"
title="Informing others">
+<link href="Updating-a-file.html#Updating-a-file" rel="prev" title="Updating a
file">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Conflicts-example"></a>
+<div class="header">
+<p>
+Next: <a href="Informing-others.html#Informing-others" accesskey="n"
rel="next">Informing others</a>, Previous: <a
href="Updating-a-file.html#Updating-a-file" accesskey="p" rel="prev">Updating a
file</a>, Up: <a href="Multiple-developers.html#Multiple-developers"
accesskey="u" rel="up">Multiple developers</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Conflicts-example-1"></a>
+<h3 class="section">10.3 Conflicts example</h3>
+<a name="index-Merge_002c-an-example"></a>
+<a name="index-Example-of-merge"></a>
+<a name="index-driver_002ec-_0028merge-example_0029"></a>
+
+<p>Suppose revision 1.4 of <samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdio.h>
+
+void main()
+{
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? 0 : 1);
+}
+</pre></div>
+
+<p>Revision 1.6 of <samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(!!nerr);
+}
+</pre></div>
+
+<p>Your working copy of <samp>driver.c</samp>, based on revision
+1.4, contains this before you run ‘<samp>cvs update</samp>’:
+</p>
+<div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+void main()
+{
+ init_scanner();
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+</pre></div>
+
+<p>You run ‘<samp>cvs update</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs update driver.c
+RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
+retrieving revision 1.4
+retrieving revision 1.6
+Merging differences between 1.4 and 1.6 into driver.c
+rcsmerge warning: overlaps during merge
+cvs update: conflicts found in driver.c
+C driver.c
+</pre></div>
+
+<a name="index-Conflicts-_0028merge-example_0029"></a>
+<p><small>CVS</small> tells you that there were some conflicts.
+Your original working file is saved unmodified in
+<samp>.#driver.c.1.4</samp>. The new version of
+<samp>driver.c</samp> contains this:
+</p>
+<div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+<<<<<<< driver.c
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+=======
+ exit(!!nerr);
+>>>>>>> 1.6
+}
+</pre></div>
+
+<a name="index-Markers_002c-conflict"></a>
+<a name="index-Conflict-markers"></a>
+<a name="index-_003c_003c_003c_003c_003c_003c_003c"></a>
+<a name="index-_003e_003e_003e_003e_003e_003e_003e"></a>
+<a name="index-_003d_003d_003d_003d_003d_003d_003d"></a>
+
+<p>Note how all non-overlapping modifications are incorporated in your working
+copy, and that the overlapping section is clearly marked with
+‘<samp><<<<<<<</samp>’,
‘<samp>=======</samp>’ and
‘<samp>>>>>>>></samp>’.
+</p>
+<a name="index-Resolving-a-conflict"></a>
+<a name="index-Conflict-resolution"></a>
+<p>You resolve the conflict by editing the file, removing the markers and
+the erroneous line. Suppose you end up with this file:
+</p><div class="example">
+<pre class="example">#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+</pre></div>
+
+<p>You can now go ahead and commit this as revision 1.7.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Initialize scanner. Use symbolic
exit values." driver.c
+Checking in driver.c;
+/usr/local/cvsroot/yoyodyne/tc/driver.c,v <-- driver.c
+new revision: 1.7; previous revision: 1.6
+done
+</pre></div>
+
+<p>For your protection, <small>CVS</small> will refuse to check in a
+file if a conflict occurred and you have not resolved
+the conflict. Currently to resolve a conflict, you
+must change the timestamp on the file. In previous
+versions of <small>CVS</small>, you also needed to
+insure that the file contains no conflict markers.
+Because
+your file may legitimately contain conflict markers (that
+is, occurrences of ‘<samp>>>>>>>> </samp>’ at
the start of a
+line that don’t mark a conflict), the current
+version of <small>CVS</small> will print a warning and proceed to
+check in the file.
+</p>
+<a name="index-emerge"></a>
+<p>If you use release 1.04 or later of pcl-cvs (a <small>GNU</small>
+Emacs front-end for <small>CVS</small>) you can use an Emacs
+package called emerge to help you resolve conflicts.
+See the documentation for pcl-cvs.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Informing-others.html#Informing-others" accesskey="n"
rel="next">Informing others</a>, Previous: <a
href="Updating-a-file.html#Updating-a-file" accesskey="p" rel="prev">Updating a
file</a>, Up: <a href="Multiple-developers.html#Multiple-developers"
accesskey="u" rel="up">Multiple developers</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Connecting-via-fork.html
===================================================================
RCS file: html_node/Connecting-via-fork.html
diff -N html_node/Connecting-via-fork.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Connecting-via-fork.html 28 Dec 2015 15:57:52 -0000 1.1
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Connecting via
fork</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Connecting via fork">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Connecting via fork">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link href="Read_002donly-access.html#Read_002donly-access" rel="next"
title="Read-only access">
+<link href="Kerberos-authenticated.html#Kerberos-authenticated" rel="prev"
title="Kerberos authenticated">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Connecting-via-fork"></a>
+<div class="header">
+<p>
+Previous: <a href="Kerberos-authenticated.html#Kerberos-authenticated"
accesskey="p" rel="prev">Kerberos authenticated</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Connecting-with-fork"></a>
+<h4 class="subsection">2.9.6 Connecting with fork</h4>
+
+<a name="index-fork_002c-access-method"></a>
+<a name="index-_003afork_003a_002c-setting-up"></a>
+<p>This access method allows you to connect to a
+repository on your local disk via the remote protocol.
+In other words it does pretty much the same thing as
+<code>:local:</code>, but various quirks, bugs and the like are
+those of the remote <small>CVS</small> rather than the local
+<small>CVS</small>.
+</p>
+<p>For day-to-day operations you might prefer either
+<code>:local:</code> or <code>:fork:</code>, depending on your
+preferences. Of course <code>:fork:</code> comes in
+particularly handy in testing or
+debugging <code>cvs</code> and the remote protocol.
+Specifically, we avoid all of the network-related
+setup/configuration, timeouts, and authentication
+inherent in the other remote access methods but still
+create a connection which uses the remote protocol.
+</p>
+<p>To connect using the <code>fork</code> method, use
+‘<samp>:fork:</samp>’ and the pathname to your local
+repository. For example:
+</p>
+<div class="example">
+<pre class="example">cvs -d :fork:/usr/local/cvsroot checkout foo
+</pre></div>
+
+<a name="index-CVS_005fSERVER_002c-and-_003afork_003a"></a>
+<p>As with <code>:ext:</code>, the server is called
‘<samp>cvs</samp>’
+by default, or the value of the <code>CVS_SERVER</code>
+environment variable.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Connecting-via-rsh.html
===================================================================
RCS file: html_node/Connecting-via-rsh.html
diff -N html_node/Connecting-via-rsh.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Connecting-via-rsh.html 28 Dec 2015 15:57:52 -0000 1.1
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Connecting via
rsh</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Connecting via rsh">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Connecting via rsh">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link href="Password-authenticated.html#Password-authenticated" rel="next"
title="Password authenticated">
+<link href="Server-requirements.html#Server-requirements" rel="prev"
title="Server requirements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Connecting-via-rsh"></a>
+<div class="header">
+<p>
+Next: <a href="Password-authenticated.html#Password-authenticated"
accesskey="n" rel="next">Password authenticated</a>, Previous: <a
href="Server-requirements.html#Server-requirements" accesskey="p"
rel="prev">Server requirements</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Connecting-with-rsh-or-ssh"></a>
+<h4 class="subsection">2.9.2 Connecting with rsh or ssh</h4>
+
+<a name="index-ssh"></a>
+<p><small>CVS</small> may use the ‘<samp>ssh</samp>’ protocol to
perform
+these operations, so the remote user host needs to have
+a either an agent like <code>ssh-agent</code> to hold
+credentials or a <samp>.shosts</samp> file which grants
+access to the local user. Note that the program that
+<small>CVS</small> uses for this purpose may be specified using
+the <samp>--with-ssh</samp> flag to configure.
+</p>
+<a name="index-rsh"></a>
+<p><small>CVS</small> uses the ‘<samp>rsh</samp>’ protocol to
perform these
+operations, so the remote user host needs to have a
+<samp>.rhosts</samp> file which grants access to the local
+user. Note that the program that <small>CVS</small> uses for this
+purpose may be specified using the <samp>--with-rsh</samp>
+flag to configure.
+</p>
+<p>For example, suppose you are the user ‘<samp>mozart</samp>’ on
+the local machine ‘<samp>toe.example.com</samp>’, and the
+server machine is ‘<samp>faun.example.org</samp>’. On
+faun, put the following line into the file
+<samp>.rhosts</samp> in ‘<samp>bach</samp>’’s home directory:
+</p>
+<div class="example">
+<pre class="example">toe.example.com mozart
+</pre></div>
+
+<p>Then test that ‘<samp>rsh</samp>’ is working with
+</p>
+<div class="example">
+<pre class="example">rsh -l bach faun.example.org 'echo $PATH'
+</pre></div>
+
+<p>To test that ‘<samp>ssh</samp>’ is working use
+</p>
+<div class="example">
+<pre class="example">ssh -l bach faun.example.org 'echo $PATH'
+</pre></div>
+
+<a name="index-CVS_005fSERVER_002c-environment-variable"></a>
+<p>Next you have to make sure that <code>rsh</code> will be able
+to find the server. Make sure that the path which
+<code>rsh</code> printed in the above example includes the
+directory containing a program named <code>cvs</code> which
+is the server. You need to set the path in
+<samp>.bashrc</samp>, <samp>.cshrc</samp>, etc., not <samp>.login</samp>
+or <samp>.profile</samp>. Alternately, you can set the
+environment variable <code>CVS_SERVER</code> on the client
+machine to the filename of the server you want to use,
+for example <samp>/usr/local/bin/cvs-1.6</samp>.
+</p>
+<p>There is no need to edit <samp>inetd.conf</samp> or start a
+<small>CVS</small> server daemon.
+</p>
+<a name="index-_003aserver_003a_002c-setting-up"></a>
+<a name="index-_003aext_003a_002c-setting-up"></a>
+<a name="index-_003aextssh_003a_002c-setting-up"></a>
+<a name="index-Kerberos_002c-using-kerberized-rsh"></a>
+<a name="index-SSH-_0028rsh-replacement_0029"></a>
+<a name="index-rsh-replacements-_0028Kerberized_002c-SSH_002c-_0026c_0029"></a>
+<p>There are three access methods that you use in <code>CVSROOT</code>
+for rsh or ssh. <code>:server:</code> specifies an internal rsh
+client, which is supported only by some <small>CVS</small> ports.
+<code>:extssh:</code> specifies an external ssh program. By
+default this is <code>ssh</code> (unless otherwise specified
+by the <samp>--with-ssh</samp> flag to configure) but you may set the
+<code>CVS_SSH</code> environment variable to invoke another
+program or wrapper script.
+<code>:ext:</code> specifies an external rsh program. By
+default this is <code>rsh</code> (unless otherwise specified
+by the <samp>--with-rsh</samp> flag to configure) but you may set the
+<code>CVS_RSH</code> environment variable to invoke another
+program which can access the remote server (for
+example, <code>remsh</code> on HP-UX 9 because <code>rsh</code> is
+something different). It must be a program which can
+transmit data to and from the server without modifying
+it; for example the Windows NT <code>rsh</code> is not
+suitable since it by default translates between CRLF
+and LF. The OS/2 <small>CVS</small> port has a hack to pass
‘<samp>-b</samp>’
+to <code>rsh</code> to get around this, but since this could
+potentially cause problems for programs other than the
+standard <code>rsh</code>, it may change in the future. If
+you set <code>CVS_RSH</code> to <code>SSH</code> or some other rsh
+replacement, the instructions in the rest of this
+section concerning <samp>.rhosts</samp> and so on are likely
+to be inapplicable; consult the documentation for your rsh
+replacement.
+</p>
+<p>Continuing our example, supposing you want to access
+the module <samp>foo</samp> in the repository
+<samp>/usr/local/cvsroot/</samp>, on machine
+<samp>faun.example.org</samp>, you are ready to go:
+</p>
+<div class="example">
+<pre class="example">cvs -d :ext:address@hidden:/usr/local/cvsroot checkout foo
+</pre></div>
+
+<p>(The <samp>bach@</samp> can be omitted if the username is
+the same on both the local and remote hosts.)
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Password-authenticated.html#Password-authenticated"
accesskey="n" rel="next">Password authenticated</a>, Previous: <a
href="Server-requirements.html#Server-requirements" accesskey="p"
rel="prev">Server requirements</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Connection.html
===================================================================
RCS file: html_node/Connection.html
diff -N html_node/Connection.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Connection.html 28 Dec 2015 15:57:52 -0000 1.1
@@ -0,0 +1,203 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Connection</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Connection">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Connection">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Troubleshooting.html#Troubleshooting" rel="up"
title="Troubleshooting">
+<link href="Other-problems.html#Other-problems" rel="next" title="Other
problems">
+<link href="Error-messages.html#Error-messages" rel="prev" title="Error
messages">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Connection"></a>
+<div class="header">
+<p>
+Next: <a href="Other-problems.html#Other-problems" accesskey="n"
rel="next">Other problems</a>, Previous: <a
href="Error-messages.html#Error-messages" accesskey="p" rel="prev">Error
messages</a>, Up: <a href="Troubleshooting.html#Troubleshooting" accesskey="u"
rel="up">Troubleshooting</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Trouble-making-a-connection-to-a-CVS-server"></a>
+<h3 class="appendixsec">F.2 Trouble making a connection to a CVS server</h3>
+
+<p>This section concerns what to do if you are having
+trouble making a connection to a <small>CVS</small> server. If
+you are running the <small>CVS</small> command line client
+running on Windows, first upgrade the client to
+<small>CVS</small> 1.9.12 or later. The error reporting in
+earlier versions provided much less information about
+what the problem was. If the client is non-Windows,
+<small>CVS</small> 1.9 should be fine.
+</p>
+<p>If the error messages are not sufficient to track down
+the problem, the next steps depend largely on which
+access method you are using.
+</p>
+<dl compact="compact">
+<dd><a name="index-_003aext_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:ext:</code></dt>
+<dd><p>Try running the rsh program from the command line. For
+example: "rsh servername cvs -v" should print <small>CVS</small>
+version information. If this doesn’t work, you need to
+fix it before you can worry about <small>CVS</small> problems.
+</p>
+<a name="index-_003aserver_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:server:</code></dt>
+<dd><p>You don’t need a command line rsh program to use this
+access method, but if you have an rsh program around,
+it may be useful as a debugging tool. Follow the
+directions given for :ext:.
+</p>
+<a name="index-_003apserver_003a_002c-troubleshooting"></a>
+</dd>
+<dt><code>:pserver:</code></dt>
+<dd><p>Errors along the lines of "connection refused" typically
indicate
+that inetd isn’t even listening for connections on port 2401
+whereas errors like "connection reset by peer",
+"received broken pipe signal", "recv() from server: EOF",
+or "end of file from server"
+typically indicate that inetd is listening for
+connections but is unable to start <small>CVS</small> (this is frequently
+caused by having an incorrect path in <samp>inetd.conf</samp>
+or by firewall software rejecting the connection).
+"unrecognized auth response" errors are caused by a bad command
+line in <samp>inetd.conf</samp>, typically an invalid option or forgetting
+to put the ‘<samp>pserver</samp>’ command at the end of the line.
+Another less common problem is invisible control characters that
+your editor "helpfully" added without you noticing.
+</p>
+<p>One good debugging tool is to "telnet servername
+2401". After connecting, send any text (for example
+"foo" followed by return). If <small>CVS</small> is working
+correctly, it will respond with
+</p>
+<div class="example">
+<pre class="example">cvs [pserver aborted]: bad auth protocol start: foo
+</pre></div>
+
+<p>If instead you get:
+</p>
+<div class="example">
+<pre class="example">Usage: cvs [cvs-options] command
[command-options-and-arguments]
+...
+</pre></div>
+
+<p>then you’re missing the ‘<samp>pserver</samp>’ command at
the end of the
+line in <samp>inetd.conf</samp>; check to make sure that the entire command
+is on one line and that it’s complete.
+</p>
+<p>Likewise, if you get something like:
+</p>
+<div class="example">
+<pre class="example">Unknown command: `pserved'
+
+CVS commands are:
+ add Add a new file/directory to the repository
+...
+</pre></div>
+
+<p>then you’ve misspelled ‘<samp>pserver</samp>’ in some
way. If it isn’t
+obvious, check for invisible control characters (particularly
+carriage returns) in <samp>inetd.conf</samp>.
+</p>
+<p>If it fails to work at all, then make sure inetd is working
+right. Change the invocation in <samp>inetd.conf</samp> to run the
+echo program instead of cvs. For example:
+</p>
+<div class="example">
+<pre class="example">2401 stream tcp nowait root /bin/echo echo hello
+</pre></div>
+
+<p>After making that change and instructing inetd to
+re-read its configuration file, "telnet servername
+2401" should show you the text hello and then the
+server should close the connection. If this doesn’t
+work, you need to fix it before you can worry about
+<small>CVS</small> problems.
+</p>
+<p>On AIX systems, the system will often have its own
+program trying to use port 2401. This is AIX’s problem
+in the sense that port 2401 is registered for use with
+<small>CVS</small>. I hear that there is an AIX patch available
+to address this problem.
+</p>
+<p>Another good debugging tool is the ‘<samp>-d</samp>’
+(debugging) option to inetd. Consult your system
+documentation for more information.
+</p>
+<p>If you seem to be connecting but get errors like:
+</p>
+<div class="example">
+<pre class="example">cvs server: cannot open /root/.cvsignore: Permission
denied
+cvs [server aborted]: can't chdir(/root): Permission denied
+</pre></div>
+
+<p>then you probably haven’t specified ‘<samp>-f</samp>’ in
<samp>inetd.conf</samp>.
+(In releases prior to <small>CVS</small> 1.11.1, this problem can be caused by
+your system setting the <code>$HOME</code> environment variable
+for programs being run by inetd. In this case, you can either
+have inetd run a shell script that unsets <code>$HOME</code> and then runs
+<small>CVS</small>, or you can use <code>env</code> to run <small>CVS</small>
with a pristine
+environment.)
+</p>
+<p>If you can connect successfully for a while but then can’t,
+you’ve probably hit inetd’s rate limit.
+(If inetd receives too many requests for the same service
+in a short period of time, it assumes that something is wrong
+and temporarily disables the service.)
+Check your inetd documentation to find out how to adjust the
+rate limit (some versions of inetd have a single rate limit,
+others allow you to set the limit for each service separately.)
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Other-problems.html#Other-problems" accesskey="n"
rel="next">Other problems</a>, Previous: <a
href="Error-messages.html#Error-messages" accesskey="p" rel="prev">Error
messages</a>, Up: <a href="Troubleshooting.html#Troubleshooting" accesskey="u"
rel="up">Troubleshooting</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Creating-a-branch.html
===================================================================
RCS file: html_node/Creating-a-branch.html
diff -N html_node/Creating-a-branch.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Creating-a-branch.html 28 Dec 2015 15:57:52 -0000 1.1
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Creating a branch</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Creating a branch">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Creating a branch">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Accessing-branches.html#Accessing-branches" rel="next"
title="Accessing branches">
+<link href="Branches-motivation.html#Branches-motivation" rel="prev"
title="Branches motivation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Creating-a-branch"></a>
+<div class="header">
+<p>
+Next: <a href="Accessing-branches.html#Accessing-branches" accesskey="n"
rel="next">Accessing branches</a>, Previous: <a
href="Branches-motivation.html#Branches-motivation" accesskey="p"
rel="prev">Branches motivation</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Creating-a-branch-1"></a>
+<h3 class="section">5.2 Creating a branch</h3>
+<a name="index-Creating-a-branch"></a>
+<a name="index-Branch_002c-creating-a"></a>
+<a name="index-tag_002c-creating-a-branch-using"></a>
+<a name="index-rtag_002c-creating-a-branch-using"></a>
+
+<p>You can create a branch with <code>tag -b</code>; for
+example, assuming you’re in a working copy:
+</p>
+<div class="example">
+<pre class="example">$ cvs tag -b rel-1-0-patches
+</pre></div>
+
+
+<p>This splits off a branch based on the current revisions
+in the working copy, assigning that branch the name
+‘<samp>rel-1-0-patches</samp>’.
+</p>
+<p>It is important to understand that branches get created
+in the repository, not in the working copy. Creating a
+branch based on current revisions, as the above example
+does, will <em>not</em> automatically switch the working
+copy to be on the new branch. For information on how
+to do that, see <a href="Accessing-branches.html#Accessing-branches">Accessing
branches</a>.
+</p>
+<p>You can also create a branch without reference to any
+working copy, by using <code>rtag</code>:
+</p>
+<div class="example">
+<pre class="example">$ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
+</pre></div>
+
+<p>‘<samp>-r rel-1-0</samp>’ says that this branch should be
+rooted at the revision that
+corresponds to the tag ‘<samp>rel-1-0</samp>’. It need not
+be the most recent revision – it’s often useful to
+split a branch off an old revision (for example, when
+fixing a bug in a past release otherwise known to be
+stable).
+</p>
+<p>As with ‘<samp>tag</samp>’, the ‘<samp>-b</samp>’
flag tells
+<code>rtag</code> to create a branch (rather than just a
+symbolic revision name). Note that the numeric
+revision number that matches ‘<samp>rel-1-0</samp>’ will
+probably be different from file to file.
+</p>
+<p>So, the full effect of the command is to create a new
+branch – named ‘<samp>rel-1-0-patches</samp>’ – in
module
+‘<samp>tc</samp>’, rooted in the revision tree at the point tagged
+by ‘<samp>rel-1-0</samp>’.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Accessing-branches.html#Accessing-branches" accesskey="n"
rel="next">Accessing branches</a>, Previous: <a
href="Branches-motivation.html#Branches-motivation" accesskey="p"
rel="prev">Branches motivation</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Creating-a-repository.html
===================================================================
RCS file: html_node/Creating-a-repository.html
diff -N html_node/Creating-a-repository.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Creating-a-repository.html 28 Dec 2015 15:57:52 -0000
1.1
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Creating a
repository</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Creating a repository">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Creating a repository">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Backing-up.html#Backing-up" rel="next" title="Backing up">
+<link href="Multiple-repositories.html#Multiple-repositories" rel="prev"
title="Multiple repositories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Creating-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="Backing-up.html#Backing-up" accesskey="n" rel="next">Backing
up</a>, Previous: <a href="Multiple-repositories.html#Multiple-repositories"
accesskey="p" rel="prev">Multiple repositories</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Creating-a-repository-1"></a>
+<h3 class="section">2.6 Creating a repository</h3>
+
+<a name="index-Repository_002c-setting-up"></a>
+<a name="index-Creating-a-repository"></a>
+<a name="index-Setting-up-a-repository"></a>
+
+<p>This section describes how to set up a <small>CVS</small> repository for any
+sort of access method. After completing the setup described in this
+section, you should be able to access your <small>CVS</small> repository
immediately
+via the local access method and several remote access methods. For
+more information on setting up remote access to the repository you create
+in this section, please read the section on See <a
href="Remote-repositories.html#Remote-repositories">Remote repositories</a>.
+</p>
+<p>To set up a <small>CVS</small> repository, first choose the
+machine and disk on which you want to store the
+revision history of the source files. CPU and memory
+requirements are modest, so most machines should be
+adequate. For details see <a
href="Server-requirements.html#Server-requirements">Server requirements</a>.
+</p>
+<p>To estimate disk space
+requirements, if you are importing RCS files from
+another system, the size of those files is the
+approximate initial size of your repository, or if you
+are starting without any version history, a rule of
+thumb is to allow for the server approximately three
+times the size of the code to be under <small>CVS</small> for the
+repository (you will eventually outgrow this, but not
+for a while). On the machines on which the developers
+will be working, you’ll want disk space for
+approximately one working directory for each developer
+(either the entire tree or a portion of it, depending
+on what each developer uses).
+</p>
+<p>The repository should be accessible
+(directly or via a networked file system) from all
+machines which want to use <small>CVS</small> in server or local
+mode; the client machines need not have any access to
+it other than via the <small>CVS</small> protocol. It is not
+possible to use <small>CVS</small> to read from a repository
+which one only has read access to; <small>CVS</small> needs to be
+able to create lock files (see <a
href="Concurrency.html#Concurrency">Concurrency</a>).
+</p>
+<a name="index-init-_0028subcommand_0029"></a>
+<p>To create a repository, run the <code>cvs init</code>
+command. It will set up an empty repository in the
+<small>CVS</small> root specified in the usual way
+(see <a href="Repository.html#Repository">Repository</a>). For example,
+</p>
+<div class="example">
+<pre class="example">cvs -d /usr/local/cvsroot init
+</pre></div>
+
+<p><code>cvs init</code> is careful to never overwrite any
+existing files in the repository, so no harm is done if
+you run <code>cvs init</code> on an already set-up
+repository.
+</p>
+<p><code>cvs init</code> will enable history logging; if you
+don’t want that, remove the history file after running
+<code>cvs init</code>. See <a href="history-file.html#history-file">history
file</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Backing-up.html#Backing-up" accesskey="n" rel="next">Backing
up</a>, Previous: <a href="Multiple-repositories.html#Multiple-repositories"
accesskey="p" rel="prev">Multiple repositories</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Credits.html
===================================================================
RCS file: html_node/Credits.html
diff -N html_node/Credits.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Credits.html 28 Dec 2015 15:57:53 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Credits</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Credits">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Credits">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="BUGS.html#BUGS" rel="next" title="BUGS">
+<link href="Other-problems.html#Other-problems" rel="prev" title="Other
problems">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Credits"></a>
+<div class="header">
+<p>
+Next: <a href="BUGS.html#BUGS" accesskey="n" rel="next">BUGS</a>, Previous: <a
href="Troubleshooting.html#Troubleshooting" accesskey="p"
rel="prev">Troubleshooting</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Credits-1"></a>
+<h2 class="appendix">Appendix G Credits</h2>
+
+<a name="index-Contributors-_0028manual_0029"></a>
+<a name="index-Credits-_0028manual_0029"></a>
+<p>Roland Pesch, then of Cygnus Support <<tt>address@hidden</tt>>
+wrote the manual pages which were distributed with
+<small>CVS</small> 1.3. Much of their text was copied into this
+manual. He also read an early draft
+of this manual and contributed many ideas and
+corrections.
+</p>
+<p>The mailing-list <code>info-cvs</code> is sometimes
+informative. I have included information from postings
+made by the following persons:
+David G. Grubbs <<tt>address@hidden</tt>>.
+</p>
+<p>Some text has been extracted from the man pages for
+<small>RCS</small>.
+</p>
+<p>The <small>CVS</small> <small>FAQ</small> by David G. Grubbs has provided
+useful material. The <small>FAQ</small> is no longer maintained,
+however, and this manual is about the closest thing there
+is to a successor (with respect to documenting how to
+use <small>CVS</small>, at least).
+</p>
+<p>In addition, the following persons have helped by
+telling me about mistakes I’ve made:
+</p>
+<div class="display">
+<pre class="display">Roxanne Brunskill <<tt>address@hidden</tt>>,
+Kathy Dyer <<tt>address@hidden</tt>>,
+Karl Pingle <<tt>address@hidden</tt>>,
+Thomas A Peterson <<tt>address@hidden</tt>>,
+Inge Wallin <<tt>address@hidden</tt>>,
+Dirk Koschuetzki <<tt>address@hidden</tt>>
+and Michael Brown <<tt>address@hidden</tt>>.
+</pre></div>
+
+<p>The list of contributors here is not comprehensive; for a more
+complete list of who has contributed to this manual see
+the file <samp>doc/ChangeLog</samp> in the <small>CVS</small> source
+distribution.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Defining-the-module.html
===================================================================
RCS file: html_node/Defining-the-module.html
diff -N html_node/Defining-the-module.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Defining-the-module.html 28 Dec 2015 15:57:53 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Defining the
module</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Defining the module">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Defining the module">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Starting-a-new-project.html#Starting-a-new-project" rel="up"
title="Starting a new project">
+<link href="Revisions.html#Revisions" rel="next" title="Revisions">
+<link href="From-scratch.html#From-scratch" rel="prev" title="From scratch">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Defining-the-module"></a>
+<div class="header">
+<p>
+Previous: <a href="Setting-up-the-files.html#Setting-up-the-files"
accesskey="p" rel="prev">Setting up the files</a>, Up: <a
href="Starting-a-new-project.html#Starting-a-new-project" accesskey="u"
rel="up">Starting a new project</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-the-module-1"></a>
+<h3 class="section">3.2 Defining the module</h3>
+<a name="index-Defining-a-module"></a>
+<a name="index-Editing-the-modules-file"></a>
+<a name="index-Module_002c-defining"></a>
+<a name="index-Modules-file_002c-changing"></a>
+
+<p>The next step is to define the module in the
+<samp>modules</samp> file. This is not strictly necessary,
+but modules can be convenient in grouping together
+related files and directories.
+</p>
+<p>In simple cases these steps are sufficient to define a module.
+</p>
+<ol>
+<li> Get a working copy of the modules file.
+
+<div class="example">
+<pre class="example">$ cvs checkout CVSROOT/modules
+$ cd CVSROOT
+</pre></div>
+
+</li><li> Edit the file and insert a line that defines the module. See <a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a>, for an introduction. See <a
href="modules.html#modules">modules</a>, for a full
+description of the modules file. You can use the
+following line to define the module ‘<samp>tc</samp>’:
+
+<div class="example">
+<pre class="example">tc yoyodyne/tc
+</pre></div>
+
+</li><li> Commit your changes to the modules file.
+
+<div class="example">
+<pre class="example">$ cvs commit -m "Added the tc module." modules
+</pre></div>
+
+</li><li> Release the modules module.
+
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs release -d CVSROOT
+</pre></div>
+</li></ol>
+
+
+
+
+</body>
+</html>
Index: html_node/Editing-files.html
===================================================================
RCS file: html_node/Editing-files.html
diff -N html_node/Editing-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Editing-files.html 28 Dec 2015 15:57:53 -0000 1.1
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Editing files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Editing files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Editing files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Watches.html#Watches" rel="up" title="Watches">
+<link href="Watch-information.html#Watch-information" rel="next" title="Watch
information">
+<link href="Getting-Notified.html#Getting-Notified" rel="prev" title="Getting
Notified">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Editing-files"></a>
+<div class="header">
+<p>
+Next: <a href="Watch-information.html#Watch-information" accesskey="n"
rel="next">Watch information</a>, Previous: <a
href="Getting-Notified.html#Getting-Notified" accesskey="p" rel="prev">Getting
Notified</a>, Up: <a href="Watches.html#Watches" accesskey="u"
rel="up">Watches</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-to-edit-a-file-which-is-being-watched"></a>
+<h4 class="subsection">10.6.3 How to edit a file which is being watched</h4>
+
+<a name="index-Checkout_002c-as-term-for-getting-ready-to-edit"></a>
+<p>Since a file which is being watched is checked out
+read-only, you cannot simply edit it. To make it
+read-write, and inform others that you are planning to
+edit it, use the <code>cvs edit</code> command. Some systems
+call this a <em>checkout</em>, but <small>CVS</small> uses that term
+for obtaining a copy of the sources (see <a
href="Getting-the-source.html#Getting-the-source">Getting the source</a>), an
operation which those systems call a
+<em>get</em> or a <em>fetch</em>.
+</p>
+<a name="index-edit-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-edit"></a>Command: <strong>cvs edit</strong>
<em>[<code>-lR</code>] [<code>-a</code> <var>action</var>]…
[<var>files</var>]…</em></dt>
+<dd>
+<p>Prepare to edit the working files <var>files</var>. <small>CVS</small>
makes the
+<var>files</var> read-write, and notifies users who have requested
+<code>edit</code> notification for any of <var>files</var>.
+</p>
+<p>The <code>cvs edit</code> command accepts the same options as the
+<code>cvs watch add</code> command, and establishes a temporary watch for the
+user on <var>files</var>; <small>CVS</small> will remove the watch when
<var>files</var> are
+<code>unedit</code>ed or <code>commit</code>ted. If the user does not wish to
+receive notifications, she should specify <code>-a none</code>.
+</p>
+<p>The <var>files</var> and the options are processed as for the <code>cvs
+watch</code> commands.
+</p>
+
+</dd></dl>
+
+<p>Normally when you are done with a set of changes, you
+use the <code>cvs commit</code> command, which checks in your
+changes and returns the watched files to their usual
+read-only state. But if you instead decide to abandon
+your changes, or not to make any changes, you can use
+the <code>cvs unedit</code> command.
+</p>
+<a name="index-unedit-_0028subcommand_0029"></a>
+<a name="index-Abandoning-work"></a>
+<a name="index-Reverting-to-repository-version"></a>
+<dl>
+<dt><a name="index-cvs-unedit"></a>Command: <strong>cvs unedit</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>Abandon work on the working files <var>files</var>, and revert them to the
+repository versions on which they are based. <small>CVS</small> makes those
+<var>files</var> read-only for which users have requested notification using
+<code>cvs watch on</code>. <small>CVS</small> notifies users who have
requested <code>unedit</code>
+notification for any of <var>files</var>.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+<p>If watches are not in use, the <code>unedit</code> command
+probably does not work, and the way to revert to the
+repository version is with the command <code>cvs update -C file</code>
+(see <a href="update.html#update">update</a>).
+The meaning is
+not precisely the same; the latter may also
+bring in some changes which have been made in the
+repository since the last time you updated.
+</p></dd></dl>
+
+<p>When using client/server <small>CVS</small>, you can use the
+<code>cvs edit</code> and <code>cvs unedit</code> commands even if
+<small>CVS</small> is unable to successfully communicate with the
+server; the notifications will be sent upon the next
+successful <small>CVS</small> command.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Watch-information.html#Watch-information" accesskey="n"
rel="next">Watch information</a>, Previous: <a
href="Getting-Notified.html#Getting-Notified" accesskey="p" rel="prev">Getting
Notified</a>, Up: <a href="Watches.html#Watches" accesskey="u"
rel="up">Watches</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Environment-variables.html
===================================================================
RCS file: html_node/Environment-variables.html
diff -N html_node/Environment-variables.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Environment-variables.html 28 Dec 2015 15:57:53 -0000
1.1
@@ -0,0 +1,262 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Environment
variables</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Environment variables">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Environment variables">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Compatibility.html#Compatibility" rel="next" title="Compatibility">
+<link href="config.html#config" rel="prev" title="config">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Environment-variables"></a>
+<div class="header">
+<p>
+Next: <a href="Compatibility.html#Compatibility" accesskey="n"
rel="next">Compatibility</a>, Previous: <a
href="Administrative-files.html#Administrative-files" accesskey="p"
rel="prev">Administrative files</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="All-environment-variables-which-affect-CVS"></a>
+<h2 class="appendix">Appendix D All environment variables which affect CVS</h2>
+<a name="index-Environment-variables"></a>
+<a name="index-Reference-manual-for-variables"></a>
+
+<p>This is a complete list of all environment variables
+that affect <small>CVS</small>.
+</p>
+<dl compact="compact">
+<dd><a name="index-CVSIGNORE_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVSIGNORE</code></dt>
+<dd><p>A whitespace-separated list of file name patterns that
+<small>CVS</small> should ignore. See <a
href="cvsignore.html#cvsignore">cvsignore</a>.
+</p>
+<a name="index-CVSWRAPPERS_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$CVSWRAPPERS</code></dt>
+<dd><p>A whitespace-separated list of file name patterns that
+<small>CVS</small> should treat as wrappers. See <a
href="Wrappers.html#Wrappers">Wrappers</a>.
+</p>
+<a name="index-CVSREAD_002c-environment-variable"></a>
+<a name="index-Read_002donly-files_002c-and-CVSREAD"></a>
+</dd>
+<dt><code>$CVSREAD</code></dt>
+<dd><p>If this is set, <code>checkout</code> and <code>update</code> will
+try hard to make the files in your working directory
+read-only. When this is not set, the default behavior
+is to permit modification of your working files.
+</p>
+</dd>
+<dt><code>$CVSUMASK</code></dt>
+<dd><p>Controls permissions of files in the repository. See
+<a href="File-permissions.html#File-permissions">File permissions</a>.
+</p>
+</dd>
+<dt><code>$CVSROOT</code></dt>
+<dd><p>Should contain the full pathname to the root of the <small>CVS</small>
+source repository (where the <small>RCS</small> files are
+kept). This information must be available to <small>CVS</small> for
+most commands to execute; if <code>$CVSROOT</code> is not set,
+or if you wish to override it for one invocation, you
+can supply it on the command line: ‘<samp>cvs -d cvsroot
+cvs_command…</samp>’ Once you have checked out a working
+directory, <small>CVS</small> stores the appropriate root (in
+the file <samp>CVS/Root</samp>), so normally you only need to
+worry about this when initially checking out a working
+directory.
+</p>
+</dd>
+<dt><code>$CVSEDITOR</code></dt>
+<dd><a name="index-CVSEDITOR_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$EDITOR</code></dt>
+<dd><a name="index-EDITOR_002c-environment-variable-1"></a>
+</dd>
+<dt><code>$VISUAL</code></dt>
+<dd><a name="index-VISUAL_002c-environment-variable-1"></a>
+<p>Specifies the program to use for recording log messages
+during commit. <code>$CVSEDITOR</code> overrides
+<code>$EDITOR</code>, which overrides <code>$VISUAL</code>.
+See <a href="Committing-your-changes.html#Committing-your-changes">Committing
your changes</a> for more or
+<a href="Global-options.html#Global-options">Global options</a> for
alternative ways of specifying a
+log editor.
+</p>
+<a name="index-PATH_002c-environment-variable"></a>
+</dd>
+<dt><code>$PATH</code></dt>
+<dd><p>If <code>$RCSBIN</code> is not set, and no path is compiled
+into <small>CVS</small>, it will use <code>$PATH</code> to try to find all
+programs it uses.
+</p>
+<a name="index-HOME_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOME</code></dt>
+<dd><a name="index-HOMEPATH_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOMEPATH</code></dt>
+<dd><a name="index-HOMEDRIVE_002c-environment-variable"></a>
+</dd>
+<dt><code>$HOMEDRIVE</code></dt>
+<dd><p>Used to locate the directory where the <samp>.cvsrc</samp>
+file, and other such files, are searched. On Unix, <small>CVS</small>
+just checks for <code>HOME</code>. On Windows NT, the system will
+set <code>HOMEDRIVE</code>, for example to ‘<samp>d:</samp>’ and
<code>HOMEPATH</code>,
+for example to <samp>\joe</samp>. On Windows 95, you’ll
+probably need to set <code>HOMEDRIVE</code> and <code>HOMEPATH</code> yourself.
+</p>
+<a name="index-CVS_005fRSH_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_RSH</code></dt>
+<dd><p>Specifies the external program which <small>CVS</small> connects with,
+when <code>:ext:</code> access method is specified.
+see <a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a>.
+</p>
+<a name="index-CVS_005fSSH_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_SSH</code></dt>
+<dd><p>Specifies the external program which <small>CVS</small> connects with,
+when <code>:extssh:</code> access method is specified.
+see <a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a>.
+</p>
+</dd>
+<dt><code>$CVS_SERVER</code></dt>
+<dd><p>Used in client-server mode when accessing a remote
+repository using <small>RSH</small>. It specifies the name of
+the program to start on the server side (and any
+necessary arguments) when accessing a remote repository
+using the <code>:ext:</code>, <code>:fork:</code>, or <code>:server:</code>
access methods.
+The default value for <code>:ext:</code> and <code>:server:</code> is
<code>cvs</code>;
+the default value for <code>:fork:</code> is the name used to run the client.
+see <a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via rsh</a>
+</p>
+</dd>
+<dt><code>$CVS_PASSFILE</code></dt>
+<dd><p>Used in client-server mode when accessing the <code>cvs
+login server</code>. Default value is <samp>$HOME/.cvspass</samp>.
+see <a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a>
+</p>
+</dd>
+<dt><code>$CVS_CLIENT_PORT</code></dt>
+<dd><p>Used in client-server mode to set the port to use when accessing the
server
+via Kerberos, GSSAPI, or <small>CVS</small>’s password authentication
protocol
+if the port is not specified in the CVSROOT.
+see <a href="Remote-repositories.html#Remote-repositories">Remote
repositories</a>
+</p>
+<a name="index-CVS_005fRCMD_005fPORT_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_RCMD_PORT</code></dt>
+<dd><p>Used in client-server mode. If set, specifies the port
+number to be used when accessing the <small>RCMD</small> demon on
+the server side. (Currently not used for Unix clients).
+</p>
+<a name="index-CVS_005fCLIENT_005fLOG_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_CLIENT_LOG</code></dt>
+<dd><p>Used for debugging only in client-server
+mode. If set, everything sent to the server is logged
+into <samp><code>$CVS_CLIENT_LOG</code>.in</samp> and everything
+sent from the server is logged into
+<samp><code>$CVS_CLIENT_LOG</code>.out</samp>.
+</p>
+<a name="index-CVS_005fSERVER_005fSLEEP_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_SERVER_SLEEP</code></dt>
+<dd><p>Used only for debugging the server side in
+client-server mode. If set, delays the start of the
+server child process the specified amount of
+seconds so that you can attach to it with a debugger.
+</p>
+<a
name="index-CVS_005fIGNORE_005fREMOTE_005fROOT_002c-environment-variable"></a>
+</dd>
+<dt><code>$CVS_IGNORE_REMOTE_ROOT</code></dt>
+<dd><p>For <small>CVS</small> 1.10 and older, setting this variable
+prevents <small>CVS</small> from overwriting the <samp>CVS/Root</samp>
+file when the ‘<samp>-d</samp>’ global option is specified.
+Later versions of <small>CVS</small> do not rewrite
+<samp>CVS/Root</samp>, so <code>CVS_IGNORE_REMOTE_ROOT</code> has no
+effect.
+</p>
+<a name="index-COMSPEC_002c-environment-variable"></a>
+</dd>
+<dt><code>$COMSPEC</code></dt>
+<dd><p>Used under OS/2 only. It specifies the name of the
+command interpreter and defaults to <small>CMD.EXE</small>.
+</p>
+<a name="index-TMPDIR_002c-environment-variable"></a>
+</dd>
+<dt><code>$TMPDIR</code></dt>
+<dd><a name="index-TMP_002c-environment-variable"></a>
+</dd>
+<dt><code>$TMP</code></dt>
+<dd><a name="index-TEMP_002c-environment-variable"></a>
+</dd>
+<dt><code>$TEMP</code></dt>
+<dd><a name="index-Temporary-files_002c-location-of"></a>
+<p>Directory in which temporary files are located.
+The <small>CVS</small> server uses
+<code>TMPDIR</code>. See <a href="Global-options.html#Global-options">Global
options</a>, for a
+description of how to specify this.
+Some parts of <small>CVS</small> will always use <samp>/tmp</samp> (via
+the <code>tmpnam</code> function provided by the system).
+</p>
+<p>On Windows NT, <code>TMP</code> is used (via the <code>_tempnam</code>
+function provided by the system).
+</p>
+<p>The <code>patch</code> program which is used by the <small>CVS</small>
+client uses <code>TMPDIR</code>, and if it is not set, uses
+<samp>/tmp</samp> (at least with GNU patch 2.1). Note that
+if your server and client are both running <small>CVS</small>
+1.9.10 or later, <small>CVS</small> will not invoke an external
+<code>patch</code> program.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Compatibility.html#Compatibility" accesskey="n"
rel="next">Compatibility</a>, Previous: <a
href="Administrative-files.html#Administrative-files" accesskey="p"
rel="prev">Administrative files</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Error-messages.html
===================================================================
RCS file: html_node/Error-messages.html
diff -N html_node/Error-messages.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Error-messages.html 28 Dec 2015 15:57:53 -0000 1.1
@@ -0,0 +1,508 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Error messages</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Error messages">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Error messages">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Troubleshooting.html#Troubleshooting" rel="up"
title="Troubleshooting">
+<link href="Connection.html#Connection" rel="next" title="Connection">
+<link href="Troubleshooting.html#Troubleshooting" rel="prev"
title="Troubleshooting">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Error-messages"></a>
+<div class="header">
+<p>
+Next: <a href="Connection.html#Connection" accesskey="n"
rel="next">Connection</a>, Up: <a href="Troubleshooting.html#Troubleshooting"
accesskey="u" rel="up">Troubleshooting</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Partial-list-of-error-messages"></a>
+<h3 class="appendixsec">F.1 Partial list of error messages</h3>
+
+<p>Here is a partial list of error messages that you may
+see from <small>CVS</small>. It is not a complete
list—<small>CVS</small>
+is capable of printing many, many error messages, often
+with parts of them supplied by the operating system,
+but the intention is to list the common and/or
+potentially confusing error messages.
+</p>
+<p>The messages are alphabetical, but introductory text
+such as ‘<samp>cvs update: </samp>’ is not considered in
+ordering them.
+</p>
+<p>In some cases the list includes messages printed by old
+versions of <small>CVS</small> (partly because users may not be
+sure which version of <small>CVS</small> they are using at any
+particular moment).
+</p>
+<dl compact="compact">
+<dt><code><var>file</var>:<var>line</var>: Assertion '<var>text</var>'
failed</code></dt>
+<dd><p>The exact format of this message may vary depending on
+your system. It indicates a bug in <small>CVS</small>, which can
+be handled as described in <a href="BUGS.html#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>cvs <var>command</var>: authorization failed: server <var>host</var>
rejected access</code></dt>
+<dd><p>This is a generic response when trying to connect to a
+pserver server which chooses not to provide a
+specific reason for denying authorization. Check that
+the username and password specified are correct and
+that the <code>CVSROOT</code> specified is allowed by
‘<samp>--allow-root</samp>’
+in <samp>inetd.conf</samp>. See <a
href="Password-authenticated.html#Password-authenticated">Password
authenticated</a>.
+</p>
+</dd>
+<dt><code>cvs <var>command</var>: conflict: removed <var>file</var> was
modified by second party</code></dt>
+<dd><p>This message indicates that you removed a file, and
+someone else modified it. To resolve the conflict,
+first run ‘<samp>cvs add <var>file</var></samp>’. If desired, look
+at the other party’s modification to decide whether you
+still want to remove it. If you don’t want to remove
+it, stop here. If you do want to remove it, proceed
+with ‘<samp>cvs remove <var>file</var></samp>’ and commit your
+removal.
+</p>
+</dd>
+<dt><code>cannot change permissions on temporary directory</code></dt>
+<dd><div class="example">
+<pre class="example">Operation not permitted
+</pre></div>
+<p>This message has been happening in a non-reproducible,
+occasional way when we run the client/server testsuite,
+both on Red Hat Linux 3.0.3 and 4.1. We haven’t been
+able to figure out what causes it, nor is it known
+whether it is specific to Linux (or even to this
+particular machine!). If the problem does occur on
+other unices, ‘<samp>Operation not permitted</samp>’ would be
+likely to read ‘<samp>Not owner</samp>’ or whatever the system
+in question uses for the unix <code>EPERM</code> error. If
+you have any information to add, please let us know as
+described in <a href="BUGS.html#BUGS">BUGS</a>. If you experience this error
+while using <small>CVS</small>, retrying the operation which
+produced it should work fine.
+</p>
+</dd>
+<dt><code>cvs [server aborted]: Cannot check out files into the repository
itself</code></dt>
+<dd><p>The obvious cause for this message (especially for
+non-client/server <small>CVS</small>) is that the <small>CVS</small> root
+is, for example, <samp>/usr/local/cvsroot</samp> and you try
+to check out files when you are in a subdirectory, such
+as <samp>/usr/local/cvsroot/test</samp>. However, there is a
+more subtle cause, which is that the temporary
+directory on the server is set to a subdirectory of the
+root (which is also not allowed). If this is the
+problem, set the temporary directory to somewhere else,
+for example <samp>/var/tmp</samp>; see <code>TMPDIR</code> in
+<a href="Environment-variables.html#Environment-variables">Environment
variables</a>, for how to set the
+temporary directory.
+</p>
+</dd>
+<dt><code>cannot commit files as 'root'</code></dt>
+<dd><p>See ‘<samp>'root' is not allowed to commit files</samp>’.
+</p>
+</dd>
+<dt><code>cannot open CVS/Entries for reading: No such file or
directory</code></dt>
+<dd><p>This generally indicates a <small>CVS</small> internal error, and
+can be handled as with other <small>CVS</small> bugs
+(see <a href="BUGS.html#BUGS">BUGS</a>). Usually there is a
workaround—the
+exact nature of which would depend on the situation but
+which hopefully could be figured out.
+</p>
+</dd>
+<dt><code>cvs [init aborted]: cannot open CVS/Root: No such file or
directory</code></dt>
+<dd><p>This message is harmless. Provided it is not
+accompanied by other errors, the operation has
+completed successfully. This message should not occur
+with current versions of <small>CVS</small>, but it is documented
+here for the benefit of <small>CVS</small> 1.9 and older.
+</p>
+</dd>
+<dt><code>cvs server: cannot open /root/.cvsignore: Permission
denied</code></dt>
+<dt><code>cvs [server aborted]: can't chdir(/root): Permission
denied</code></dt>
+<dd><p>See <a href="Connection.html#Connection">Connection</a>.
+</p>
+</dd>
+<dt><code>cvs [checkout aborted]: cannot rename file <var>file</var> to
CVS/,,<var>file</var>: Invalid argument</code></dt>
+<dd><p>This message has been reported as intermittently
+happening with <small>CVS</small> 1.9 on Solaris 2.5. The cause is
+unknown; if you know more about what causes it, let us
+know as described in <a href="BUGS.html#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>cvs [<var>command</var> aborted]: cannot start server via
rcmd</code></dt>
+<dd><p>This, unfortunately, is a rather nonspecific error
+message which <small>CVS</small> 1.9 will print if you are
+running the <small>CVS</small> client and it is having trouble
+connecting to the server. Current versions of <small>CVS</small>
+should print a much more specific error message. If
+you get this message when you didn’t mean to run the
+client at all, you probably forgot to specify
+<code>:local:</code>, as described in <a
href="Repository.html#Repository">Repository</a>.
+</p>
+</dd>
+<dt><code>ci: <var>file</var>,v: bad diff output line: Binary files - and
/tmp/T2a22651 differ</code></dt>
+<dd><p><small>CVS</small> 1.9 and older will print this message
+when trying to check in a binary file if
+<small>RCS</small> is not correctly installed. Re-read the
+instructions that came with your <small>RCS</small> distribution
+and the <small>INSTALL</small> file in the <small>CVS</small>
+distribution. Alternately, upgrade to a current
+version of <small>CVS</small>, which checks in files itself
+rather than via <small>RCS</small>.
+</p>
+</dd>
+<dt><code>cvs checkout: could not check out <var>file</var></code></dt>
+<dd><p>With <small>CVS</small> 1.9, this can mean that the <code>co</code>
program
+(part of <small>RCS</small>) returned a failure. It should be
+preceded by another error message, however it has been
+observed without another error message and the cause is
+not well-understood. With the current version of <small>CVS</small>,
+which does not run <code>co</code>, if this message occurs
+without another error message, it is definitely a <small>CVS</small>
+bug (see <a href="BUGS.html#BUGS">BUGS</a>).
+</p>
+</dd>
+<dt><code>cvs [login aborted]: could not find out home directory</code></dt>
+<dd><p>This means that you need to set the environment
+variables that <small>CVS</small> uses to locate your home directory.
+See the discussion of <code>HOME</code>, <code>HOMEDRIVE</code>, and
<code>HOMEPATH</code> in
+<a href="Environment-variables.html#Environment-variables">Environment
variables</a>.
+</p>
+</dd>
+<dt><code>cvs update: could not merge revision <var>rev</var> of
<var>file</var>: No such file or directory</code></dt>
+<dd><p><small>CVS</small> 1.9 and older will print this message if there was
+a problem finding the <code>rcsmerge</code> program. Make
+sure that it is in your <code>PATH</code>, or upgrade to a
+current version of <small>CVS</small>, which does not require
+an external <code>rcsmerge</code> program.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: could not patch <var>file</var>: No such file
or directory</code></dt>
+<dd><p>This means that there was a problem finding the
+<code>patch</code> program. Make sure that it is in your
+<code>PATH</code>. Note that despite appearances the message
+is <em>not</em> referring to whether it can find <var>file</var>.
+If both the client and the server are running a current
+version of <small>CVS</small>, then there is no need for an
+external patch program and you should not see this
+message. But if either client or server is running
+<small>CVS</small> 1.9, then you need <code>patch</code>.
+</p>
+</dd>
+<dt><code>cvs update: could not patch <var>file</var>; will refetch</code></dt>
+<dd><p>This means that for whatever reason the client was
+unable to apply a patch that the server sent. The
+message is nothing to be concerned about, because
+inability to apply the patch only slows things down and
+has no effect on what <small>CVS</small> does.
+</p>
+</dd>
+<dt><code>dying gasps from <var>server</var> unexpected</code></dt>
+<dd><p>There is a known bug in the server for <small>CVS</small> 1.9.18
+and older which can cause this. For me, this was
+reproducible if I used the ‘<samp>-t</samp>’ global option. It
+was fixed by Andy Piper’s 14 Nov 1997 change to
+src/filesubr.c, if anyone is curious.
+If you see the message,
+you probably can just retry the operation which failed,
+or if you have discovered information concerning its
+cause, please let us know as described in <a href="BUGS.html#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>end of file from server (consult above messages if any)</code></dt>
+<dd><p>The most common cause for this message is if you are
+using an external <code>rsh</code> or <code>ssh</code> program and it exited
with
+an error. In this case the <code>rsh</code> program should
+have printed a message, which will appear before the
+above message. For more information on setting up a
+<small>CVS</small> client and server, see <a
href="Remote-repositories.html#Remote-repositories">Remote repositories</a>.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: EOF in key in RCS file
<var>file</var>,v</code></dt>
+<dt><code>cvs [checkout aborted]: EOF while looking for end of string in RCS
file <var>file</var>,v</code></dt>
+<dd><p>This means that there is a syntax error in the given
+<small>RCS</small> file. Note that this might be true even if
<small>RCS</small> can
+read the file OK; <small>CVS</small> does more error checking of
+errors in the RCS file. That is why you may see this
+message when upgrading from <small>CVS</small> 1.9 to <small>CVS</small>
+1.10. The likely cause for the original corruption is
+hardware, the operating system, or the like. Of
+course, if you find a case in which <small>CVS</small> seems to
+corrupting the file, by all means report it,
+(see <a href="BUGS.html#BUGS">BUGS</a>).
+There are quite a few variations of this error message,
+depending on exactly where in the <small>RCS</small> file <small>CVS</small>
+finds the syntax error.
+</p>
+<a name="index-mkmodules"></a>
+</dd>
+<dt><code>cvs commit: Executing 'mkmodules'</code></dt>
+<dd><p>This means that your repository is set up for a version
+of <small>CVS</small> prior to <small>CVS</small> 1.8. When using
<small>CVS</small>
+1.8 or later, the above message will be preceded by
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>If you see both messages, the database is being rebuilt
+twice, which is unnecessary but harmless. If you wish
+to avoid the duplication, and you have no versions of
+<small>CVS</small> 1.7 or earlier in use, remove <code>-i mkmodules</code>
+every place it appears in your <code>modules</code>
+file. For more information on the <code>modules</code> file,
+see <a href="modules.html#modules">modules</a>.
+</p>
+</dd>
+<dt><code>missing author</code></dt>
+<dd><p>Typically this can happen if you created an RCS file
+with your username set to empty. <small>CVS</small> will, bogusly,
+create an illegal RCS file with no value for the author
+field. The solution is to make sure your username is
+set to a non-empty value and re-create the RCS file.
+</p>
+</dd>
+<dt><code>cvs [checkout aborted]: no such tag <var>tag</var></code></dt>
+<dd><p>This message means that <small>CVS</small> isn’t familiar with
+the tag <var>tag</var>. Usually this means that you have
+mistyped a tag name; however there are (relatively
+obscure) cases in which <small>CVS</small> will require you to
+try a few other <small>CVS</small> commands involving that tag,
+before you find one which will cause <small>CVS</small> to update
+<a name="index-CVSROOT_002fval_002dtags-file_002c-forcing-tags-into"></a>
+<a name="index-val_002dtags-file_002c-forcing-tags-into"></a>
+the <samp>val-tags</samp> file; see discussion of val-tags in
+<a href="File-permissions.html#File-permissions">File permissions</a>. You
only need to worry about
+this once for a given tag; when a tag is listed in
+<samp>val-tags</samp>, it stays there. Note that using
+‘<samp>-f</samp>’ to not require tag matches does not override
+this check; see <a href="Common-options.html#Common-options">Common
options</a>.
+</p>
+</dd>
+<dt><code>cvs [<var>command</var> aborted]: out of memory</code></dt>
+<dd><p>There is insufficient (virtual) memory available to continue.
+In client/server mode, the problem is almost certainly on the server
+rather than the client;
+see <a href="Server-requirements.html#Server-requirements">Server
requirements</a> for memory estimates.
+Many systems have limits on the amount of virtual memory that a
+single process can use, so a process can run out of virtual memory
+long before the system itself has run out.
+The method of increasing the per-process limits varies depending
+on the operating system.
+</p>
+</dd>
+<dt><code>*PANIC* administration files missing</code></dt>
+<dd><p>This typically means that there is a directory named
+<small>CVS</small> but it does not contain the administrative files
+which <small>CVS</small> puts in a CVS directory. If the problem is
+that you created a CVS directory via some mechanism
+other than <small>CVS</small>, then the answer is simple, use a name
+other than <small>CVS</small>. If not, it indicates a <small>CVS</small> bug
+(see <a href="BUGS.html#BUGS">BUGS</a>).
+</p>
+</dd>
+<dt><code>rcs error: Unknown option: -x,v/</code></dt>
+<dd><p>This message will be followed by a usage message for
+<small>RCS</small>. It means that you have an old version of
+<small>RCS</small> (probably supplied with your operating
+system), as well as an old version of <small>CVS</small>.
+<small>CVS</small> 1.9.18 and earlier only work with <small>RCS</small>
version 5 and
+later; current versions of <small>CVS</small> do not run <small>RCS</small>
programs.
+</p>
+</dd>
+<dt><code>cvs [server aborted]: received broken pipe signal</code></dt>
+<dd><p>This message can be caused by a loginfo program that fails to
+read all of the log information from its standard input.
+If you find it happening in any other circumstances,
+please let us know as described in <a href="BUGS.html#BUGS">BUGS</a>.
+</p>
+</dd>
+<dt><code>'root' is not allowed to commit files</code></dt>
+<dd><p>When committing a permanent change, <small>CVS</small> makes a log
entry of
+who committed the change. If you are committing the change logged
+in as "root" (not under "su" or other root-priv giving
program),
+<small>CVS</small> cannot determine who is actually making the change.
+As such, by default, <small>CVS</small> disallows changes to be committed by
users
+logged in as "root". (You can disable this option by passing the
+<code>--enable-rootcommit</code> option to <samp>configure</samp> and
recompiling <small>CVS</small>.
+On some systems this means editing the appropriate <samp>config.h</samp> file
+before building <small>CVS</small>.)
+</p>
+</dd>
+<dt><code>Terminated with fatal signal 11</code></dt>
+<dd><p>This message usually indicates that <small>CVS</small> (the server, if
you’re
+using client/server mode) has run out of (virtual) memory.
+Although <small>CVS</small> tries to catch the error and issue a more
meaningful
+message, there are many circumstances where that is not possible.
+If you appear to have lots of memory available to the system,
+the problem is most likely that you’re running into a system-wide
+limit on the amount of memory a single process can use or a
+similar process-specific limit.
+The mechanisms for displaying and setting such limits vary from
+system to system, so you’ll have to consult an expert for your
+particular system if you don’t know how to do that.
+</p>
+</dd>
+<dt><code>Too many arguments!</code></dt>
+<dd><p>This message is typically printed by the <samp>log.pl</samp>
+script which is in the <samp>contrib</samp> directory in the
+<small>CVS</small> source distribution. In some versions of
+<small>CVS</small>, <samp>log.pl</samp> has been part of the default
+<small>CVS</small> installation. The <samp>log.pl</samp> script gets
+called from the <samp>loginfo</samp> administrative file.
+Check that the arguments passed in <samp>loginfo</samp> match
+what your version of <samp>log.pl</samp> expects. In
+particular, the <samp>log.pl</samp> from <small>CVS</small> 1.3 and
+older expects the log file as an argument whereas the
+<samp>log.pl</samp> from <small>CVS</small> 1.5 and newer expects the
+log file to be specified with a ‘<samp>-f</samp>’ option. Of
+course, if you don’t need <samp>log.pl</samp> you can just
+comment it out of <samp>loginfo</samp>.
+</p>
+</dd>
+<dt><code>cvs [update aborted]: unexpected EOF reading
<var>file</var>,v</code></dt>
+<dd><p>See ‘<samp>EOF in key in RCS file</samp>’.
+</p>
+</dd>
+<dt><code>cvs [login aborted]: unrecognized auth response from
<var>server</var></code></dt>
+<dd><p>This message typically means that the server is not set
+up properly. For example, if <samp>inetd.conf</samp> points
+to a nonexistent cvs executable. To debug it further,
+find the log file which inetd writes
+(<samp>/var/log/messages</samp> or whatever inetd uses on
+your system). For details, see <a
href="Connection.html#Connection">Connection</a>, and
+<a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>.
+</p>
+</dd>
+<dt><code>cvs commit: Up-to-date check failed for `<var>file</var>'</code></dt>
+<dd><p>This means that someone else has committed a change to
+that file since the last time that you did a <code>cvs
+update</code>. So before proceeding with your <code>cvs
+commit</code> you need to <code>cvs update</code>. <small>CVS</small> will
merge
+the changes that you made and the changes that the
+other person made. If it does not detect any conflicts
+it will report ‘<samp>M <var>file</var></samp>’ and you are ready
+to <code>cvs commit</code>. If it detects conflicts it will
+print a message saying so, will report ‘<samp>C
<var>file</var></samp>’,
+and you need to manually resolve the
+conflict. For more details on this process see
+<a href="Conflicts-example.html#Conflicts-example">Conflicts example</a>.
+</p>
+</dd>
+<dt><code>Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1
file2 file3</code></dt>
+<dd><div class="example">
+<pre class="example">Only one of [exEX3] allowed
+</pre></div>
+<p>This indicates a problem with the installation of
+<code>diff3</code> and <code>rcsmerge</code>. Specifically
+<code>rcsmerge</code> was compiled to look for GNU diff3, but
+it is finding unix diff3 instead. The exact text of
+the message will vary depending on the system. The
+simplest solution is to upgrade to a current version of
+<small>CVS</small>, which does not rely on external
+<code>rcsmerge</code> or <code>diff3</code> programs.
+</p>
+</dd>
+<dt><code>warning: unrecognized response `<var>text</var>' from cvs
server</code></dt>
+<dd><p>If <var>text</var> contains a valid response (such as
+‘<samp>ok</samp>’) followed by an extra carriage return
+character (on many systems this will cause the second
+part of the message to overwrite the first part), then
+it probably means that you are using the ‘<samp>:ext:</samp>’
+access method with a version of rsh, such as most
+non-unix rsh versions, which does not by default
+provide a transparent data stream. In such cases you
+probably want to try ‘<samp>:server:</samp>’ instead of
+‘<samp>:ext:</samp>’. If <var>text</var> is something else, this
+may signify a problem with your <small>CVS</small> server.
+Double-check your installation against the instructions
+for setting up the <small>CVS</small> server.
+</p>
+</dd>
+<dt><code>cvs commit: [<var>time</var>] waiting for <var>user</var>'s lock in
<var>directory</var></code></dt>
+<dd><p>This is a normal message, not an error. See
+<a href="Concurrency.html#Concurrency">Concurrency</a>, for more details.
+</p>
+</dd>
+<dt><code>cvs commit: warning: editor session failed</code></dt>
+<dd><a name="index-Exit-status_002c-of-editor"></a>
+<p>This means that the editor which <small>CVS</small> is using exits with a
nonzero
+exit status. Some versions of vi will do this even when there was not
+a problem editing the file. If so, point the
+<code>CVSEDITOR</code> environment variable to a small script
+such as:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+vi $*
+exit 0
+</pre></div>
+
+</dd>
+<dt><code>cvs update: warning: <var>file</var> was lost</code></dt>
+<dd><p>This means that the working copy of <var>file</var> has been deleted
+but it has not been removed from <small>CVS</small>.
+This is nothing to be concerned about,
+the update will just recreate the local file from the repository.
+(This is a convenient way to discard local changes to a file:
+just delete it and then run <code>cvs update</code>.)
+</p>
+</dd>
+<dt><code>cvs update: warning: <var>file</var> is not (any longer)
pertinent</code></dt>
+<dd><p>This means that the working copy of <var>file</var> has been deleted,
+it has not been removed from <small>CVS</small> in the current working
directory,
+but it has been removed from <small>CVS</small> in some other working
directory.
+This is nothing to be concerned about,
+the update would have removed the local file anyway.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Connection.html#Connection" accesskey="n"
rel="next">Connection</a>, Up: <a href="Troubleshooting.html#Troubleshooting"
accesskey="u" rel="up">Troubleshooting</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Excluding-directories.html
===================================================================
RCS file: html_node/Excluding-directories.html
diff -N html_node/Excluding-directories.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Excluding-directories.html 28 Dec 2015 15:57:53 -0000
1.1
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Excluding
directories</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Excluding directories">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Excluding directories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Module-options.html#Module-options" rel="next" title="Module
options">
+<link href="Ampersand-modules.html#Ampersand-modules" rel="prev"
title="Ampersand modules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Excluding-directories"></a>
+<div class="header">
+<p>
+Next: <a href="Module-options.html#Module-options" accesskey="n"
rel="next">Module options</a>, Previous: <a
href="Ampersand-modules.html#Ampersand-modules" accesskey="p"
rel="prev">Ampersand modules</a>, Up: <a href="modules.html#modules"
accesskey="u" rel="up">modules</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Excluding-directories-1"></a>
+<h4 class="appendixsubsec">C.1.4 Excluding directories</h4>
+<a name="index-Excluding-directories_002c-in-modules-file"></a>
+<a name="index-_0021_002c-in-modules-file"></a>
+
+<p>An alias module may exclude particular directories from
+other modules by using an exclamation mark (‘<samp>!</samp>’)
+before the name of each directory to be excluded.
+</p>
+<p>For example, if the modules file contains:
+</p>
+<div class="example">
+<pre class="example">exmodule -a !first-dir/sdir first-dir
+</pre></div>
+
+<p>then checking out the module ‘<samp>exmodule</samp>’ will check
+out everything in ‘<samp>first-dir</samp>’ except any files in
+the subdirectory ‘<samp>first-dir/sdir</samp>’.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Exit-status.html
===================================================================
RCS file: html_node/Exit-status.html
diff -N html_node/Exit-status.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Exit-status.html 28 Dec 2015 15:57:54 -0000 1.1
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Exit status</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Exit status">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Exit status">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc" rel="next"
title="~/.cvsrc">
+<link href="Structure.html#Structure" rel="prev" title="Structure">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Exit-status"></a>
+<div class="header">
+<p>
+Next: <a href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc"
accesskey="n" rel="next">~/.cvsrc</a>, Previous: <a
href="Structure.html#Structure" accesskey="p" rel="prev">Structure</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="CVS_0027s-exit-status"></a>
+<h3 class="appendixsec">A.2 CVS’s exit status</h3>
+<a name="index-Exit-status_002c-of-CVS"></a>
+
+<p><small>CVS</small> can indicate to the calling environment whether it
+succeeded or failed by setting its <em>exit status</em>.
+The exact way of testing the exit status will vary from
+one operating system to another. For example in a unix
+shell script the ‘<samp>$?</samp>’ variable will be 0 if the
+last command returned a successful exit status, or
+greater than 0 if the exit status indicated failure.
+</p>
+<p>If <small>CVS</small> is successful, it returns a successful status;
+if there is an error, it prints an error message and
+returns a failure status. The one exception to this is
+the <code>cvs diff</code> command. It will return a
+successful status if it found no differences, or a
+failure status if there were differences or if there
+was an error. Because this behavior provides no good
+way to detect errors, in the future it is possible that
+<code>cvs diff</code> will be changed to behave like the
+other <small>CVS</small> commands.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/File-permissions.html
===================================================================
RCS file: html_node/File-permissions.html
diff -N html_node/File-permissions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/File-permissions.html 28 Dec 2015 15:57:54 -0000 1.1
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: File permissions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: File permissions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
File permissions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="Windows-permissions.html#Windows-permissions" rel="next"
title="Windows permissions">
+<link href="Repository-files.html#Repository-files" rel="prev"
title="Repository files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="File-permissions"></a>
+<div class="header">
+<p>
+Next: <a href="Windows-permissions.html#Windows-permissions" accesskey="n"
rel="next">Windows permissions</a>, Previous: <a
href="Repository-files.html#Repository-files" accesskey="p"
rel="prev">Repository files</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="File-permissions-1"></a>
+<h4 class="subsection">2.2.2 File permissions</h4>
+<a name="index-Security_002c-file-permissions-in-repository"></a>
+<a name="index-File-permissions_002c-general"></a>
+<a name="index-Permissions_002c-general"></a>
+<a name="index-Group_002c-UNIX-file-permissions_002c-in-repository"></a>
+<a name="index-Read_002donly-files_002c-in-repository"></a>
+<p>All ‘<samp>,v</samp>’ files are created read-only, and you
+should not change the permission of those files. The
+directories inside the repository should be writable by
+the persons that have permission to modify the files in
+each directory. This normally means that you must
+create a UNIX group (see group(5)) consisting of the
+persons that are to edit the files in a project, and
+set up the repository so that it is that group that
+owns the directory.
+(On some systems, you also need to set the set-group-ID-on-execution bit
+on the repository directories (see chmod(1)) so that newly-created files
+and directories get the group-ID of the parent directory rather than
+that of the current process.)
+</p>
+
+<p>This means that you can only control access to files on
+a per-directory basis.
+</p>
+<p>Note that users must also have write access to check
+out files, because <small>CVS</small> needs to create lock files
+(see <a href="Concurrency.html#Concurrency">Concurrency</a>). You can use
LockDir in CVSROOT/config
+to put the lock files somewhere other than in the repository
+if you want to allow read-only access to some directories
+(see <a href="config.html#config">config</a>).
+</p>
+<a
name="index-CVSROOT_002fval_002dtags-file_002c-and-read_002donly-access-to-projects"></a>
+<a
name="index-val_002dtags-file_002c-and-read_002donly-access-to-projects"></a>
+<p>Also note that users must have write access to the
+<samp>CVSROOT/val-tags</samp> file. <small>CVS</small> uses it to keep
+track of what tags are valid tag names (it is sometimes
+updated when tags are used, as well as when they are
+created).
+</p>
+<p>Each <small>RCS</small> file will be owned by the user who last
+checked it in. This has little significance; what
+really matters is who owns the directories.
+</p>
+<a name="index-CVSUMASK_002c-environment-variable"></a>
+<a name="index-Umask_002c-for-repository-files"></a>
+<p><small>CVS</small> tries to set up reasonable file permissions
+for new directories that are added inside the tree, but
+you must fix the permissions manually when a new
+directory should have different permissions than its
+parent directory. If you set the <code>CVSUMASK</code>
+environment variable, that will control the file
+permissions which <small>CVS</small> uses in creating directories
+and/or files in the repository. <code>CVSUMASK</code> does
+not affect the file permissions in the working
+directory; such files have the permissions which are
+typical for newly created files, except that sometimes
+<small>CVS</small> creates them read-only (see the sections on
+watches, <a href="Setting-a-watch.html#Setting-a-watch">Setting a watch</a>;
-r, <a href="Global-options.html#Global-options">Global options</a>; or
<code>CVSREAD</code>, <a
href="Environment-variables.html#Environment-variables">Environment
variables</a>).
+</p>
+<p>Note that using the client/server <small>CVS</small>
+(see <a href="Remote-repositories.html#Remote-repositories">Remote
repositories</a>), there is no good way to
+set <code>CVSUMASK</code>; the setting on the client machine
+has no effect. If you are connecting with <code>rsh</code>, you
+can set <code>CVSUMASK</code> in <samp>.bashrc</samp> or <samp>.cshrc</samp>,
as
+described in the documentation for your operating
+system. This behavior might change in future versions
+of <small>CVS</small>; do not rely on the setting of
+<code>CVSUMASK</code> on the client having no effect.
+</p>
+<p>Using pserver, you will generally need stricter
+permissions on the <small>CVSROOT</small> directory and
+directories above it in the tree; see <a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a>.
+</p>
+<a name="index-Setuid"></a>
+<a name="index-Setgid"></a>
+<a name="index-Security_002c-setuid"></a>
+<a name="index-Installed-images-_0028VMS_0029"></a>
+<p>Some operating systems have features which allow a
+particular program to run with the ability to perform
+operations which the caller of the program could not.
+For example, the set user ID (setuid) or set group ID
+(setgid) features of unix or the installed image
+feature of VMS. <small>CVS</small> was not written to use such
+features and therefore attempting to install <small>CVS</small> in
+this fashion will provide protection against only
+accidental lapses; anyone who is trying to circumvent
+the measure will be able to do so, and depending on how
+you have set it up may gain access to more than just
+<small>CVS</small>. You may wish to instead consider pserver. It
+shares some of the same attributes, in terms of
+possibly providing a false sense of security or opening
+security holes wider than the ones you are trying to
+fix, so read the documentation on pserver security
+carefully if you are considering this option
+(<a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Windows-permissions.html#Windows-permissions" accesskey="n"
rel="next">Windows permissions</a>, Previous: <a
href="Repository-files.html#Repository-files" accesskey="p"
rel="prev">Repository files</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/File-status.html
===================================================================
RCS file: html_node/File-status.html
diff -N html_node/File-status.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/File-status.html 28 Dec 2015 15:57:54 -0000 1.1
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: File status</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: File status">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
File status">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Updating-a-file.html#Updating-a-file" rel="next" title="Updating a
file">
+<link href="Multiple-developers.html#Multiple-developers" rel="prev"
title="Multiple developers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="File-status"></a>
+<div class="header">
+<p>
+Next: <a href="Updating-a-file.html#Updating-a-file" accesskey="n"
rel="next">Updating a file</a>, Up: <a
href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="File-status-1"></a>
+<h3 class="section">10.1 File status</h3>
+<a name="index-File-status"></a>
+<a name="index-Status-of-a-file"></a>
+
+<p>Based on what operations you have performed on a
+checked out file, and what operations others have
+performed to that file in the repository, one can
+classify a file in a number of states. The states, as
+reported by the <code>status</code> command, are:
+</p>
+<dl compact="compact">
+<dd><a name="index-Up_002dto_002ddate"></a>
+</dd>
+<dt>Up-to-date</dt>
+<dd><p>The file is identical with the latest revision in the
+repository for the branch in use.
+</p>
+</dd>
+<dt>Locally Modified</dt>
+<dd><a name="index-Locally-Modified"></a>
+<p>You have edited the file, and not yet committed your changes.
+</p>
+</dd>
+<dt>Locally Added</dt>
+<dd><a name="index-Locally-Added"></a>
+<p>You have added the file with <code>add</code>, and not yet
+committed your changes.
+</p>
+</dd>
+<dt>Locally Removed</dt>
+<dd><a name="index-Locally-Removed"></a>
+<p>You have removed the file with <code>remove</code>, and not yet
+committed your changes.
+</p>
+</dd>
+<dt>Needs Checkout</dt>
+<dd><a name="index-Needs-Checkout"></a>
+<p>Someone else has committed a newer revision to the
+repository. The name is slightly misleading; you will
+ordinarily use <code>update</code> rather than
+<code>checkout</code> to get that newer revision.
+</p>
+</dd>
+<dt>Needs Patch</dt>
+<dd><a name="index-Needs-Patch"></a>
+<p>Like Needs Checkout, but the <small>CVS</small> server will send
+a patch rather than the entire file. Sending a patch or
+sending an entire file accomplishes the same thing.
+</p>
+</dd>
+<dt>Needs Merge</dt>
+<dd><a name="index-Needs-Merge"></a>
+<p>Someone else has committed a newer revision to the repository, and you
+have also made modifications to the file.
+</p>
+</dd>
+<dt>Unresolved Conflict</dt>
+<dd><a name="index-Unresolved-Conflict"></a>
+<p>A file with the same name as this new file has been added to the repository
+from a second workspace. This file will need to be moved out of the way
+to allow an <code>update</code> to complete.
+</p>
+</dd>
+<dt>File had conflicts on merge</dt>
+<dd><a name="index-File-had-conflicts-on-merge"></a>
+<p>This is like Locally Modified, except that a previous
+<code>update</code> command gave a conflict. If you have not
+already done so, you need to
+resolve the conflict as described in <a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a>.
+</p>
+</dd>
+<dt>Unknown</dt>
+<dd><a name="index-Unknown"></a>
+<p><small>CVS</small> doesn’t know anything about this file. For
+example, you have created a new file and have not run
+<code>add</code>.
+</p>
+</dd>
+</dl>
+
+<p>To help clarify the file status, <code>status</code> also
+reports the <code>Working revision</code> which is the
+revision that the file in the working directory derives
+from, and the <code>Repository revision</code> which is the
+latest revision in the repository for the branch in
+use.
+</p>
+<p>The options to <code>status</code> are listed in
+<a href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>. For information on
its <code>Sticky tag</code>
+and <code>Sticky date</code> output, see <a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a>.
+For information on its <code>Sticky options</code> output,
+see the ‘<samp>-k</samp>’ option in <a
href="update-options.html#update-options">update options</a>.
+</p>
+<p>You can think of the <code>status</code> and <code>update</code>
+commands as somewhat complementary. You use
+<code>update</code> to bring your files up to date, and you
+can use <code>status</code> to give you some idea of what an
+<code>update</code> would do (of course, the state of the
+repository might change before you actually run
+<code>update</code>). In fact, if you want a command to
+display file status in a more brief format than is
+displayed by the <code>status</code> command, you can invoke
+</p>
+<a name="index-update_002c-to-display-file-status"></a>
+<div class="example">
+<pre class="example">$ cvs -n -q update
+</pre></div>
+
+<p>The ‘<samp>-n</samp>’ option means to not actually do the
+update, but merely to display statuses; the ‘<samp>-q</samp>’
+option avoids printing the name of each directory. For
+more information on the <code>update</code> command, and
+these options, see <a href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Updating-a-file.html#Updating-a-file" accesskey="n"
rel="next">Updating a file</a>, Up: <a
href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/First-import.html
===================================================================
RCS file: html_node/First-import.html
diff -N html_node/First-import.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/First-import.html 28 Dec 2015 15:57:54 -0000 1.1
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: First import</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: First import">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
First import">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Update-imports.html#Update-imports" rel="next" title="Update
imports">
+<link href="Tracking-sources.html#Tracking-sources" rel="prev" title="Tracking
sources">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="First-import"></a>
+<div class="header">
+<p>
+Next: <a href="Update-imports.html#Update-imports" accesskey="n"
rel="next">Update imports</a>, Up: <a
href="Tracking-sources.html#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Importing-for-the-first-time"></a>
+<h3 class="section">13.1 Importing for the first time</h3>
+<a name="index-Importing-modules"></a>
+
+<p>Use the <code>import</code> command to check in the sources
+for the first time. When you use the <code>import</code>
+command to track third-party sources, the <em>vendor
+tag</em> and <em>release tags</em> are useful. The
+<em>vendor tag</em> is a symbolic name for the branch
+(which is always 1.1.1, unless you use the ‘<samp>-b
+<var>branch</var></samp>’ flag—see <a
href="Multiple-vendor-branches.html#Multiple-vendor-branches">Multiple vendor
branches</a>.). The
+<em>release tags</em> are symbolic names for a particular
+release, such as ‘<samp>FSF_0_04</samp>’.
+</p>
+<p>Note that <code>import</code> does <em>not</em> change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a <small>CVS</small> working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (see <a href="Getting-the-source.html#Getting-the-source">Getting
the source</a>).
+</p>
+<a name="index-wdiff-_0028import-example_0029"></a>
+<p>Suppose you have the sources to a program called
+<code>wdiff</code> in a directory <samp>wdiff-0.04</samp>,
+and are going to make private modifications that you
+want to be able to use even when new releases are made
+in the future. You start by importing the source to
+your repository:
+</p>
+<div class="example">
+<pre class="example">$ cd wdiff-0.04
+$ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
+</pre></div>
+
+<p>The vendor tag is named ‘<samp>FSF_DIST</samp>’ in the above
+example, and the only release tag assigned is
+‘<samp>WDIFF_0_04</samp>’.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/From-files.html
===================================================================
RCS file: html_node/From-files.html
diff -N html_node/From-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/From-files.html 28 Dec 2015 15:57:54 -0000 1.1
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: From files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: From files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
From files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Setting-up-the-files.html#Setting-up-the-files" rel="up"
title="Setting up the files">
+<link
href="From-other-version-control-systems.html#From-other-version-control-systems"
rel="next" title="From other version control systems">
+<link href="Setting-up-the-files.html#Setting-up-the-files" rel="prev"
title="Setting up the files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="From-files"></a>
+<div class="header">
+<p>
+Next: <a
href="From-other-version-control-systems.html#From-other-version-control-systems"
accesskey="n" rel="next">From other version control systems</a>, Up: <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="u"
rel="up">Setting up the files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Creating-a-directory-tree-from-a-number-of-files"></a>
+<h4 class="subsection">3.1.1 Creating a directory tree from a number of
files</h4>
+<a name="index-Importing-files"></a>
+
+<p>When you begin using <small>CVS</small>, you will probably already have
several
+projects that can be
+put under <small>CVS</small> control. In these cases the easiest way is to
use the
+<code>import</code> command. An example is probably the easiest way to
+explain how to use it. If the files you want to install in
+<small>CVS</small> reside in <samp><var>wdir</var></samp>, and you want them
to appear in the
+repository as <samp>$CVSROOT/yoyodyne/<var>rdir</var></samp>, you can do this:
+</p>
+<div class="example">
+<pre class="example">$ cd <var>wdir</var>
+$ cvs import -m "Imported sources" yoyodyne/<var>rdir</var> yoyo
start
+</pre></div>
+
+<p>Unless you supply a log message with the ‘<samp>-m</samp>’
+flag, <small>CVS</small> starts an editor and prompts for a
+message. The string ‘<samp>yoyo</samp>’ is a <em>vendor tag</em>,
+and ‘<samp>start</samp>’ is a <em>release tag</em>. They may fill
+no purpose in this context, but since <small>CVS</small> requires
+them they must be present. See <a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a>, for
+more information about them.
+</p>
+<p>You can now verify that it worked, and remove your
+original source directory.
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs checkout yoyodyne/<var>rdir</var> # <span
class="roman">Explanation below</span>
+$ diff -r <var>wdir</var> yoyodyne/<var>rdir</var>
+$ rm -r <var>wdir</var>
+</pre></div>
+
+<p>Erasing the original sources is a good idea, to make sure that you do
+not accidentally edit them in <var>wdir</var>, bypassing <small>CVS</small>.
+Of course, it would be wise to make sure that you have
+a backup of the sources before you remove them.
+</p>
+<p>The <code>checkout</code> command can either take a module
+name as argument (as it has done in all previous
+examples) or a path name relative to <code>$CVSROOT</code>,
+as it did in the example above.
+</p>
+<p>It is a good idea to check that the permissions
+<small>CVS</small> sets on the directories inside <code>$CVSROOT</code>
+are reasonable, and that they belong to the proper
+groups. See <a href="File-permissions.html#File-permissions">File
permissions</a>.
+</p>
+<p>If some of the files you want to import are binary, you
+may want to use the wrappers features to specify which
+files are binary and which are not. See <a
href="Wrappers.html#Wrappers">Wrappers</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a
href="From-other-version-control-systems.html#From-other-version-control-systems"
accesskey="n" rel="next">From other version control systems</a>, Up: <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="u"
rel="up">Setting up the files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/From-other-version-control-systems.html
===================================================================
RCS file: html_node/From-other-version-control-systems.html
diff -N html_node/From-other-version-control-systems.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/From-other-version-control-systems.html 28 Dec 2015 15:57:55
-0000 1.1
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: From other version
control systems</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: From other version control systems">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
From other version control systems">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Setting-up-the-files.html#Setting-up-the-files" rel="up"
title="Setting up the files">
+<link href="From-scratch.html#From-scratch" rel="next" title="From scratch">
+<link href="From-files.html#From-files" rel="prev" title="From files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="From-other-version-control-systems"></a>
+<div class="header">
+<p>
+Next: <a href="From-scratch.html#From-scratch" accesskey="n" rel="next">From
scratch</a>, Previous: <a href="From-files.html#From-files" accesskey="p"
rel="prev">From files</a>, Up: <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="u"
rel="up">Setting up the files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Creating-Files-From-Other-Version-Control-Systems"></a>
+<h4 class="subsection">3.1.2 Creating Files From Other Version Control
Systems</h4>
+<a name="index-Importing-files_002c-from-other-version-control-systems"></a>
+
+<p>If you have a project which you are maintaining with
+another version control system, such as <small>RCS</small>, you
+may wish to put the files from that project into
+<small>CVS</small>, and preserve the revision history of the
+files.
+</p>
+<dl compact="compact">
+<dd><a name="index-RCS_002c-importing-files-from"></a>
+</dd>
+<dt>From RCS</dt>
+<dd><p>If you have been using <small>RCS</small>, find the <small>RCS</small>
+files—usually a file named <samp>foo.c</samp> will have its
+<small>RCS</small> file in <samp>RCS/foo.c,v</samp> (but it could be
+other places; consult the <small>RCS</small> documentation for
+details). Then create the appropriate directories in
+<small>CVS</small> if they do not already exist. Then copy the
+files into the appropriate directories in the <small>CVS</small>
+repository (the name in the repository must be the name
+of the source file with ‘<samp>,v</samp>’ added; the files go
+directly in the appropriate directory of the repository,
+not in an <samp>RCS</samp> subdirectory). This is one of the
+few times when it is a good idea to access the <small>CVS</small>
+repository directly, rather than using <small>CVS</small>
+commands. Then you are ready to check out a new
+working directory.
+</p>
+<p>The <small>RCS</small> file should not be locked when you move it
+into <small>CVS</small>; if it is, <small>CVS</small> will have trouble
+letting you operate on it.
+</p>
+</dd>
+<dt>From another version control system</dt>
+<dd><p>Many version control systems have the ability to export
+<small>RCS</small> files in the standard format. If yours does,
+export the <small>RCS</small> files and then follow the above
+instructions.
+</p>
+<p>Failing that, probably your best bet is to write a
+script that will check out the files one revision at a
+time using the command line interface to the other
+system, and then check the revisions into <small>CVS</small>.
+The <samp>sccs2rcs</samp> script mentioned below may be a
+useful example to follow.
+</p>
+<a name="index-SCCS_002c-importing-files-from"></a>
+</dd>
+<dt>From SCCS</dt>
+<dd><p>There is a script in the <samp>contrib</samp> directory of
+the <small>CVS</small> source distribution called <samp>sccs2rcs</samp>
+which converts <small>SCCS</small> files to <small>RCS</small> files.
+Note: you must run it on a machine which has both
+<small>SCCS</small> and <small>RCS</small> installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary).
+</p>
+<a name="index-PVCS_002c-importing-files-from"></a>
+</dd>
+<dt>From PVCS</dt>
+<dd><p>There is a script in the <samp>contrib</samp> directory of
+the <small>CVS</small> source distribution called <samp>pvcs_to_rcs</samp>
+which converts <small>PVCS</small> archives to <small>RCS</small> files.
+You must run it on a machine which has both
+<small>PVCS</small> and <small>RCS</small> installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary). See the comments in the script for details.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="From-scratch.html#From-scratch" accesskey="n" rel="next">From
scratch</a>, Previous: <a href="From-files.html#From-files" accesskey="p"
rel="prev">From files</a>, Up: <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="u"
rel="up">Setting up the files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/From-scratch.html
===================================================================
RCS file: html_node/From-scratch.html
diff -N html_node/From-scratch.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/From-scratch.html 28 Dec 2015 15:57:55 -0000 1.1
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: From scratch</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: From scratch">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
From scratch">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Setting-up-the-files.html#Setting-up-the-files" rel="up"
title="Setting up the files">
+<link href="Defining-the-module.html#Defining-the-module" rel="next"
title="Defining the module">
+<link
href="From-other-version-control-systems.html#From-other-version-control-systems"
rel="prev" title="From other version control systems">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="From-scratch"></a>
+<div class="header">
+<p>
+Previous: <a
href="From-other-version-control-systems.html#From-other-version-control-systems"
accesskey="p" rel="prev">From other version control systems</a>, Up: <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="u"
rel="up">Setting up the files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Creating-a-directory-tree-from-scratch"></a>
+<h4 class="subsection">3.1.3 Creating a directory tree from scratch</h4>
+
+<p>For a new project, the easiest thing to do is probably
+to create an empty directory structure, like this:
+</p>
+<div class="example">
+<pre class="example">$ mkdir tc
+$ mkdir tc/man
+$ mkdir tc/testing
+</pre></div>
+
+<p>After that, you use the <code>import</code> command to create
+the corresponding (empty) directory structure inside
+the repository:
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs import -m "Created directory structure"
yoyodyne/<var>dir</var> yoyo start
+</pre></div>
+
+<p>This will add yoyodyne/<var>dir</var> as a directory under
+<code>$CVSROOT</code>.
+</p>
+<p>Use <code>checkout</code> to get the new project. Then, use
<code>add</code>
+to add files (and new directories) as needed.
+</p>
+<div class="example">
+<pre class="example">$ cd ..
+$ cvs co yoyodyne/<var>dir</var>
+</pre></div>
+
+<p>Check that the permissions <small>CVS</small> sets on the
+directories inside <code>$CVSROOT</code> are reasonable.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/GSSAPI-authenticated.html
===================================================================
RCS file: html_node/GSSAPI-authenticated.html
diff -N html_node/GSSAPI-authenticated.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/GSSAPI-authenticated.html 28 Dec 2015 15:57:55 -0000 1.1
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: GSSAPI
authenticated</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: GSSAPI authenticated">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
GSSAPI authenticated">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link href="Kerberos-authenticated.html#Kerberos-authenticated" rel="next"
title="Kerberos authenticated">
+<link
href="Password-authentication-security.html#Password-authentication-security"
rel="prev" title="Password authentication security">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="GSSAPI-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="Kerberos-authenticated.html#Kerberos-authenticated"
accesskey="n" rel="next">Kerberos authenticated</a>, Previous: <a
href="Password-authenticated.html#Password-authenticated" accesskey="p"
rel="prev">Password authenticated</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Direct-connection-with-GSSAPI"></a>
+<h4 class="subsection">2.9.4 Direct connection with GSSAPI</h4>
+
+<a name="index-GSSAPI"></a>
+<a name="index-Security_002c-GSSAPI"></a>
+<a name="index-_003agserver_003a_002c-setting-up"></a>
+<a name="index-Kerberos_002c-using-_003agserver_003a"></a>
+<p>GSSAPI is a generic interface to network security
+systems such as Kerberos 5.
+If you have a working GSSAPI library, you can have
+<small>CVS</small> connect via a direct <small>TCP</small> connection,
+authenticating with GSSAPI.
+</p>
+<p>To do this, <small>CVS</small> needs to be compiled with GSSAPI
+support; when configuring <small>CVS</small> it tries to detect
+whether GSSAPI libraries using Kerberos version 5 are
+present. You can also use the <samp>--with-gssapi</samp>
+flag to configure.
+</p>
+<p>The connection is authenticated using GSSAPI, but the
+message stream is <em>not</em> authenticated by default.
+You must use the <code>-a</code> global option to request
+stream authentication.
+</p>
+<p>The data transmitted is <em>not</em> encrypted by
+default. Encryption support must be compiled into both
+the client and the server; use the
+<samp>--enable-encrypt</samp> configure option to turn it on.
+You must then use the <code>-x</code> global option to
+request encryption.
+</p>
+<p>GSSAPI connections are handled on the server side by
+the same server which handles the password
+authentication server; see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>. If you are using a GSSAPI mechanism such as
+Kerberos which provides for strong authentication, you
+will probably want to disable the ability to
+authenticate via cleartext passwords. To do so, create
+an empty <samp>CVSROOT/passwd</samp> password file, and set
+<code>SystemAuth=no</code> in the config file
+(see <a href="config.html#config">config</a>).
+</p>
+<p>The GSSAPI server uses a principal name of
+cvs/<var>hostname</var>, where <var>hostname</var> is the
+canonical name of the server host. You will have to
+set this up as required by your GSSAPI mechanism.
+</p>
+<p>To connect using GSSAPI, use the ‘<samp>:gserver:</samp>’
method. For
+example,
+</p>
+<div class="example">
+<pre class="example">cvs -d :gserver:faun.example.org:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Kerberos-authenticated.html#Kerberos-authenticated"
accesskey="n" rel="next">Kerberos authenticated</a>, Previous: <a
href="Password-authenticated.html#Password-authenticated" accesskey="p"
rel="prev">Password authenticated</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Getting-Notified.html
===================================================================
RCS file: html_node/Getting-Notified.html
diff -N html_node/Getting-Notified.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Getting-Notified.html 28 Dec 2015 15:57:55 -0000 1.1
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Getting Notified</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Getting Notified">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Getting Notified">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Watches.html#Watches" rel="up" title="Watches">
+<link href="Editing-files.html#Editing-files" rel="next" title="Editing files">
+<link href="Setting-a-watch.html#Setting-a-watch" rel="prev" title="Setting a
watch">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Getting-Notified"></a>
+<div class="header">
+<p>
+Next: <a href="Editing-files.html#Editing-files" accesskey="n"
rel="next">Editing files</a>, Previous: <a
href="Setting-a-watch.html#Setting-a-watch" accesskey="p" rel="prev">Setting a
watch</a>, Up: <a href="Watches.html#Watches" accesskey="u"
rel="up">Watches</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Telling-CVS-to-notify-you"></a>
+<h4 class="subsection">10.6.2 Telling CVS to notify you</h4>
+
+<p>You can tell <small>CVS</small> that you want to receive
+notifications about various actions taken on a file.
+You can do this without using <code>cvs watch on</code> for
+the file, but generally you will want to use <code>cvs
+watch on</code>, to remind developers to use the <code>cvs edit</code>
+command.
+</p>
+<a name="index-watch-add-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-add"></a>Command: <strong>cvs watch add</strong>
<em>[<code>-lR</code>] [<code>-a</code> <var>action</var>]…
[<var>files</var>]…</em></dt>
+<dd>
+<p>Add the current user to the list of people to receive notification of
+work done on <var>files</var>.
+</p>
+<p>The <code>-a</code> option specifies what kinds of events
<small>CVS</small> should notify
+the user about. <var>action</var> is one of the following:
+</p>
+<dl compact="compact">
+<dt><code>edit</code></dt>
+<dd><p>Another user has applied the <code>cvs edit</code> command (described
+below) to a watched file.
+</p>
+</dd>
+<dt><code>commit</code></dt>
+<dd><p>Another user has committed changes to one of the named <var>files</var>.
+</p>
+</dd>
+<dt><code>unedit</code></dt>
+<dd><p>Another user has abandoned editing a file (other than by committing
changes).
+They can do this in several ways, by:
+</p>
+<ul>
+<li> applying the <code>cvs unedit</code> command (described below) to the file
+
+</li><li> applying the <code>cvs release</code> command (see <a
href="release.html#release">release</a>) to the file’s parent directory
+(or recursively to a directory more than one level up)
+
+</li><li> deleting the file and allowing <code>cvs update</code> to recreate it
+
+</li></ul>
+
+</dd>
+<dt><code>all</code></dt>
+<dd><p>All of the above.
+</p>
+</dd>
+<dt><code>none</code></dt>
+<dd><p>None of the above. (This is useful with <code>cvs edit</code>,
+described below.)
+</p>
+</dd>
+</dl>
+
+<p>The <code>-a</code> option may appear more than once, or not at all. If
+omitted, the action defaults to <code>all</code>.
+</p>
+<p>The <var>files</var> and options are processed as for
+<code>cvs watch on</code>.
+</p>
+</dd></dl>
+
+
+<a name="index-watch-remove-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-remove"></a>Command: <strong>cvs watch
remove</strong> <em>[<code>-lR</code>] [<code>-a</code>
<var>action</var>]… [<var>files</var>]…</em></dt>
+<dd>
+<p>Remove a notification request established using <code>cvs watch add</code>;
+the arguments are the same. If the <code>-a</code> option is present, only
+watches for the specified actions are removed.
+</p>
+</dd></dl>
+
+<a name="index-notify-_0028admin-file_0029"></a>
+<p>When the conditions exist for notification, <small>CVS</small>
+calls the <samp>notify</samp> administrative file. Edit
+<samp>notify</samp> as one edits the other administrative
+files (see <a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a>). This
+file follows the usual conventions for administrative
+files (see <a href="syntax.html#syntax">syntax</a>), where each line is a
regular
+expression followed by a command to execute. The
+command should contain a single occurrence of ‘<samp>%s</samp>’
+which will be replaced by the user to notify; the rest
+of the information regarding the notification will be
+supplied to the command on standard input. The
+standard thing to put in the <code>notify</code> file is the
+single line:
+</p>
+<div class="example">
+<pre class="example">ALL mail %s -s "CVS notification"
+</pre></div>
+
+<p>This causes users to be notified by electronic mail.
+</p>
+<a name="index-users-_0028admin-file_0029"></a>
+<p>Note that if you set this up in the straightforward
+way, users receive notifications on the server machine.
+One could of course write a <samp>notify</samp> script which
+directed notifications elsewhere, but to make this
+easy, <small>CVS</small> allows you to associate a notification
+address for each user. To do so create a file
+<samp>users</samp> in <samp>CVSROOT</samp> with a line for each
+user in the format <var>user</var>:<var>value</var>. Then
+instead of passing the name of the user to be notified
+to <samp>notify</samp>, <small>CVS</small> will pass the <var>value</var>
+(normally an email address on some other machine).
+</p>
+<p><small>CVS</small> does not notify you for your own changes.
+Currently this check is done based on whether the user
+name of the person taking the action which triggers
+notification matches the user name of the person
+getting notification. In fact, in general, the watches
+features only track one edit by each user. It probably
+would be more useful if watches tracked each working
+directory separately, so this behavior might be worth
+changing.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Editing-files.html#Editing-files" accesskey="n"
rel="next">Editing files</a>, Previous: <a
href="Setting-a-watch.html#Setting-a-watch" accesskey="p" rel="prev">Setting a
watch</a>, Up: <a href="Watches.html#Watches" accesskey="u"
rel="up">Watches</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Getting-the-source.html
===================================================================
RCS file: html_node/Getting-the-source.html
diff -N html_node/Getting-the-source.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Getting-the-source.html 28 Dec 2015 15:57:55 -0000 1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Getting the
source</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Getting the source">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Getting the source">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="A-sample-session.html#A-sample-session" rel="up" title="A sample
session">
+<link href="Committing-your-changes.html#Committing-your-changes" rel="next"
title="Committing your changes">
+<link href="A-sample-session.html#A-sample-session" rel="prev" title="A sample
session">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Getting-the-source"></a>
+<div class="header">
+<p>
+Next: <a href="Committing-your-changes.html#Committing-your-changes"
accesskey="n" rel="next">Committing your changes</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Getting-the-source-1"></a>
+<h4 class="subsection">1.3.1 Getting the source</h4>
+<a name="index-Getting-the-source"></a>
+<a name="index-Checking-out-source"></a>
+<a name="index-Fetching-source"></a>
+<a name="index-Source_002c-getting-from-CVS"></a>
+<a name="index-Checkout_002c-example"></a>
+
+<p>The first thing you must do is to get your own working copy of the
+source for ‘<samp>tc</samp>’. For this, you use the
<code>checkout</code> command:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout tc
+</pre></div>
+
+<p>This will create a new directory called <samp>tc</samp> and populate it with
+the source files.
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ ls
+CVS Makefile backend.c driver.c frontend.c parser.c
+</pre></div>
+
+<p>The <samp>CVS</samp> directory is used internally by
+<small>CVS</small>. Normally, you should not modify or remove
+any of the files in it.
+</p>
+<p>You start your favorite editor, hack away at <samp>backend.c</samp>, and a
couple
+of hours later you have added an optimization pass to the compiler.
+A note to <small>RCS</small> and <small>SCCS</small> users: There is no need
to lock the files that
+you want to edit. See <a
href="Multiple-developers.html#Multiple-developers">Multiple developers</a>,
for an explanation.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Global-options.html
===================================================================
RCS file: html_node/Global-options.html
diff -N html_node/Global-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Global-options.html 28 Dec 2015 15:57:56 -0000 1.1
@@ -0,0 +1,236 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Global options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Global options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Global options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="Common-options.html#Common-options" rel="next" title="Common
options">
+<link href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc" rel="prev"
title="~/.cvsrc">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Global-options"></a>
+<div class="header">
+<p>
+Next: <a href="Common-options.html#Common-options" accesskey="n"
rel="next">Common options</a>, Previous: <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc" accesskey="p"
rel="prev">~/.cvsrc</a>, Up: <a href="CVS-commands.html#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Global-options-1"></a>
+<h3 class="appendixsec">A.4 Global options</h3>
+<a name="index-Options_002c-global"></a>
+<a name="index-Global-options"></a>
+<a name="index-Left_002dhand-options"></a>
+
+<p>The available ‘<samp>cvs_options</samp>’ (that are given to the
+left of ‘<samp>cvs_command</samp>’) are:
+</p>
+<dl compact="compact">
+<dt><code>--allow-root=<var>rootdir</var></code></dt>
+<dd><p>Specify legal <small>CVSROOT</small> directory. See
+<a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>.
+</p>
+<a name="index-Authentication_002c-stream"></a>
+<a name="index-Stream-authentication"></a>
+</dd>
+<dt><code>-a</code></dt>
+<dd><p>Authenticate all communication between the client and
+the server. Only has an effect on the <small>CVS</small> client.
+As of this writing, this is only implemented when using
+a GSSAPI connection (see <a
href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI authenticated</a>).
+Authentication prevents certain sorts of attacks
+involving hijacking the active <small>TCP</small> connection.
+Enabling authentication does not enable encryption.
+</p>
+<a name="index-RCSBIN_002c-overriding"></a>
+<a name="index-Overriding-RCSBIN"></a>
+</dd>
+<dt><code>-b <var>bindir</var></code></dt>
+<dd><p>In <small>CVS</small> 1.9.18 and older, this specified that
+<small>RCS</small> programs are in the <var>bindir</var> directory.
+Current versions of <small>CVS</small> do not run <small>RCS</small>
+programs; for compatibility this option is accepted,
+but it does nothing.
+</p>
+<a name="index-TMPDIR_002c-overriding"></a>
+<a name="index-Overriding-TMPDIR"></a>
+</dd>
+<dt><code>-T <var>tempdir</var></code></dt>
+<dd><p>Use <var>tempdir</var> as the directory where temporary files are
+located. Overrides the setting of the <code>$TMPDIR</code> environment
+variable and any precompiled directory. This parameter should be
+specified as an absolute pathname.
+(When running client/server, ‘<samp>-T</samp>’ affects only the
local process;
+specifying ‘<samp>-T</samp>’ for the client has no effect on the
server and
+vice versa.)
+</p>
+<a name="index-CVSROOT_002c-overriding"></a>
+<a name="index-Overriding-CVSROOT"></a>
+</dd>
+<dt><code>-d <var>cvs_root_directory</var></code></dt>
+<dd><p>Use <var>cvs_root_directory</var> as the root directory
+pathname of the repository. Overrides the setting of
+the <code>$CVSROOT</code> environment variable. See <a
href="Repository.html#Repository">Repository</a>.
+</p>
+<a name="index-EDITOR_002c-overriding"></a>
+<a name="index-Overriding-EDITOR"></a>
+</dd>
+<dt><code>-e <var>editor</var></code></dt>
+<dd><p>Use <var>editor</var> to enter revision log information. Overrides the
+setting of the <code>$CVSEDITOR</code> and <code>$EDITOR</code>
+environment variables. For more information, see
+<a href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Do not read the <samp>~/.cvsrc</samp> file. This
+option is most often used because of the
+non-orthogonality of the <small>CVS</small> option set. For
+example, the ‘<samp>cvs log</samp>’ option
‘<samp>-N</samp>’ (turn off
+display of tag names) does not have a corresponding
+option to turn the display on. So if you have
+‘<samp>-N</samp>’ in the <samp>~/.cvsrc</samp> entry for
‘<samp>log</samp>’,
+you may need to use ‘<samp>-f</samp>’ to show the tag names.
+</p>
+</dd>
+<dt><code>-H</code></dt>
+<dt><code>--help</code></dt>
+<dd><p>Display usage information about the specified
‘<samp>cvs_command</samp>’
+(but do not actually execute the command). If you don’t specify
+a command name, ‘<samp>cvs -H</samp>’ displays overall help for
+<small>CVS</small>, including a list of other help options.
+</p>
+<a name="index-Read_002donly-mode"></a>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not change any files. Attempt to execute the
+‘<samp>cvs_command</samp>’, but only to issue reports; do not
remove,
+update, or merge any existing files, or create any new files.
+</p>
+<p>Note that <small>CVS</small> will not necessarily produce exactly
+the same output as without ‘<samp>-n</samp>’. In some cases
+the output will be the same, but in other cases
+<small>CVS</small> will skip some of the processing that would
+have been required to produce the exact same output.
+</p>
+</dd>
+<dt><code>-Q</code></dt>
+<dd><p>Cause the command to be really quiet; the command will only
+generate output for serious problems.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Cause the command to be somewhat quiet; informational messages,
+such as reports of recursion through subdirectories, are
+suppressed.
+</p>
+<a name="index-Read_002donly-files_002c-and-_002dr"></a>
+</dd>
+<dt><code>-r</code></dt>
+<dd><p>Make new working files read-only. Same effect
+as if the <code>$CVSREAD</code> environment variable is set
+(see <a href="Environment-variables.html#Environment-variables">Environment
variables</a>). The default is to
+make working files writable, unless watches are on
+(see <a href="Watches.html#Watches">Watches</a>).
+</p>
+</dd>
+<dt><code>-s <var>variable</var>=<var>value</var></code></dt>
+<dd><p>Set a user variable (see <a
href="Variables.html#Variables">Variables</a>).
+</p>
+<a name="index-Trace"></a>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Trace program execution; display messages showing the steps of
+<small>CVS</small> activity. Particularly useful with
‘<samp>-n</samp>’ to explore the
+potential impact of an unfamiliar command.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dt><code>--version</code></dt>
+<dd><p>Display version and copyright information for <small>CVS</small>.
+</p>
+<a name="index-CVSREAD_002c-overriding"></a>
+<a name="index-Overriding-CVSREAD"></a>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Make new working files read-write. Overrides the
+setting of the <code>$CVSREAD</code> environment variable.
+Files are created read-write by default, unless <code>$CVSREAD</code> is
+set or ‘<samp>-r</samp>’ is given.
+</p>
+</dd>
+<dt><code>-x</code></dt>
+<dd><a name="index-Encryption"></a>
+<p>Encrypt all communication between the client and the
+server. Only has an effect on the <small>CVS</small> client. As
+of this writing, this is only implemented when using a
+GSSAPI connection (see <a
href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI authenticated</a>)
or a
+Kerberos connection (see <a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a>).
+Enabling encryption implies that message traffic is
+also authenticated. Encryption support is not
+available by default; it must be enabled using a
+special configure option, <samp>--enable-encryption</samp>,
+when you build <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-z <var>gzip-level</var></code></dt>
+<dd><a name="index-Compression"></a>
+<a name="index-Gzip"></a>
+<p>Set the compression level.
+Valid levels are 1 (high speed, low compression) to
+9 (low speed, high compression), or 0 to disable
+compression (the default).
+Only has an effect on the <small>CVS</small> client.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Common-options.html#Common-options" accesskey="n"
rel="next">Common options</a>, Previous: <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc" accesskey="p"
rel="prev">~/.cvsrc</a>, Up: <a href="CVS-commands.html#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/History-browsing.html
===================================================================
RCS file: html_node/History-browsing.html
diff -N html_node/History-browsing.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/History-browsing.html 28 Dec 2015 15:57:56 -0000 1.1
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: History browsing</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: History browsing">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
History browsing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="log-messages.html#log-messages" rel="next" title="log messages">
+<link href="Moving-directories.html#Moving-directories" rel="prev"
title="Moving directories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="History-browsing"></a>
+<div class="header">
+<p>
+Next: <a href="Binary-files.html#Binary-files" accesskey="n" rel="next">Binary
files</a>, Previous: <a href="Adding-and-removing.html#Adding-and-removing"
accesskey="p" rel="prev">Adding and removing</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="History-browsing-1"></a>
+<h2 class="chapter">8 History browsing</h2>
+<a name="index-History-browsing"></a>
+<a name="index-Traceability"></a>
+<a name="index-Isolation"></a>
+
+
+<p>Once you have used <small>CVS</small> to store a version control
+history—what files have changed when, how, and by
+whom, there are a variety of mechanisms for looking
+through the history.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="log-messages.html#log-messages" accesskey="1">log
messages</a>:</td><td> </td><td align="left" valign="top">Log
messages
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="history-database.html#history-database" accesskey="2">history
database</a>:</td><td> </td><td align="left" valign="top">The
history database
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="user_002ddefined-logging.html#user_002ddefined-logging"
accesskey="3">user-defined logging</a>:</td><td> </td><td
align="left" valign="top">User-defined logging
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Index.html
===================================================================
RCS file: html_node/Index.html
diff -N html_node/Index.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Index.html 28 Dec 2015 15:57:56 -0000 1.1
@@ -0,0 +1,926 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Index</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Index">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="BUGS.html#BUGS" rel="prev" title="BUGS">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Index"></a>
+<div class="header">
+<p>
+Previous: <a href="BUGS.html#BUGS" accesskey="p" rel="prev">BUGS</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Index-1"></a>
+<h2 class="unnumbered">Index</h2>
+<a name="index-Index"></a>
+
+<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter"
href="#Index_cp_symbol-1"><b>!</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-2"><b>#</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-3"><b>&</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-4"><b>-</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-5"><b>.</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-6"><b>/</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-7"><b>:</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-8"><b><</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-9"><b>=</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-10"><b>></b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-11"><b>_</b></a>
+
+<br>
+<a class="summary-letter" href="#Index_cp_letter-A"><b>A</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-B"><b>B</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-C"><b>C</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-D"><b>D</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-E"><b>E</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-F"><b>F</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-G"><b>G</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-H"><b>H</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-I"><b>I</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-J"><b>J</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-K"><b>K</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-L"><b>L</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-M"><b>M</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-N"><b>N</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-O"><b>O</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-P"><b>P</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-R"><b>R</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-S"><b>S</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-T"><b>T</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-U"><b>U</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-V"><b>V</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-W"><b>W</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-X"><b>X</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-Z"><b>Z</b></a>
+
+</td></tr></table>
+<table class="index-cp" border="0">
+<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left">
Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-1">!</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Excluding-directories.html#index-_0021_002c-in-modules-file">!, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Excluding-directories.html#Excluding-directories">Excluding
directories</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-2">#</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-_0023cvs_002elock_002c-removing">#cvs.lock,
removing</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Locks.html#index-_0023cvs_002elock_002c-technical-details">#cvs.lock,
technical details</a>:</td><td> </td><td valign="top"><a
href="Locks.html#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Backing-up.html#index-_0023cvs_002erfl_002c-and-backups">#cvs.rfl, and
backups</a>:</td><td> </td><td valign="top"><a
href="Backing-up.html#Backing-up">Backing up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-_0023cvs_002erfl_002c-removing">#cvs.rfl,
removing</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Locks.html#index-_0023cvs_002erfl_002c-technical-details">#cvs.rfl,
technical details</a>:</td><td> </td><td valign="top"><a
href="Locks.html#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Locks.html#index-_0023cvs_002etfl">#cvs.tfl</a>:</td><td> </td><td
valign="top"><a href="Locks.html#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-_0023cvs_002ewfl_002c-removing">#cvs.wfl,
removing</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Locks.html#index-_0023cvs_002ewfl_002c-technical-details">#cvs.wfl,
technical details</a>:</td><td> </td><td valign="top"><a
href="Locks.html#Locks">Locks</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-3">&</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Ampersand-modules.html#index-_0026_002c-in-modules-file">&, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Ampersand-modules.html#Ampersand-modules">Ampersand modules</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-4">-</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Alias-modules.html#index-_002da_002c-in-modules-file">-a, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Alias-modules.html#Alias-modules">Alias modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-_002dd_002c-in-modules-file">-d, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-_002de_002c-in-modules-file">-e, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-program-options.html#index-_002de_002c-in-modules-file-1">-e, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Module-program-options.html#Module-program-options">Module program
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-_002dj-_0028merging-branches_0029">-j
(merging branches)</a>:</td><td> </td><td valign="top"><a
href="Merging-a-branch.html#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-and-keywords.html#index-_002dj-_0028merging-branches_0029_002c-and-keyword-substitution">-j
(merging branches), and keyword substitution</a>:</td><td> </td><td
valign="top"><a href="Merging-and-keywords.html#Merging-and-keywords">Merging
and keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Substitution-modes.html#index-_002dk-_0028keyword-substitution_0029">-k
(keyword substitution)</a>:</td><td> </td><td valign="top"><a
href="Substitution-modes.html#Substitution-modes">Substitution
modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-and-keywords.html#index-_002dkk_002c-to-avoid-conflicts-during-a-merge">-kk,
to avoid conflicts during a merge</a>:</td><td> </td><td valign="top"><a
href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-_002do_002c-in-modules-file">-o, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-program-options.html#index-_002do_002c-in-modules-file-1">-o, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Module-program-options.html#Module-program-options">Module program
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-_002ds_002c-in-modules-file">-s, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-_002dt_002c-in-modules-file">-t, in modules
file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-program-options.html#index-_002dt_002c-in-modules-file-1">-t, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Module-program-options.html#Module-program-options">Module program
options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-5">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="update-output.html#index-_002e_0023-files">.#
files</a>:</td><td> </td><td valign="top"><a
href="update-output.html#update-output">update output</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-_002ebashrc_002c-setting-CVSROOT-in">.bashrc,
setting CVSROOT in</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-_002ecshrc_002c-setting-CVSROOT-in">.cshrc,
setting CVSROOT in</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="_007e_002f_002ecvsrc.html#index-_002ecvsrc-file">.cvsrc
file</a>:</td><td> </td><td valign="top"><a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">~/.cvsrc</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-_002eprofile_002c-setting-CVSROOT-in">.profile,
setting CVSROOT in</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-_002etcshrc_002c-setting-CVSROOT-in">.tcshrc,
setting CVSROOT in</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-6">/</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-_002fusr_002flocal_002fcvsroot_002c-as-example-repository">/usr/local/cvsroot,
as example repository</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-7">:</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-_003aext_003a_002c-setting-up">:ext:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connection.html#index-_003aext_003a_002c-troubleshooting">:ext:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="Connection.html#Connection">Connection</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-_003aextssh_003a_002c-setting-up">:extssh:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-fork.html#index-_003afork_003a_002c-setting-up">:fork:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-fork.html#Connecting-via-fork">Connecting via
fork</a></td></tr>
+<tr><td></td><td valign="top"><a
href="GSSAPI-authenticated.html#index-_003agserver_003a_002c-setting-up">:gserver:,
setting up</a>:</td><td> </td><td valign="top"><a
href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Kerberos-authenticated.html#index-_003akserver_003a_002c-setting-up">:kserver:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-_003alocal_003a_002c-setting-up">:local:, setting
up</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-_003apserver_003a_002c-setting-up">:pserver:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connection.html#index-_003apserver_003a_002c-troubleshooting">:pserver:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="Connection.html#Connection">Connection</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-_003aserver_003a_002c-setting-up">:server:,
setting up</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connection.html#index-_003aserver_003a_002c-troubleshooting">:server:,
troubleshooting</a>:</td><td> </td><td valign="top"><a
href="Connection.html#Connection">Connection</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-8"><</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-_003c_003c_003c_003c_003c_003c_003c"><<<<<<<</a>:</td><td> </td><td
valign="top"><a href="Conflicts-example.html#Conflicts-example">Conflicts
example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-9">=</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-_003d_003d_003d_003d_003d_003d_003d">=======</a>:</td><td> </td><td
valign="top"><a href="Conflicts-example.html#Conflicts-example">Conflicts
example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-10">></a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-_003e_003e_003e_003e_003e_003e_003e">>>>>>>></a>:</td><td> </td><td
valign="top"><a href="Conflicts-example.html#Conflicts-example">Conflicts
example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_symbol-11">_</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="update-output.html#index-_005f_005f-files-_0028VMS_0029">__ files
(VMS)</a>:</td><td> </td><td valign="top"><a
href="update-output.html#update-output">update output</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Editing-files.html#index-Abandoning-work">Abandoning
work</a>:</td><td> </td><td valign="top"><a
href="Editing-files.html#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Access-a-branch">Access a
branch</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Adding-files.html#index-add-_0028subcommand_0029">add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Adding-files.html#Adding-files">Adding files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="add.html#index-add-_0028subcommand_0029-1">add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="add.html#add">add</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tags.html#index-Adding-a-tag">Adding a
tag</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Adding-files.html#index-Adding-files">Adding
files</a>:</td><td> </td><td valign="top"><a
href="Adding-files.html#Adding-files">Adding files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin.html#index-Admin-_0028subcommand_0029">Admin
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="admin.html#admin">admin</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-Administrative-files-_0028intro_0029">Administrative
files (intro)</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Administrative-files.html#index-Administrative-files-_0028reference_0029">Administrative
files (reference)</a>:</td><td> </td><td valign="top"><a
href="Administrative-files.html#Administrative-files">Administrative
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-Administrative-files_002c-editing-them">Administrative
files, editing them</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Alias-modules.html#index-Alias-modules">Alias
modules</a>:</td><td> </td><td valign="top"><a
href="Alias-modules.html#Alias-modules">Alias modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-ALL-in-commitinfo">ALL in
commitinfo</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Ampersand-modules.html#index-Ampersand-modules">Ampersand
modules</a>:</td><td> </td><td valign="top"><a
href="Ampersand-modules.html#Ampersand-modules">Ampersand modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="annotate.html#index-annotate-_0028subcommand_0029">annotate
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="annotate.html#annotate">annotate</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-Atomic-transactions_002c-lack-of">Atomic
transactions, lack of</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Attic.html#index-Attic">Attic</a>:</td><td> </td><td valign="top"><a
href="Attic.html#Attic">Attic</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-Authenticated-client_002c-using">Authenticated
client, using</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-Authenticating-server_002c-setting-up">Authenticating
server, setting up</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Authentication_002c-stream">Authentication,
stream</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Author-keyword">Author
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="cvsignore.html#index-Automatically-ignored-files">Automatically ignored
files</a>:</td><td> </td><td valign="top"><a
href="cvsignore.html#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Avoiding-editor-invocation">Avoiding editor
invocation</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-B">B</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Backing-up.html#index-Backing-up_002c-repository">Backing up,
repository</a>:</td><td> </td><td valign="top"><a
href="Backing-up.html#Backing-up">Backing up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Base-directory_002c-in-CVS-directory">Base
directory, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-BASE_002c-as-reserved-tag-name">BASE, as reserved tag
name</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-BASE_002c-special-tag">BASE, special
tag</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Baserev-file_002c-in-CVS-directory">Baserev
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Baserev_002etmp-file_002c-in-CVS-directory">Baserev.tmp
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Builds.html#index-Bill-of-materials">Bill of
materials</a>:</td><td> </td><td valign="top"><a
href="Builds.html#Builds">Builds</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Binary-files.html#index-Binary-files">Binary
files</a>:</td><td> </td><td valign="top"><a
href="Binary-files.html#Binary-files">Binary files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-Branch-merge-example">Branch merge
example</a>:</td><td> </td><td valign="top"><a
href="Merging-a-branch.html#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Branch-number">Branch
number</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-and-revisions.html#index-Branch-number-1">Branch
number</a>:</td><td> </td><td valign="top"><a
href="Branches-and-revisions.html#Branches-and-revisions">Branches and
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Branch-tags_002c-deleting">Branch tags,
deleting</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Branch-tags_002c-moving">Branch tags,
moving</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Branch_002c-accessing">Branch,
accessing</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Branch_002c-check-out">Branch, check
out</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-branch.html#index-Branch_002c-creating-a">Branch, creating
a</a>:</td><td> </td><td valign="top"><a
href="Creating-a-branch.html#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Branch_002c-identifying">Branch,
identifying</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Branch_002c-retrieving">Branch,
retrieving</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tracking-sources.html#index-Branch_002c-vendor_002d">Branch,
vendor-</a>:</td><td> </td><td valign="top"><a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-motivation.html#index-Branches-motivation">Branches
motivation</a>:</td><td> </td><td valign="top"><a
href="Branches-motivation.html#Branches-motivation">Branches
motivation</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Branches_002c-copying-changes-between">Branches,
copying changes between</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Branches_002c-sticky">Branches,
sticky</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Branching">Branching</a>:</td><td> </td><td
valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Updating-a-file.html#index-Bringing-a-file-up-to-date">Bringing a file up
to date</a>:</td><td> </td><td valign="top"><a
href="Updating-a-file.html#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Bugs-in-this-manual-or-CVS">Bugs in this manual or
CVS</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Bugs_002c-reporting">Bugs,
reporting</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Builds.html#index-Builds">Builds</a>:</td><td> </td><td
valign="top"><a href="Builds.html#Builds">Builds</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Changes_002c-copying-between-branches">Changes,
copying between branches</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Changing-a-log-message">Changing a log
message</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Check-out-a-branch">Check out a
branch</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#index-Checked-out-copy_002c-keeping">Checked
out copy, keeping</a>:</td><td> </td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy">Keeping a
checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-the-source.html#index-Checking-out-source">Checking out
source</a>:</td><td> </td><td valign="top"><a
href="Getting-the-source.html#Getting-the-source">Getting the
source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="checkout.html#index-checkout-_0028subcommand_0029">checkout
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="checkout.html#checkout">checkout</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Checkout-program">Checkout
program</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Editing-files.html#index-Checkout_002c-as-term-for-getting-ready-to-edit">Checkout,
as term for getting ready to edit</a>:</td><td> </td><td valign="top"><a
href="Editing-files.html#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-the-source.html#index-Checkout_002c-example">Checkout,
example</a>:</td><td> </td><td valign="top"><a
href="Getting-the-source.html#Getting-the-source">Getting the
source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="checkoutlist.html#index-checkoutlist">checkoutlist</a>:</td><td> </td><td
valign="top"><a
href="checkoutlist.html#checkoutlist">checkoutlist</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Choosing-a-model.html#index-Choosing_002c-reserved-or-unreserved-checkouts">Choosing,
reserved or unreserved checkouts</a>:</td><td> </td><td valign="top"><a
href="Choosing-a-model.html#Choosing-a-model">Choosing a model</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Cleaning-up.html#index-Cleaning-up">Cleaning
up</a>:</td><td> </td><td valign="top"><a
href="Cleaning-up.html#Cleaning-up">Cleaning up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Client_002fServer-Operation">Client/Server
Operation</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Client_002fServer-Operation_002c-port-specification">Client/Server
Operation, port specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-Client_002fServer-Operation_002c-port-specification-1">Client/Server
Operation, port specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="checkout.html#index-co-_0028subcommand_0029">co
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="checkout.html#checkout">checkout</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-Command-reference">Command
reference</a>:</td><td> </td><td valign="top"><a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Structure.html#index-Command-structure">Command
structure</a>:</td><td> </td><td valign="top"><a
href="Structure.html#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Comment-leader">Comment
leader</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commit.html#index-commit-_0028subcommand_0029">commit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="commit.html#commit">commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-commitinfo"><samp>commitinfo</samp></a>:</td><td> </td><td
valign="top"><a href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-commitinfo_002c-command-environment"><samp>commitinfo</samp>,
command environment</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-commitinfo_002c-working-directory"><samp>commitinfo</samp>,
working directory</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-Commits_002c-precommit-verification-of">Commits,
precommit verification of</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Committing-your-changes.html#index-Committing-changes-to-files">Committing
changes to files</a>:</td><td> </td><td valign="top"><a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commit-files.html#index-Committing_002c-administrative-support-files">Committing,
administrative support files</a>:</td><td> </td><td valign="top"><a
href="commit-files.html#commit-files">commit files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="When-to-commit.html#index-Committing_002c-when-to">Committing, when
to</a>:</td><td> </td><td valign="top"><a
href="When-to-commit.html#When-to-commit">When to commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Common-options">Common
options</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="syntax.html#index-Common-syntax-of-info-files">Common syntax of info
files</a>:</td><td> </td><td valign="top"><a
href="syntax.html#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Compatibility.html#index-Compatibility_002c-between-CVS-versions">Compatibility,
between CVS versions</a>:</td><td> </td><td valign="top"><a
href="Compatibility.html#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Compression">Compression</a>:</td><td> </td><td
valign="top"><a href="Global-options.html#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-Compression-1">Compression</a>:</td><td> </td><td
valign="top"><a href="Invoking-CVS.html#Invoking-CVS">Invoking
CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-COMSPEC_002c-environment-variable">COMSPEC,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-config_002c-in-CVSROOT">config, in
CVSROOT</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Conflict-markers">Conflict
markers</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Conflict-resolution">Conflict
resolution</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Conflicts-_0028merge-example_0029">Conflicts
(merge example)</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Contributors-_0028CVS-program_0029">Contributors
(CVS program)</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Credits.html#index-Contributors-_0028manual_0029">Contributors
(manual)</a>:</td><td> </td><td valign="top"><a
href="Credits.html#Credits">Credits</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-a-repository.html#index-Copying-a-repository">Copying a
repository</a>:</td><td> </td><td valign="top"><a
href="Moving-a-repository.html#Moving-a-repository">Moving a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Copying-changes">Copying
changes</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Correcting-a-log-message">Correcting a log
message</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-branch.html#index-Creating-a-branch">Creating a
branch</a>:</td><td> </td><td valign="top"><a
href="Creating-a-branch.html#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Starting-a-new-project.html#index-Creating-a-project">Creating a
project</a>:</td><td> </td><td valign="top"><a
href="Starting-a-new-project.html#Starting-a-new-project">Starting a new
project</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-repository.html#index-Creating-a-repository">Creating a
repository</a>:</td><td> </td><td valign="top"><a
href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Credits-_0028CVS-program_0029">Credits (CVS
program)</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Credits.html#index-Credits-_0028manual_0029">Credits
(manual)</a>:</td><td> </td><td valign="top"><a
href="Credits.html#Credits">Credits</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Watches-Compatibility.html#index-CVS-1_002e6_002c-and-watches">CVS 1.6,
and watches</a>:</td><td> </td><td valign="top"><a
href="Watches-Compatibility.html#Watches-Compatibility">Watches
Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Structure.html#index-CVS-command-structure">CVS command
structure</a>:</td><td> </td><td valign="top"><a
href="Structure.html#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a
href="CVS-in-repository.html#index-CVS-directory_002c-in-repository">CVS
directory, in repository</a>:</td><td> </td><td valign="top"><a
href="CVS-in-repository.html#CVS-in-repository">CVS in repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS-directory_002c-in-working-directory">CVS
directory, in working directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-CVS-passwd-file">CVS passwd
file</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-CVS_002c-history-of">CVS, history
of</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-CVS_002c-introduction-to">CVS, introduction
to</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Compatibility.html#index-CVS_002c-versions-of">CVS, versions
of</a>:</td><td> </td><td valign="top"><a
href="Compatibility.html#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fBase-directory">CVS/Base
directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fBaserev-file">CVS/Baserev
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fBaserev_002etmp-file">CVS/Baserev.tmp
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fEntries-file">CVS/Entries
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fEntries_002eBackup-file">CVS/Entries.Backup
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fEntries_002eLog-file">CVS/Entries.Log
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fEntries_002eStatic-file">CVS/Entries.Static
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fNotify-file">CVS/Notify
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fNotify_002etmp-file">CVS/Notify.tmp
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fRepository-file">CVS/Repository
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-CVS_002fRoot-file">CVS/Root
file</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fTag-file">CVS/Tag
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVS_002fTemplate-file">CVS/Template
file</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin.html#index-cvsadmin">cvsadmin</a>:</td><td> </td><td
valign="top"><a href="admin.html#admin">admin</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Committing-your-changes.html#index-CVSEDITOR_002c-environment-variable">CVSEDITOR,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVSEDITOR_002c-environment-variable-1">CVSEDITOR,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-CVSEDITOR_002c-internal-variable">CVSEDITOR,
internal variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="cvsignore.html#index-cvsignore-_0028admin-file_0029_002c-global">cvsignore
(admin file), global</a>:</td><td> </td><td valign="top"><a
href="cvsignore.html#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVSIGNORE_002c-environment-variable">CVSIGNORE,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVSREAD_002c-environment-variable">CVSREAD,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-CVSREAD_002c-overriding">CVSREAD,
overriding</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-cvsroot">cvsroot</a>:</td><td> </td><td
valign="top"><a href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Administrative-files.html#index-CVSROOT-_0028file_0029">CVSROOT
(file)</a>:</td><td> </td><td valign="top"><a
href="Administrative-files.html#Administrative-files">Administrative
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-CVSROOT_002c-environment-variable">CVSROOT,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-CVSROOT_002c-internal-variable">CVSROOT, internal
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-CVSROOT_002c-module-name">CVSROOT,
module name</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-CVSROOT_002c-multiple-repositories">CVSROOT,
multiple repositories</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-CVSROOT_002c-overriding">CVSROOT,
overriding</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="CVSROOT-storage.html#index-CVSROOT_002c-storage-of-files">CVSROOT,
storage of files</a>:</td><td> </td><td valign="top"><a
href="CVSROOT-storage.html#CVSROOT-storage">CVSROOT storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-CVSROOT_002fconfig">CVSROOT/config</a>:</td><td> </td><td
valign="top"><a href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-CVSROOT_002fEmptydir-directory">CVSROOT/Emptydir
directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-CVSROOT_002fval_002dtags-file_002c-and-read_002donly-access-to-projects">CVSROOT/val-tags
file, and read-only access to projects</a>:</td><td> </td><td
valign="top"><a href="File-permissions.html#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Error-messages.html#index-CVSROOT_002fval_002dtags-file_002c-forcing-tags-into">CVSROOT/val-tags
file, forcing tags into</a>:</td><td> </td><td valign="top"><a
href="Error-messages.html#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-CVSUMASK_002c-environment-variable">CVSUMASK,
environment variable</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Wrappers.html#index-cvswrappers-_0028admin-file_0029">cvswrappers (admin
file)</a>:</td><td> </td><td valign="top"><a
href="Wrappers.html#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Wrappers.html#index-CVSWRAPPERS_002c-environment-variable">CVSWRAPPERS,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Wrappers.html#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVSWRAPPERS_002c-environment-variable-1">CVSWRAPPERS,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fCLIENT_005fLOG_002c-environment-variable">CVS_CLIENT_LOG,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Kerberos-authenticated.html#index-CVS_005fCLIENT_005fPORT">CVS_CLIENT_PORT</a>:</td><td> </td><td
valign="top"><a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fIGNORE_005fREMOTE_005fROOT_002c-environment-variable">CVS_IGNORE_REMOTE_ROOT,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-CVS_005fPASSFILE_002c-environment-variable">CVS_PASSFILE,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fRCMD_005fPORT_002c-environment-variable">CVS_RCMD_PORT,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fRSH_002c-environment-variable">CVS_RSH,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-fork.html#index-CVS_005fSERVER_002c-and-_003afork_003a">CVS_SERVER,
and :fork:</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-fork.html#Connecting-via-fork">Connecting via
fork</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-CVS_005fSERVER_002c-environment-variable">CVS_SERVER,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fSERVER_005fSLEEP_002c-environment-variable">CVS_SERVER_SLEEP,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-CVS_005fSSH_002c-environment-variable">CVS_SSH,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-CVS_005fUSER_002c-environment-variable">CVS_USER,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Date-keyword">Date
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Dates">Dates</a>:</td><td> </td><td
valign="top"><a href="Common-options.html#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attic.html#index-Dead-state">Dead
state</a>:</td><td> </td><td valign="top"><a
href="Attic.html#Attic">Attic</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Decimal-revision-number">Decimal revision
number</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-DEFAULT-in-commitinfo">DEFAULT in
commitinfo</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="editinfo.html#index-DEFAULT-in-editinfo">DEFAULT in
editinfo</a>:</td><td> </td><td valign="top"><a
href="editinfo.html#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="verifymsg.html#index-DEFAULT-in-verifymsg">DEFAULT in
<samp>verifymsg</samp></a>:</td><td> </td><td valign="top"><a
href="verifymsg.html#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Defining-the-module.html#index-Defining-a-module">Defining a
module</a>:</td><td> </td><td valign="top"><a
href="Defining-the-module.html#Defining-the-module">Defining the
module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-Defining-modules-_0028intro_0029">Defining
modules (intro)</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="modules.html#index-Defining-modules-_0028reference-manual_0029">Defining
modules (reference manual)</a>:</td><td> </td><td valign="top"><a
href="modules.html#modules">modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Deleting-branch-tags">Deleting branch
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Removing-files.html#index-Deleting-files">Deleting
files</a>:</td><td> </td><td valign="top"><a
href="Removing-files.html#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Deleting-revisions">Deleting
revisions</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Deleting-sticky-tags">Deleting sticky
tags</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Deleting-tags">Deleting
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Recursive-behavior.html#index-Descending-directories">Descending
directories</a>:</td><td> </td><td valign="top"><a
href="Recursive-behavior.html#Recursive-behavior">Recursive
behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Device-nodes">Device
nodes</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Viewing-differences.html#index-Diff">Diff</a>:</td><td> </td><td
valign="top"><a href="Viewing-differences.html#Viewing-differences">Viewing
differences</a></td></tr>
+<tr><td></td><td valign="top"><a
href="diff.html#index-diff-_0028subcommand_0029">diff
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="diff.html#diff">diff</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Differences_002c-merging">Differences,
merging</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-directories.html#index-Directories_002c-moving">Directories,
moving</a>:</td><td> </td><td valign="top"><a
href="Moving-directories.html#Moving-directories">Moving
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Removing-directories.html#index-Directories_002c-removing">Directories,
removing</a>:</td><td> </td><td valign="top"><a
href="Removing-directories.html#Removing-directories">Removing
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Recursive-behavior.html#index-Directory_002c-descending">Directory,
descending</a>:</td><td> </td><td valign="top"><a
href="Recursive-behavior.html#Recursive-behavior">Recursive
behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-Disjoint-repositories">Disjoint
repositories</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="loginfo.html#index-Distributing-log-messages">Distributing log
messages</a>:</td><td> </td><td valign="top"><a
href="loginfo.html#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-driver_002ec-_0028merge-example_0029">driver.c
(merge example)</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Editing-files.html#index-edit-_0028subcommand_0029">edit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Editing-files.html#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="editinfo.html#index-editinfo-_0028admin-file_0029">editinfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="editinfo.html#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-Editing-administrative-files">Editing
administrative files</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Defining-the-module.html#index-Editing-the-modules-file">Editing the
modules file</a>:</td><td> </td><td valign="top"><a
href="Defining-the-module.html#Defining-the-module">Defining the
module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Editor_002c-avoiding-invocation-of">Editor,
avoiding invocation of</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Committing-your-changes.html#index-EDITOR_002c-environment-variable">EDITOR,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-EDITOR_002c-environment-variable-1">EDITOR,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-EDITOR_002c-internal-variable">EDITOR, internal
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-EDITOR_002c-overriding">EDITOR,
overriding</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="editinfo.html#index-Editor_002c-specifying-per-module">Editor, specifying
per module</a>:</td><td> </td><td valign="top"><a
href="editinfo.html#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Watch-information.html#index-editors-_0028subcommand_0029">editors
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Watch-information.html#Watch-information">Watch information</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-emerge">emerge</a>:</td><td> </td><td
valign="top"><a href="Conflicts-example.html#Conflicts-example">Conflicts
example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Emptydir_002c-in-CVSROOT-directory">Emptydir,
in CVSROOT directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Encryption">Encryption</a>:</td><td> </td><td
valign="top"><a href="Global-options.html#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Entries-file_002c-in-CVS-directory">Entries
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Entries_002eBackup-file_002c-in-CVS-directory">Entries.Backup
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Entries_002eLog-file_002c-in-CVS-directory">Entries.Log
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Entries_002eStatic-file_002c-in-CVS-directory">Entries.Static
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-Environment-variables">Environment
variables</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-environment-variables_002c-passed-to-administrative-files">environment
variables, passed to administrative files</a>:</td><td> </td><td
valign="top"><a href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Errors_002c-reporting">Errors,
reporting</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="A-sample-session.html#index-Example-of-a-work_002dsession">Example of a
work-session</a>:</td><td> </td><td valign="top"><a
href="A-sample-session.html#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Example-of-merge">Example of
merge</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-Example_002c-branch-merge">Example, branch
merge</a>:</td><td> </td><td valign="top"><a
href="Merging-a-branch.html#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Excluding-directories.html#index-Excluding-directories_002c-in-modules-file">Excluding
directories, in modules file</a>:</td><td> </td><td valign="top"><a
href="Excluding-directories.html#Excluding-directories">Excluding
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-Exit-status_002c-of-commitinfo">Exit status, of
commitinfo</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Exit-status.html#index-Exit-status_002c-of-CVS">Exit status, of
CVS</a>:</td><td> </td><td valign="top"><a
href="Exit-status.html#Exit-status">Exit status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Error-messages.html#index-Exit-status_002c-of-editor">Exit status, of
editor</a>:</td><td> </td><td valign="top"><a
href="Error-messages.html#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="verifymsg.html#index-Exit-status_002c-of-verifymsg">Exit status, of
<samp>verifymsg</samp></a>:</td><td> </td><td valign="top"><a
href="verifymsg.html#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="export.html#index-export-_0028subcommand_0029">export
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="export.html#export">export</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Export-program">Export
program</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-the-source.html#index-Fetching-source">Fetching
source</a>:</td><td> </td><td valign="top"><a
href="Getting-the-source.html#Getting-the-source">Getting the
source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-File-had-conflicts-on-merge">File had conflicts on
merge</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-File-locking">File
locking</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-File-permissions_002c-general">File
permissions, general</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Windows-permissions.html#index-File-permissions_002c-Windows_002dspecific">File
permissions, Windows-specific</a>:</td><td> </td><td valign="top"><a
href="Windows-permissions.html#Windows-permissions">Windows
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-File-status">File
status</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-files.html#index-Files_002c-moving">Files,
moving</a>:</td><td> </td><td valign="top"><a
href="Moving-files.html#Moving-files">Moving files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Administrative-files.html#index-Files_002c-reference-manual">Files,
reference manual</a>:</td><td> </td><td valign="top"><a
href="Administrative-files.html#Administrative-files">Administrative
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Fixing-a-log-message">Fixing a log
message</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Forcing-a-tag-match">Forcing a tag
match</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-fork.html#index-fork_002c-access-method">fork, access
method</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-fork.html#Connecting-via-fork">Connecting via
fork</a></td></tr>
+<tr><td></td><td valign="top"><a
href="rcsinfo.html#index-Form-for-log-message">Form for log
message</a>:</td><td> </td><td valign="top"><a
href="rcsinfo.html#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Structure.html#index-Format-of-CVS-commands">Format of CVS
commands</a>:</td><td> </td><td valign="top"><a
href="Structure.html#Structure">Structure</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-G">G</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="A-sample-session.html#index-Getting-started">Getting
started</a>:</td><td> </td><td valign="top"><a
href="A-sample-session.html#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-the-source.html#index-Getting-the-source">Getting the
source</a>:</td><td> </td><td valign="top"><a
href="Getting-the-source.html#Getting-the-source">Getting the
source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="cvsignore.html#index-Global-cvsignore">Global
cvsignore</a>:</td><td> </td><td valign="top"><a
href="cvsignore.html#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Global-options">Global
options</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Group_002c-UNIX-file-permissions_002c-in-repository">Group,
UNIX file permissions, in repository</a>:</td><td> </td><td
valign="top"><a href="File-permissions.html#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification">gserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">gserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="GSSAPI-authenticated.html#index-GSSAPI">GSSAPI</a>:</td><td> </td><td
valign="top"><a href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Gzip">Gzip</a>:</td><td> </td><td
valign="top"><a href="Global-options.html#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-Gzip-1">Gzip</a>:</td><td> </td><td
valign="top"><a href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-H">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Hard-links">Hard
links</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-HEAD_002c-as-reserved-tag-name">HEAD, as reserved tag
name</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-HEAD_002c-special-tag">HEAD, special
tag</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Header-keyword">Header
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="history.html#index-history-_0028subcommand_0029">history
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="history.html#history">history</a></td></tr>
+<tr><td></td><td valign="top"><a
href="History-browsing.html#index-History-browsing">History
browsing</a>:</td><td> </td><td valign="top"><a
href="History-browsing.html#History-browsing">History browsing</a></td></tr>
+<tr><td></td><td valign="top"><a
href="history-file.html#index-History-file">History
file</a>:</td><td> </td><td valign="top"><a
href="history-file.html#history-file">history file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository-files.html#index-History-files">History
files</a>:</td><td> </td><td valign="top"><a
href="Repository-files.html#Repository-files">Repository files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-History-of-CVS">History of
CVS</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-HOME_002c-environment-variable">HOME,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-HOMEDRIVE_002c-environment-variable">HOMEDRIVE,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-HOMEPATH_002c-environment-variable">HOMEPATH,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Keyword-list.html#index-Id-keyword">Id
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Using-keywords.html#index-Ident-_0028shell-command_0029">Ident (shell
command)</a>:</td><td> </td><td valign="top"><a
href="Using-keywords.html#Using-keywords">Using keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Identifying-a-branch">Identifying a
branch</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-substitution.html#index-Identifying-files">Identifying
files</a>:</td><td> </td><td valign="top"><a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a></td></tr>
+<tr><td></td><td valign="top"><a
href="cvsignore.html#index-Ignored-files">Ignored
files</a>:</td><td> </td><td valign="top"><a
href="cvsignore.html#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-IgnoreUnknownConfigKeys_002c-in-CVSROOT_002fconfig">IgnoreUnknownConfigKeys,
in CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="cvsignore.html#index-Ignoring-files">Ignoring
files</a>:</td><td> </td><td valign="top"><a
href="cvsignore.html#cvsignore">cvsignore</a></td></tr>
+<tr><td></td><td valign="top"><a
href="import.html#index-import-_0028subcommand_0029">import
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="import.html#import">import</a></td></tr>
+<tr><td></td><td valign="top"><a
href="From-files.html#index-Importing-files">Importing
files</a>:</td><td> </td><td valign="top"><a
href="From-files.html#From-files">From files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="From-other-version-control-systems.html#index-Importing-files_002c-from-other-version-control-systems">Importing
files, from other version control systems</a>:</td><td> </td><td
valign="top"><a
href="From-other-version-control-systems.html#From-other-version-control-systems">From
other version control systems</a></td></tr>
+<tr><td></td><td valign="top"><a
href="First-import.html#index-Importing-modules">Importing
modules</a>:</td><td> </td><td valign="top"><a
href="First-import.html#First-import">First import</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-Index">Index</a>:</td><td> </td><td valign="top"><a
href="#Index">Index</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-inetd_002c-configuring-for-pserver">inetd,
configuring for pserver</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Trigger-Scripts.html#index-Info-files">Info
files</a>:</td><td> </td><td valign="top"><a
href="Trigger-Scripts.html#Trigger-Scripts">Trigger Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a
href="syntax.html#index-Info-files-_0028syntax_0029">Info files
(syntax)</a>:</td><td> </td><td valign="top"><a
href="syntax.html#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Trigger-Script-Security.html#index-Info-files_002c-security">Info files,
security</a>:</td><td> </td><td valign="top"><a
href="Trigger-Script-Security.html#Trigger-Script-Security">Trigger Script
Security</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Informing-others.html#index-Informing-others">Informing
others</a>:</td><td> </td><td valign="top"><a
href="Informing-others.html#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-repository.html#index-init-_0028subcommand_0029">init
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Installed-images-_0028VMS_0029">Installed
images (VMS)</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-Internal-variables">Internal
variables</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Introduction-to-CVS">Introduction to
CVS</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-Invoking-CVS">Invoking
CVS</a>:</td><td> </td><td valign="top"><a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="History-browsing.html#index-Isolation">Isolation</a>:</td><td> </td><td
valign="top"><a href="History-browsing.html#History-browsing">History
browsing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-J">J</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-Join">Join</a>:</td><td> </td><td
valign="top"><a href="Merging-a-branch.html#Merging-a-branch">Merging a
branch</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#index-Keeping-a-checked-out-copy">Keeping
a checked out copy</a>:</td><td> </td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy">Keeping a
checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a
href="GSSAPI-authenticated.html#index-Kerberos_002c-using-_003agserver_003a">Kerberos,
using :gserver:</a>:</td><td> </td><td valign="top"><a
href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Kerberos-authenticated.html#index-Kerberos_002c-using-_003akserver_003a">Kerberos,
using :kserver:</a>:</td><td> </td><td valign="top"><a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-Kerberos_002c-using-kerberized-rsh">Kerberos,
using kerberized rsh</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-substitution.html#index-Keyword-expansion">Keyword
expansion</a>:</td><td> </td><td valign="top"><a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Keyword-List">Keyword
List</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-substitution.html#index-Keyword-substitution">Keyword
substitution</a>:</td><td> </td><td valign="top"><a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-and-keywords.html#index-Keyword-substitution_002c-and-merging">Keyword
substitution, and merging</a>:</td><td> </td><td valign="top"><a
href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Substitution-modes.html#index-Keyword-substitution_002c-changing-modes">Keyword
substitution, changing modes</a>:</td><td> </td><td valign="top"><a
href="Substitution-modes.html#Substitution-modes">Substitution
modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Substitution-modes.html#index-Kflag">Kflag</a>:</td><td> </td><td
valign="top"><a href="Substitution-modes.html#Substitution-modes">Substitution
modes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Kerberos-authenticated.html#index-kinit">kinit</a>:</td><td> </td><td
valign="top"><a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Known-bugs-in-this-manual-or-CVS">Known bugs in this
manual or CVS</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification">kserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">kserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-Layout-of-repository">Layout of
repository</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Left_002dhand-options">Left-hand
options</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Linear-development">Linear
development</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="import-output.html#index-Link_002c-symbolic_002c-importing">Link,
symbolic, importing</a>:</td><td> </td><td valign="top"><a
href="import-output.html#import-output">import output</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-List_002c-mailing-list">List, mailing
list</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Locally-Added">Locally
Added</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Locally-Modified">Locally
Modified</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Locally-Removed">Locally
Removed</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-LockDir_002c-in-CVSROOT_002fconfig">LockDir, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Locker-keyword">Locker
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Locking-files">Locking
files</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Backing-up.html#index-Locks_002c-cvs_002c-and-backups">Locks, cvs, and
backups</a>:</td><td> </td><td valign="top"><a
href="Backing-up.html#Backing-up">Backing up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-Locks_002c-cvs_002c-introduction">Locks, cvs,
introduction</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Locks.html#index-Locks_002c-cvs_002c-technical-details">Locks, cvs,
technical details</a>:</td><td> </td><td valign="top"><a
href="Locks.html#Locks">Locks</a></td></tr>
+<tr><td></td><td valign="top"><a
href="log.html#index-log-_0028subcommand_0029">log
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="log.html#log">log</a></td></tr>
+<tr><td></td><td valign="top"><a
href="history-file.html#index-Log-information_002c-saving">Log information,
saving</a>:</td><td> </td><td valign="top"><a
href="history-file.html#history-file">history file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Log-keyword">Log
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Committing-your-changes.html#index-Log-message-entry">Log message
entry</a>:</td><td> </td><td valign="top"><a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="rcsinfo.html#index-Log-message-template">Log message
template</a>:</td><td> </td><td valign="top"><a
href="rcsinfo.html#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Log-message_002c-correcting">Log message,
correcting</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="verifymsg.html#index-Log-message_002c-verifying">Log message,
verifying</a>:</td><td> </td><td valign="top"><a
href="verifymsg.html#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a href="loginfo.html#index-Log-messages">Log
messages</a>:</td><td> </td><td valign="top"><a
href="loginfo.html#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="editinfo.html#index-Log-messages_002c-editing">Log messages,
editing</a>:</td><td> </td><td valign="top"><a
href="editinfo.html#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-LogHistory_002c-in-CVSROOT_002fconfig">LogHistory, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-Login-_0028subcommand_0029">Login
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="loginfo.html#index-loginfo-_0028admin-file_0029">loginfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="loginfo.html#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-LOGNAME_002c-environment-variable">LOGNAME,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-Logout-_0028subcommand_0029">Logout
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Informing-others.html#index-Mail_002c-automatic-mail-on-commit">Mail,
automatic mail on commit</a>:</td><td> </td><td valign="top"><a
href="Informing-others.html#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Mailing-list">Mailing
list</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="loginfo.html#index-Mailing-log-messages">Mailing log
messages</a>:</td><td> </td><td valign="top"><a
href="loginfo.html#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Main-trunk-and-branches">Main trunk and
branches</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Builds.html#index-make">make</a>:</td><td> </td><td valign="top"><a
href="Builds.html#Builds">Builds</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-Many-repositories">Many
repositories</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Markers_002c-conflict">Markers,
conflict</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Merge_002c-an-example">Merge, an
example</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-Merge_002c-branch-example">Merge, branch
example</a>:</td><td> </td><td valign="top"><a
href="Merging-a-branch.html#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Merging">Merging</a>:</td><td> </td><td
valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-a-branch.html#index-Merging-a-branch">Merging a
branch</a>:</td><td> </td><td valign="top"><a
href="Merging-a-branch.html#Merging-a-branch">Merging a branch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Updating-a-file.html#index-Merging-a-file">Merging a
file</a>:</td><td> </td><td valign="top"><a
href="Updating-a-file.html#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Merging-two-revisions">Merging two
revisions</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-and-keywords.html#index-Merging_002c-and-keyword-substitution">Merging,
and keyword substitution</a>:</td><td> </td><td valign="top"><a
href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Error-messages.html#index-mkmodules">mkmodules</a>:</td><td> </td><td
valign="top"><a href="Error-messages.html#Error-messages">Error
messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Modifications_002c-copying-between-branches">Modifications,
copying between branches</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Module-status">Module
status</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Defining-the-module.html#index-Module_002c-defining">Module,
defining</a>:</td><td> </td><td valign="top"><a
href="Defining-the-module.html#Defining-the-module">Defining the
module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="modules.html#index-Modules-_0028admin-file_0029">Modules (admin
file)</a>:</td><td> </td><td valign="top"><a
href="modules.html#modules">modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Intro-administrative-files.html#index-Modules-file">Modules
file</a>:</td><td> </td><td valign="top"><a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-program-options.html#index-Modules-file-program-options">Modules
file program options</a>:</td><td> </td><td valign="top"><a
href="Module-program-options.html#Module-program-options">Module program
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Defining-the-module.html#index-Modules-file_002c-changing">Modules file,
changing</a>:</td><td> </td><td valign="top"><a
href="Defining-the-module.html#Defining-the-module">Defining the
module</a></td></tr>
+<tr><td></td><td valign="top"><a
href="CVSROOT-storage.html#index-modules_002edb">modules.db</a>:</td><td> </td><td
valign="top"><a href="CVSROOT-storage.html#CVSROOT-storage">CVSROOT
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="CVSROOT-storage.html#index-modules_002edir">modules.dir</a>:</td><td> </td><td
valign="top"><a href="CVSROOT-storage.html#CVSROOT-storage">CVSROOT
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="CVSROOT-storage.html#index-modules_002epag">modules.pag</a>:</td><td> </td><td
valign="top"><a href="CVSROOT-storage.html#CVSROOT-storage">CVSROOT
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-motivation.html#index-Motivation-for-branches">Motivation for
branches</a>:</td><td> </td><td valign="top"><a
href="Branches-motivation.html#Branches-motivation">Branches
motivation</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-a-repository.html#index-Moving-a-repository">Moving a
repository</a>:</td><td> </td><td valign="top"><a
href="Moving-a-repository.html#Moving-a-repository">Moving a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Moving-branch-tags">Moving branch
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-directories.html#index-Moving-directories">Moving
directories</a>:</td><td> </td><td valign="top"><a
href="Moving-directories.html#Moving-directories">Moving
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-files.html#index-Moving-files">Moving
files</a>:</td><td> </td><td valign="top"><a
href="Moving-files.html#Moving-files">Moving files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Moving-tags">Moving
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Multiple-developers">Multiple
developers</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-Multiple-repositories">Multiple
repositories</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Name-keyword">Name
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Name_002c-symbolic-_0028tag_0029">Name, symbolic
(tag)</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Needs-Checkout">Needs
Checkout</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Needs-Merge">Needs
Merge</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Needs-Patch">Needs
Patch</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Newsgroups">Newsgroups</a>:</td><td> </td><td
valign="top"><a href="What-is-CVS_003f.html#What-is-CVS_003f">What is
CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-Notified.html#index-notify-_0028admin-file_0029">notify (admin
file)</a>:</td><td> </td><td valign="top"><a
href="Getting-Notified.html#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Notify-file_002c-in-CVS-directory">Notify
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Notify_002etmp-file_002c-in-CVS-directory">Notify.tmp
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Number_002c-branch">Number,
branch</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-and-revisions.html#index-Number_002c-branch-1">Number,
branch</a>:</td><td> </td><td valign="top"><a
href="Branches-and-revisions.html#Branches-and-revisions">Branches and
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Number_002c-revision_002d">Number,
revision-</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="_007e_002f_002ecvsrc.html#index-Option-defaults">Option
defaults</a>:</td><td> </td><td valign="top"><a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">~/.cvsrc</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Options_002c-global">Options,
global</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Options_002c-in-modules-file">Options, in
modules file</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Outdating-revisions">Outdating
revisions</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Updating-a-file.html#index-Overlap">Overlap</a>:</td><td> </td><td
valign="top"><a href="Updating-a-file.html#Updating-a-file">Updating a
file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Overriding-CVSREAD">Overriding
CVSREAD</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Overriding-CVSROOT">Overriding
CVSROOT</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Overriding-EDITOR">Overriding
EDITOR</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Overriding-RCSBIN">Overriding
RCSBIN</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Overriding-TMPDIR">Overriding
TMPDIR</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Overview.html#index-Overview">Overview</a>:</td><td> </td><td
valign="top"><a href="Overview.html#Overview">Overview</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Ownership_002c-saving-in-CVS">Ownership, saving
in CVS</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-Parallel-repositories">Parallel
repositories</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-passwd-_0028admin-file_0029">passwd
(admin file)</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-client.html#index-Password-client_002c-using">Password
client, using</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-Password-server_002c-setting-up">Password
server, setting up</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-PATH_002c-environment-variable">PATH,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Per_002ddirectory-sticky-tags_002fdates">Per-directory
sticky tags/dates</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="editinfo.html#index-Per_002dmodule-editor">Per-module
editor</a>:</td><td> </td><td valign="top"><a
href="editinfo.html#editinfo">editinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Permissions_002c-general">Permissions,
general</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Permissions_002c-saving-in-CVS">Permissions,
saving in CVS</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Windows-permissions.html#index-Permissions_002c-Windows_002dspecific">Permissions,
Windows-specific</a>:</td><td> </td><td valign="top"><a
href="Windows-permissions.html#Windows-permissions">Windows
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="When-to-commit.html#index-Policy">Policy</a>:</td><td> </td><td
valign="top"><a href="When-to-commit.html#When-to-commit">When to
commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-port_002c-specifying-for-remote-repositories">port,
specifying for remote repositories</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-port_002c-specifying-for-remote-repositories-1">port,
specifying for remote repositories</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="commitinfo.html#index-Precommit-checking">Precommit
checking</a>:</td><td> </td><td valign="top"><a
href="commitinfo.html#commitinfo">commitinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification">pserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1">pserver
(client/server connection method), port
specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-pserver-_0028subcommand_0029">pserver
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="From-other-version-control-systems.html#index-PVCS_002c-importing-files-from">PVCS,
importing files from</a>:</td><td> </td><td valign="top"><a
href="From-other-version-control-systems.html#From-other-version-control-systems">From
other version control systems</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository-files.html#index-RCS-history-files">RCS history
files</a>:</td><td> </td><td valign="top"><a
href="Repository-files.html#Repository-files">Repository files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-RCS-revision-numbers">RCS revision
numbers</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="From-other-version-control-systems.html#index-RCS_002c-importing-files-from">RCS,
importing files from</a>:</td><td> </td><td valign="top"><a
href="From-other-version-control-systems.html#From-other-version-control-systems">From
other version control systems</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-RCS_002dstyle-locking">RCS-style
locking</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-RCSBIN_002c-in-CVSROOT_002fconfig">RCSBIN, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-RCSBIN_002c-internal-variable">RCSBIN, internal
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-RCSBIN_002c-overriding">RCSBIN,
overriding</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-RCSfile-keyword">RCSfile
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="rcsinfo.html#index-rcsinfo-_0028admin-file_0029">rcsinfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="rcsinfo.html#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="rdiff.html#index-rdiff-_0028subcommand_0029">rdiff
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="rdiff.html#rdiff">rdiff</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Read_002donly-files_002c-and-_002dr">Read-only
files, and -r</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-Read_002donly-files_002c-and-CVSREAD">Read-only
files, and CVSREAD</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Setting-a-watch.html#index-Read_002donly-files_002c-and-watches">Read-only
files, and watches</a>:</td><td> </td><td valign="top"><a
href="Setting-a-watch.html#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Read_002donly-files_002c-in-repository">Read-only
files, in repository</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Read_002donly-mode">Read-only
mode</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Read_002donly-access.html#index-Read_002donly-repository-access">Read-only
repository access</a>:</td><td> </td><td valign="top"><a
href="Read_002donly-access.html#Read_002donly-access">Read-only
access</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Read_002donly-access.html#index-readers-_0028admin-file_0029">readers
(admin file)</a>:</td><td> </td><td valign="top"><a
href="Read_002donly-access.html#Read_002donly-access">Read-only
access</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Recursive-behavior.html#index-Recursive-_0028directory-descending_0029">Recursive
(directory descending)</a>:</td><td> </td><td valign="top"><a
href="Recursive-behavior.html#Recursive-behavior">Recursive
behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Administrative-files.html#index-Reference-manual-_0028files_0029">Reference
manual (files)</a>:</td><td> </td><td valign="top"><a
href="Administrative-files.html#Administrative-files">Administrative
files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-Reference-manual-for-variables">Reference
manual for variables</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-Reference_002c-commands">Reference,
commands</a>:</td><td> </td><td valign="top"><a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="syntax.html#index-Regular-expression-syntax">Regular expression
syntax</a>:</td><td> </td><td valign="top"><a
href="syntax.html#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Regular-modules.html#index-Regular-modules">Regular
modules</a>:</td><td> </td><td valign="top"><a
href="Regular-modules.html#Regular-modules">Regular modules</a></td></tr>
+<tr><td></td><td valign="top"><a
href="release.html#index-release-_0028subcommand_0029">release
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="release.html#release">release</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Versions-revisions-releases.html#index-Releases_002c-revisions-and-versions">Releases,
revisions and versions</a>:</td><td> </td><td valign="top"><a
href="Versions-revisions-releases.html#Versions-revisions-releases">Versions
revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Cleaning-up.html#index-Releasing-your-working-copy">Releasing your
working copy</a>:</td><td> </td><td valign="top"><a
href="Cleaning-up.html#Cleaning-up">Cleaning up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Remote-repositories">Remote
repositories</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Remote-repositories_002c-port-specification">Remote
repositories, port specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-Remote-repositories_002c-port-specification-1">Remote
repositories, port specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Removing-files.html#index-Remove-_0028subcommand_0029">Remove
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Removing-files.html#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="remove.html#index-remove-_0028subcommand_0029">remove
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="remove.html#remove">remove</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Removing-a-change">Removing a
change</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Removing-branch-tags">Removing branch
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Removing-directories.html#index-Removing-directories">Removing
directories</a>:</td><td> </td><td valign="top"><a
href="Removing-directories.html#Removing-directories">Removing
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Removing-files.html#index-Removing-files">Removing
files</a>:</td><td> </td><td valign="top"><a
href="Removing-files.html#Removing-files">Removing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Removing-tags">Removing
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Cleaning-up.html#index-Removing-your-working-copy">Removing your working
copy</a>:</td><td> </td><td valign="top"><a
href="Cleaning-up.html#Cleaning-up">Cleaning up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-directories.html#index-Renaming-directories">Renaming
directories</a>:</td><td> </td><td valign="top"><a
href="Moving-directories.html#Moving-directories">Moving
directories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-files.html#index-Renaming-files">Renaming
files</a>:</td><td> </td><td valign="top"><a
href="Moving-files.html#Moving-files">Moving files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Renaming-tags">Renaming
tags</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Replacing-a-log-message">Replacing a log
message</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Reporting-bugs">Reporting
bugs</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-repositories.html#index-Repositories_002c-multiple">Repositories,
multiple</a>:</td><td> </td><td valign="top"><a
href="Multiple-repositories.html#Multiple-repositories">Multiple
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Repositories_002c-remote">Repositories,
remote</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Repositories_002c-remote_002c-port-specification">Repositories,
remote, port specification</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-Repositories_002c-remote_002c-port-specification-1">Repositories,
remote, port specification</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-Repository-_0028intro_0029">Repository
(intro)</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Repository-file_002c-in-CVS-directory">Repository
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Backing-up.html#index-Repository_002c-backing-up">Repository, backing
up</a>:</td><td> </td><td valign="top"><a
href="Backing-up.html#Backing-up">Backing up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-Repository_002c-example">Repository,
example</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository-storage.html#index-Repository_002c-how-data-is-stored">Repository,
how data is stored</a>:</td><td> </td><td valign="top"><a
href="Repository-storage.html#Repository-storage">Repository
storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Moving-a-repository.html#index-Repository_002c-moving">Repository,
moving</a>:</td><td> </td><td valign="top"><a
href="Moving-a-repository.html#Moving-a-repository">Moving a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-repository.html#index-Repository_002c-setting-up">Repository,
setting up</a>:</td><td> </td><td valign="top"><a
href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-RereadLogAfterVerify_002c-in-CVSROOT_002fconfig">RereadLogAfterVerify,
in CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Reserved-checkouts">Reserved
checkouts</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Resetting-sticky-tags">Resetting sticky
tags</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Conflicts-example.html#index-Resolving-a-conflict">Resolving a
conflict</a>:</td><td> </td><td valign="top"><a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Restoring-old-version-of-removed-file">Restoring
old version of removed file</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Resurrecting-old-version-of-dead-file">Resurrecting
old version of dead file</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Accessing-branches.html#index-Retrieve-a-branch">Retrieve a
branch</a>:</td><td> </td><td valign="top"><a
href="Accessing-branches.html#Accessing-branches">Accessing
branches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Retrieving-an-old-revision-using-tags">Retrieving an old
revision using tags</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Editing-files.html#index-Reverting-to-repository-version">Reverting to
repository version</a>:</td><td> </td><td valign="top"><a
href="Editing-files.html#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Revision-keyword">Revision
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-management.html#index-Revision-management">Revision
management</a>:</td><td> </td><td valign="top"><a
href="Revision-management.html#Revision-management">Revision
management</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Revision-numbers">Revision
numbers</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-and-revisions.html#index-Revision-numbers-_0028branches_0029">Revision
numbers (branches)</a>:</td><td> </td><td valign="top"><a
href="Branches-and-revisions.html#Branches-and-revisions">Branches and
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Revision-numbers.html#index-Revision-tree">Revision
tree</a>:</td><td> </td><td valign="top"><a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branching-and-merging.html#index-Revision-tree_002c-making-branches">Revision
tree, making branches</a>:</td><td> </td><td valign="top"><a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Revisions_002c-merging-differences-between">Revisions,
merging differences between</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Versions-revisions-releases.html#index-Revisions_002c-versions-and-releases">Revisions,
versions and releases</a>:</td><td> </td><td valign="top"><a
href="Versions-revisions-releases.html#Versions-revisions-releases">Versions
revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Right_002dhand-options">Right-hand
options</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Specifying-a-repository.html#index-Root-file_002c-in-CVS-directory">Root
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-rsh">rsh</a>:</td><td> </td><td
valign="top"><a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting
via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-rsh-replacements-_0028Kerberized_002c-SSH_002c-_0026c_0029">rsh
replacements (Kerberized, SSH, &c)</a>:</td><td> </td><td
valign="top"><a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting
via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tagging-by-date_002ftag.html#index-rtag-_0028subcommand_0029">rtag
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-branch.html#index-rtag_002c-creating-a-branch-using">rtag,
creating a branch using</a>:</td><td> </td><td valign="top"><a
href="Creating-a-branch.html#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="admin-options.html#index-Saving-space">Saving
space</a>:</td><td> </td><td valign="top"><a
href="admin-options.html#admin-options">admin options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="From-other-version-control-systems.html#index-SCCS_002c-importing-files-from">SCCS,
importing files from</a>:</td><td> </td><td valign="top"><a
href="From-other-version-control-systems.html#From-other-version-control-systems">From
other version control systems</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Security_002c-file-permissions-in-repository">Security,
file permissions in repository</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="GSSAPI-authenticated.html#index-Security_002c-GSSAPI">Security,
GSSAPI</a>:</td><td> </td><td valign="top"><a
href="GSSAPI-authenticated.html#GSSAPI-authenticated">GSSAPI
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Kerberos-authenticated.html#index-Security_002c-Kerberos">Security,
Kerberos</a>:</td><td> </td><td valign="top"><a
href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-security.html#index-Security_002c-of-pserver">Security,
of pserver</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Security_002c-setuid">Security,
setuid</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Remote-repositories.html#index-Server_002c-CVS">Server,
CVS</a>:</td><td> </td><td valign="top"><a
href="Remote-repositories.html#Remote-repositories">Remote
repositories</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Server-temporary-directory.html#index-Server_002c-temporary-directories">Server,
temporary directories</a>:</td><td> </td><td valign="top"><a
href="Server-temporary-directory.html#Server-temporary-directory">Server
temporary directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Setgid">Setgid</a>:</td><td> </td><td
valign="top"><a href="File-permissions.html#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-repository.html#index-Setting-up-a-repository">Setting up a
repository</a>:</td><td> </td><td valign="top"><a
href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Setuid">Setuid</a>:</td><td> </td><td
valign="top"><a href="File-permissions.html#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-Source-keyword">Source
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-Source_002c-getting-CVS-source">Source,
getting CVS source</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-the-source.html#index-Source_002c-getting-from-CVS">Source,
getting from CVS</a>:</td><td> </td><td valign="top"><a
href="Getting-the-source.html#Getting-the-source">Getting the
source</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Special-files">Special
files</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Specifying-dates">Specifying
dates</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Informing-others.html#index-Spreading-information">Spreading
information</a>:</td><td> </td><td valign="top"><a
href="Informing-others.html#Informing-others">Informing others</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-ssh">ssh</a>:</td><td> </td><td
valign="top"><a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting
via rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Connecting-via-rsh.html#index-SSH-_0028rsh-replacement_0029">SSH (rsh
replacement)</a>:</td><td> </td><td valign="top"><a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via
rsh</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Starting-a-new-project.html#index-Starting-a-project-with-CVS">Starting a
project with CVS</a>:</td><td> </td><td valign="top"><a
href="Starting-a-new-project.html#Starting-a-new-project">Starting a new
project</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keyword-list.html#index-State-keyword">State
keyword</a>:</td><td> </td><td valign="top"><a
href="Keyword-list.html#Keyword-list">Keyword list</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Status-of-a-file">Status of a
file</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Status-of-a-module">Status of a
module</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Sticky-date">Sticky
date</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Sticky-tags">Sticky
tags</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Sticky-tags_002c-resetting">Sticky tags,
resetting</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Sticky-tags_002fdates_002c-per_002ddirectory">Sticky
tags/dates, per-directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="loginfo.html#index-Storing-log-messages">Storing log
messages</a>:</td><td> </td><td valign="top"><a
href="loginfo.html#loginfo">loginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Stream-authentication">Stream
authentication</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Structure.html#index-Structure">Structure</a>:</td><td> </td><td
valign="top"><a href="Structure.html#Structure">Structure</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Recursive-behavior.html#index-Subdirectories">Subdirectories</a>:</td><td> </td><td
valign="top"><a href="Recursive-behavior.html#Recursive-behavior">Recursive
behavior</a></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Support_002c-getting-CVS-support">Support, getting CVS
support</a>:</td><td> </td><td valign="top"><a
href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="import-output.html#index-Symbolic-link_002c-importing">Symbolic link,
importing</a>:</td><td> </td><td valign="top"><a
href="import-output.html#import-output">import output</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Special-Files.html#index-Symbolic-links">Symbolic
links</a>:</td><td> </td><td valign="top"><a
href="Special-Files.html#Special-Files">Special Files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Symbolic-name-_0028tag_0029">Symbolic name
(tag)</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="syntax.html#index-Syntax-of-info-files">Syntax of info
files</a>:</td><td> </td><td valign="top"><a
href="syntax.html#syntax">syntax</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-SystemAuth_002c-in-CVSROOT_002fconfig">SystemAuth, in
CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Tagging-the-working-directory.html#index-tag-_0028subcommand_0029">tag
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Tagging-the-working-directory.html#Tagging-the-working-directory">Tagging
the working directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Tag-file_002c-in-CVS-directory">Tag
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Module-options.html#index-Tag-program">Tag
program</a>:</td><td> </td><td valign="top"><a
href="Module-options.html#Module-options">Module options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-tag_002c-command_002c-introduction">tag, command,
introduction</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Creating-a-branch.html#index-tag_002c-creating-a-branch-using">tag,
creating a branch using</a>:</td><td> </td><td valign="top"><a
href="Creating-a-branch.html#Creating-a-branch">Creating a branch</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tags.html#index-Tag_002c-example">Tag,
example</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Tag_002c-retrieving-old-revisions">Tag, retrieving old
revisions</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Tag_002c-symbolic-name">Tag, symbolic
name</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="taginfo.html#index-taginfo-_0028admin-file_0029">taginfo (admin
file)</a>:</td><td> </td><td valign="top"><a
href="taginfo.html#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tags.html#index-Tags">Tags</a>:</td><td> </td><td valign="top"><a
href="Tags.html#Tags">Tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Tags_002c-deleting">Tags,
deleting</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="taginfo.html#index-Tags_002c-logging">Tags,
logging</a>:</td><td> </td><td valign="top"><a
href="taginfo.html#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Tags_002c-moving">Tags,
moving</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Modifying-tags.html#index-Tags_002c-renaming">Tags,
renaming</a>:</td><td> </td><td valign="top"><a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Sticky-tags.html#index-Tags_002c-sticky">Tags,
sticky</a>:</td><td> </td><td valign="top"><a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="taginfo.html#index-Tags_002c-verifying">Tags,
verifying</a>:</td><td> </td><td valign="top"><a
href="taginfo.html#taginfo">taginfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="A-sample-session.html#index-tc_002c-Trivial-Compiler-_0028example_0029">tc,
Trivial Compiler (example)</a>:</td><td> </td><td valign="top"><a
href="A-sample-session.html#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Team-of-developers">Team of
developers</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-TEMP_002c-environment-variable">TEMP,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Working-directory-storage.html#index-Template-file_002c-in-CVS-directory">Template
file, in CVS directory</a>:</td><td> </td><td valign="top"><a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a></td></tr>
+<tr><td></td><td valign="top"><a
href="rcsinfo.html#index-Template-for-log-message">Template for log
message</a>:</td><td> </td><td valign="top"><a
href="rcsinfo.html#rcsinfo">rcsinfo</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Server-temporary-directory.html#index-Temporary-directories_002c-and-server">Temporary
directories, and server</a>:</td><td> </td><td valign="top"><a
href="Server-temporary-directory.html#Server-temporary-directory">Server
temporary directory</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-Temporary-files_002c-location-of">Temporary
files, location of</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tracking-sources.html#index-Third_002dparty-sources">Third-party
sources</a>:</td><td> </td><td valign="top"><a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Time">Time</a>:</td><td> </td><td
valign="top"><a href="Common-options.html#Common-options">Common
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Timezone_002c-in-input">Timezone, in
input</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="log.html#index-Timezone_002c-in-output">Timezone, in
output</a>:</td><td> </td><td valign="top"><a
href="log.html#log">log</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-TMP_002c-environment-variable">TMP,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-TMPDIR_002c-environment-variable">TMPDIR,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-TMPDIR_002c-overriding">TMPDIR,
overriding</a>:</td><td> </td><td valign="top"><a
href="Global-options.html#Global-options">Global options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-TopLevelAdmin_002c-in-CVSROOT_002fconfig">TopLevelAdmin,
in CVSROOT/config</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Global-options.html#index-Trace">Trace</a>:</td><td> </td><td
valign="top"><a href="Global-options.html#Global-options">Global
options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="History-browsing.html#index-Traceability">Traceability</a>:</td><td> </td><td
valign="top"><a href="History-browsing.html#History-browsing">History
browsing</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tracking-sources.html#index-Tracking-sources">Tracking
sources</a>:</td><td> </td><td valign="top"><a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Concurrency.html#index-Transactions_002c-atomic_002c-lack-of">Transactions,
atomic, lack of</a>:</td><td> </td><td valign="top"><a
href="Concurrency.html#Concurrency">Concurrency</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Trigger-Scripts.html#index-Trigger-scripts">Trigger
scripts</a>:</td><td> </td><td valign="top"><a
href="Trigger-Scripts.html#Trigger-Scripts">Trigger Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Trigger-Script-Security.html#index-Trigger-scripts_002c-security">Trigger
scripts, security</a>:</td><td> </td><td valign="top"><a
href="Trigger-Script-Security.html#Trigger-Script-Security">Trigger Script
Security</a></td></tr>
+<tr><td></td><td valign="top"><a
href="A-sample-session.html#index-Trivial-Compiler-_0028example_0029">Trivial
Compiler (example)</a>:</td><td> </td><td valign="top"><a
href="A-sample-session.html#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Repository.html#index-Typical-repository">Typical
repository</a>:</td><td> </td><td valign="top"><a
href="Repository.html#Repository">Repository</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-Umask_002c-for-repository-files">Umask, for
repository files</a>:</td><td> </td><td valign="top"><a
href="File-permissions.html#File-permissions">File permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Merging-two-revisions.html#index-Undoing-a-change">Undoing a
change</a>:</td><td> </td><td valign="top"><a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Editing-files.html#index-unedit-_0028subcommand_0029">unedit
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Editing-files.html#Editing-files">Editing files</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Unknown">Unknown</a>:</td><td> </td><td
valign="top"><a href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Unreserved-checkouts">Unreserved
checkouts</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Unresolved-Conflict">Unresolved
Conflict</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-Up_002dto_002ddate">Up-to-date</a>:</td><td> </td><td
valign="top"><a href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="update.html#index-update-_0028subcommand_0029">update
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="update.html#update">update</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Updating-a-file.html#index-Update_002c-introduction">Update,
introduction</a>:</td><td> </td><td valign="top"><a
href="Updating-a-file.html#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="File-status.html#index-update_002c-to-display-file-status">update, to
display file status</a>:</td><td> </td><td valign="top"><a
href="File-status.html#File-status">File status</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Updating-a-file.html#index-Updating-a-file">Updating a
file</a>:</td><td> </td><td valign="top"><a
href="Updating-a-file.html#Updating-a-file">Updating a file</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-User-aliases">User
aliases</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-User-variables">User
variables</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-USER_002c-environment-variable">USER, environment
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-USER_002c-internal-variable">USER, internal
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-Notified.html#index-users-_0028admin-file_0029">users (admin
file)</a>:</td><td> </td><td valign="top"><a
href="Getting-Notified.html#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-V">V</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="File-permissions.html#index-val_002dtags-file_002c-and-read_002donly-access-to-projects">val-tags
file, and read-only access to projects</a>:</td><td> </td><td
valign="top"><a href="File-permissions.html#File-permissions">File
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Error-messages.html#index-val_002dtags-file_002c-forcing-tags-into">val-tags
file, forcing tags into</a>:</td><td> </td><td valign="top"><a
href="Error-messages.html#Error-messages">Error messages</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-Variables">Variables</a>:</td><td> </td><td
valign="top"><a href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tracking-sources.html#index-Vendor">Vendor</a>:</td><td> </td><td
valign="top"><a href="Tracking-sources.html#Tracking-sources">Tracking
sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Tracking-sources.html#index-Vendor-branch">Vendor
branch</a>:</td><td> </td><td valign="top"><a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a></td></tr>
+<tr><td></td><td valign="top"><a
href="verifymsg.html#index-verifymsg-_0028admin-file_0029"><samp>verifymsg</samp>
(admin file)</a>:</td><td> </td><td valign="top"><a
href="verifymsg.html#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="verifymsg.html#index-verifymsg_002c-changing-the-log-message"><samp>verifymsg</samp>,
changing the log message</a>:</td><td> </td><td valign="top"><a
href="verifymsg.html#verifymsg">verifymsg</a></td></tr>
+<tr><td></td><td valign="top"><a
href="config.html#index-verifymsg_002c-changing-the-log-message-1"><samp>verifymsg</samp>,
changing the log message</a>:</td><td> </td><td valign="top"><a
href="config.html#config">config</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Invoking-CVS.html#index-version-_0028subcommand_0029">version
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Compatibility.html#index-Versions_002c-of-CVS">Versions, of
CVS</a>:</td><td> </td><td valign="top"><a
href="Compatibility.html#Compatibility">Compatibility</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Versions-revisions-releases.html#index-Versions_002c-revisions-and-releases">Versions,
revisions and releases</a>:</td><td> </td><td valign="top"><a
href="Versions-revisions-releases.html#Versions-revisions-releases">Versions
revisions releases</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Viewing-differences.html#index-Viewing-differences">Viewing
differences</a>:</td><td> </td><td valign="top"><a
href="Viewing-differences.html#Viewing-differences">Viewing
differences</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Committing-your-changes.html#index-VISUAL_002c-environment-variable">VISUAL,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Environment-variables.html#index-VISUAL_002c-environment-variable-1">VISUAL,
environment variable</a>:</td><td> </td><td valign="top"><a
href="Environment-variables.html#Environment-variables">Environment
variables</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Variables.html#index-VISUAL_002c-internal-variable">VISUAL, internal
variable</a>:</td><td> </td><td valign="top"><a
href="Variables.html#Variables">Variables</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-W">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-Notified.html#index-watch-add-_0028subcommand_0029">watch add
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Getting-Notified.html#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Setting-a-watch.html#index-watch-off-_0028subcommand_0029">watch off
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Setting-a-watch.html#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Setting-a-watch.html#index-watch-on-_0028subcommand_0029">watch on
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Setting-a-watch.html#Setting-a-watch">Setting a watch</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Getting-Notified.html#index-watch-remove-_0028subcommand_0029">watch
remove (subcommand)</a>:</td><td> </td><td valign="top"><a
href="Getting-Notified.html#Getting-Notified">Getting Notified</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Watch-information.html#index-watchers-_0028subcommand_0029">watchers
(subcommand)</a>:</td><td> </td><td valign="top"><a
href="Watch-information.html#Watch-information">Watch information</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Watches.html#index-Watches">Watches</a>:</td><td> </td><td
valign="top"><a href="Watches.html#Watches">Watches</a></td></tr>
+<tr><td></td><td valign="top"><a
href="First-import.html#index-wdiff-_0028import-example_0029">wdiff (import
example)</a>:</td><td> </td><td valign="top"><a
href="First-import.html#First-import">First import</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#index-Web-pages_002c-maintaining-with-CVS">Web
pages, maintaining with CVS</a>:</td><td> </td><td valign="top"><a
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy">Keeping a
checked out copy</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Using-keywords.html#index-What-_0028shell-command_0029">What (shell
command)</a>:</td><td> </td><td valign="top"><a
href="Using-keywords.html#Using-keywords">Using keywords</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Branches-motivation.html#index-What-branches-are-good-for">What branches
are good for</a>:</td><td> </td><td valign="top"><a
href="Branches-motivation.html#Branches-motivation">Branches
motivation</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS-not_003f.html#index-What-is-CVS-not_003f">What is CVS
not?</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS-not_003f.html#What-is-CVS-not_003f">What is CVS
not?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="What-is-CVS_003f.html#index-What-is-CVS_003f">What is
CVS?</a>:</td><td> </td><td valign="top"><a
href="What-is-CVS_003f.html#What-is-CVS_003f">What is CVS?</a></td></tr>
+<tr><td></td><td valign="top"><a
href="When-to-commit.html#index-When-to-commit">When to
commit</a>:</td><td> </td><td valign="top"><a
href="When-to-commit.html#When-to-commit">When to commit</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Windows-permissions.html#index-Windows_002c-and-permissions">Windows, and
permissions</a>:</td><td> </td><td valign="top"><a
href="Windows-permissions.html#Windows-permissions">Windows
permissions</a></td></tr>
+<tr><td></td><td valign="top"><a
href="A-sample-session.html#index-Work_002dsession_002c-example-of">Work-session,
example of</a>:</td><td> </td><td valign="top"><a
href="A-sample-session.html#A-sample-session">A sample session</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Multiple-developers.html#index-Working-copy">Working
copy</a>:</td><td> </td><td valign="top"><a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Cleaning-up.html#index-Working-copy_002c-removing">Working copy,
removing</a>:</td><td> </td><td valign="top"><a
href="Cleaning-up.html#Cleaning-up">Cleaning up</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Wrappers.html#index-Wrappers">Wrappers</a>:</td><td> </td><td
valign="top"><a href="Wrappers.html#Wrappers">Wrappers</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Read_002donly-access.html#index-writers-_0028admin-file_0029">writers
(admin file)</a>:</td><td> </td><td valign="top"><a
href="Read_002donly-access.html#Read_002donly-access">Read-only
access</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-X">X</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="BUGS.html#index-Ximbiot">Ximbiot</a>:</td><td> </td><td
valign="top"><a href="BUGS.html#BUGS">BUGS</a></td></tr>
+<tr><td></td><td valign="top"><a
href="Password-authentication-server.html#index-xinetd_002c-configuring-for-pserver">xinetd,
configuring for pserver</a>:</td><td> </td><td valign="top"><a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Index_cp_letter-Z">Z</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="Common-options.html#index-Zone_002c-time_002c-in-input">Zone, time, in
input</a>:</td><td> </td><td valign="top"><a
href="Common-options.html#Common-options">Common options</a></td></tr>
+<tr><td></td><td valign="top"><a
href="log.html#index-Zone_002c-time_002c-in-output">Zone, time, in
output</a>:</td><td> </td><td valign="top"><a
href="log.html#log">log</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter"
href="#Index_cp_symbol-1"><b>!</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-2"><b>#</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-3"><b>&</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-4"><b>-</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-5"><b>.</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-6"><b>/</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-7"><b>:</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-8"><b><</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-9"><b>=</b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-10"><b>></b></a>
+
+<a class="summary-letter" href="#Index_cp_symbol-11"><b>_</b></a>
+
+<br>
+<a class="summary-letter" href="#Index_cp_letter-A"><b>A</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-B"><b>B</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-C"><b>C</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-D"><b>D</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-E"><b>E</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-F"><b>F</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-G"><b>G</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-H"><b>H</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-I"><b>I</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-J"><b>J</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-K"><b>K</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-L"><b>L</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-M"><b>M</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-N"><b>N</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-O"><b>O</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-P"><b>P</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-R"><b>R</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-S"><b>S</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-T"><b>T</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-U"><b>U</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-V"><b>V</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-W"><b>W</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-X"><b>X</b></a>
+
+<a class="summary-letter" href="#Index_cp_letter-Z"><b>Z</b></a>
+
+</td></tr></table>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="BUGS.html#BUGS" accesskey="p" rel="prev">BUGS</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Informing-others.html
===================================================================
RCS file: html_node/Informing-others.html
diff -N html_node/Informing-others.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Informing-others.html 28 Dec 2015 15:57:56 -0000 1.1
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Informing others</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Informing others">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Informing others">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Concurrency.html#Concurrency" rel="next" title="Concurrency">
+<link href="Conflicts-example.html#Conflicts-example" rel="prev"
title="Conflicts example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Informing-others"></a>
+<div class="header">
+<p>
+Next: <a href="Concurrency.html#Concurrency" accesskey="n"
rel="next">Concurrency</a>, Previous: <a
href="Conflicts-example.html#Conflicts-example" accesskey="p"
rel="prev">Conflicts example</a>, Up: <a
href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Informing-others-about-commits"></a>
+<h3 class="section">10.4 Informing others about commits</h3>
+<a name="index-Informing-others"></a>
+<a name="index-Spreading-information"></a>
+<a name="index-Mail_002c-automatic-mail-on-commit"></a>
+
+<p>It is often useful to inform others when you commit a
+new revision of a file. The <samp>loginfo</samp> file can be
+used to automate this process.
+See <a href="loginfo.html#loginfo">loginfo</a>. You can use these features of
<small>CVS</small>
+to, for instance, instruct <small>CVS</small> to mail a
+message to all developers, or post a message to a local
+newsgroup.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Inside.html
===================================================================
RCS file: html_node/Inside.html
diff -N html_node/Inside.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Inside.html 28 Dec 2015 15:57:56 -0000 1.1
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Inside</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Inside">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Inside">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Moving-files.html#Moving-files" rel="up" title="Moving files">
+<link href="Rename-by-copying.html#Rename-by-copying" rel="next" title="Rename
by copying">
+<link href="Outside.html#Outside" rel="prev" title="Outside">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Inside"></a>
+<div class="header">
+<p>
+Next: <a href="Rename-by-copying.html#Rename-by-copying" accesskey="n"
rel="next">Rename by copying</a>, Previous: <a href="Outside.html#Outside"
accesskey="p" rel="prev">Outside</a>, Up: <a
href="Moving-files.html#Moving-files" accesskey="u" rel="up">Moving files</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Moving-the-history-file"></a>
+<h4 class="subsection">7.4.2 Moving the history file</h4>
+
+<p>This method is more dangerous, since it involves moving
+files inside the repository. Read this entire section
+before trying it out!
+</p>
+<div class="example">
+<pre class="example">$ cd $CVSROOT/<var>dir</var>
+$ mv <var>old</var>,v <var>new</var>,v
+</pre></div>
+
+<p>Advantages:
+</p>
+<ul>
+<li> The log of changes is maintained intact.
+
+</li><li> The revision numbers are not affected.
+</li></ul>
+
+<p>Disadvantages:
+</p>
+<ul>
+<li> Old releases cannot easily be fetched from the
+repository. (The file will show up as <var>new</var> even
+in revisions from the time before it was renamed).
+
+</li><li> There is no log information of when the file was renamed.
+
+</li><li> Nasty things might happen if someone accesses the history file
+while you are moving it. Make sure no one else runs any of the
<small>CVS</small>
+commands while you move it.
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: html_node/Intro-administrative-files.html
===================================================================
RCS file: html_node/Intro-administrative-files.html
diff -N html_node/Intro-administrative-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Intro-administrative-files.html 28 Dec 2015 15:57:57 -0000
1.1
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Intro administrative
files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Intro administrative files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Intro administrative files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Multiple-repositories.html#Multiple-repositories" rel="next"
title="Multiple repositories">
+<link href="Working-directory-storage.html#Working-directory-storage"
rel="prev" title="Working directory storage">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Intro-administrative-files"></a>
+<div class="header">
+<p>
+Next: <a href="Multiple-repositories.html#Multiple-repositories" accesskey="n"
rel="next">Multiple repositories</a>, Previous: <a
href="Working-directory-storage.html#Working-directory-storage" accesskey="p"
rel="prev">Working directory storage</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-administrative-files"></a>
+<h3 class="section">2.4 The administrative files</h3>
+<a name="index-Administrative-files-_0028intro_0029"></a>
+<a name="index-Modules-file"></a>
+<a name="index-CVSROOT_002c-module-name"></a>
+<a name="index-Defining-modules-_0028intro_0029"></a>
+
+
+<p>The directory <samp>$CVSROOT/CVSROOT</samp> contains some <em>administrative
+files</em>. See <a
href="Administrative-files.html#Administrative-files">Administrative files</a>,
for a complete description.
+You can use <small>CVS</small> without any of these files, but
+some commands work better when at least the
+<samp>modules</samp> file is properly set up.
+</p>
+<p>The most important of these files is the <samp>modules</samp>
+file. It defines all modules in the repository. This
+is a sample <samp>modules</samp> file.
+</p>
+<div class="example">
+<pre class="example">CVSROOT CVSROOT
+modules CVSROOT modules
+cvs gnu/cvs
+rcs gnu/rcs
+diff gnu/diff
+tc yoyodyne/tc
+</pre></div>
+
+<p>The <samp>modules</samp> file is line oriented. In its
+simplest form each line contains the name of the
+module, whitespace, and the directory where the module
+resides. The directory is a path relative to
+<code>$CVSROOT</code>. The last four lines in the example
+above are examples of such lines.
+</p>
+
+<p>The line that defines the module called ‘<samp>modules</samp>’
+uses features that are not explained here.
+See <a href="modules.html#modules">modules</a>, for a full explanation of all
the
+available features.
+</p>
+<a name="Editing-administrative-files"></a>
+<h4 class="subsection">2.4.1 Editing administrative files</h4>
+<a name="index-Editing-administrative-files"></a>
+<a name="index-Administrative-files_002c-editing-them"></a>
+
+<p>You edit the administrative files in the same way that you would edit
+any other module. Use ‘<samp>cvs checkout CVSROOT</samp>’ to get
a working
+copy, edit it, and commit your changes in the normal way.
+</p>
+<p>It is possible to commit an erroneous administrative
+file. You can often fix the error and check in a new
+revision, but sometimes a particularly bad error in the
+administrative file makes it impossible to commit new
+revisions. If and when this happens, you can correct
+the problem by temporarily copying a corrected administrative file
+directly into the <code>$CVSROOT/CVSROOT</code> repository directory,
+then committing the same correction via a checkout of the <samp>CVSROOT</samp>
+module. It is important that the correction also be made via the
+checked out copy, or the next checkout and commit to the
+<code>CVSROOT</code> module will overwrite the correction that was
+copied directly into the repository, possibly breaking things in such
+a way as to prevent commits again.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Multiple-repositories.html#Multiple-repositories" accesskey="n"
rel="next">Multiple repositories</a>, Previous: <a
href="Working-directory-storage.html#Working-directory-storage" accesskey="p"
rel="prev">Working directory storage</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Invoking-CVS.html
===================================================================
RCS file: html_node/Invoking-CVS.html
diff -N html_node/Invoking-CVS.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Invoking-CVS.html 28 Dec 2015 15:57:57 -0000 1.1
@@ -0,0 +1,1135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Invoking CVS</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Invoking CVS">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Invoking CVS">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Administrative-files.html#Administrative-files" rel="next"
title="Administrative files">
+<link href="update-output.html#update-output" rel="prev" title="update output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Invoking-CVS"></a>
+<div class="header">
+<p>
+Next: <a href="Administrative-files.html#Administrative-files" accesskey="n"
rel="next">Administrative files</a>, Previous: <a
href="CVS-commands.html#CVS-commands" accesskey="p" rel="prev">CVS
commands</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Quick-reference-to-CVS-commands"></a>
+<h2 class="appendix">Appendix B Quick reference to CVS commands</h2>
+<a name="index-Command-reference"></a>
+<a name="index-Reference_002c-commands"></a>
+<a name="index-Invoking-CVS"></a>
+
+<p>This appendix describes how to invoke <small>CVS</small>, with
+references to where each command or feature is
+described in detail. For other references run the
+<code>cvs --help</code> command, or see <a href="Index.html#Index">Index</a>.
+</p>
+<p>A <small>CVS</small> command looks like:
+</p>
+<div class="example">
+<pre class="example">cvs [ <var>global_options</var> ] <var>command</var> [
<var>command_options</var> ] [ <var>command_args</var> ]
+</pre></div>
+
+<p>Global options:
+</p>
+<dl compact="compact">
+<dt><code>--allow-root=<var>rootdir</var></code></dt>
+<dd><p>Specify legal <small>CVSROOT</small> directory (server only) (not
+in <small>CVS</small> 1.9 and older). See <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>.
+</p>
+</dd>
+<dt><code>-a</code></dt>
+<dd><p>Authenticate all communication (client only) (not in <small>CVS</small>
+1.9 and older). See <a href="Global-options.html#Global-options">Global
options</a>.
+</p>
+</dd>
+<dt><code>-b</code></dt>
+<dd><p>Specify RCS location (<small>CVS</small> 1.9 and older). See
+<a href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-d <var>root</var></code></dt>
+<dd><p>Specify the <small>CVSROOT</small>. See <a
href="Repository.html#Repository">Repository</a>.
+</p>
+</dd>
+<dt><code>-e <var>editor</var></code></dt>
+<dd><p>Edit messages with <var>editor</var>. See <a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Do not read the <samp>~/.cvsrc</samp> file. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-H</code></dt>
+<dt><code>--help</code></dt>
+<dd><p>Print a help message. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not change any files. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-Q</code></dt>
+<dd><p>Be really quiet. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Be somewhat quiet. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-r</code></dt>
+<dd><p>Make new working files read-only. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-s <var>variable</var>=<var>value</var></code></dt>
+<dd><p>Set a user variable. See <a
href="Variables.html#Variables">Variables</a>.
+</p>
+</dd>
+<dt><code>-T <var>tempdir</var></code></dt>
+<dd><p>Put temporary files in <var>tempdir</var>. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Trace <small>CVS</small> execution. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dt><code>--version</code></dt>
+<dd><p>Display version and copyright information for <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Make new working files read-write. See <a
href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-x</code></dt>
+<dd><p>Encrypt all communication (client only).
+See <a href="Global-options.html#Global-options">Global options</a>.
+</p>
+</dd>
+<dt><code>-z <var>gzip-level</var></code></dt>
+<dd><a name="index-Compression-1"></a>
+<a name="index-Gzip-1"></a>
+<p>Set the compression level (client only).
+See <a href="Global-options.html#Global-options">Global options</a>.
+</p></dd>
+</dl>
+
+<p>Keyword expansion modes (see <a
href="Substitution-modes.html#Substitution-modes">Substitution modes</a>):
+</p>
+<div class="example">
+<pre class="example">-kkv $<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp
$
+-kkvl $<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+-kk $<i></i>Id$
+-kv file1,v 1.1 1993/12/09 03:21:13 joe Exp
+-ko <i>no expansion</i>
+-kb <i>no expansion, file is binary</i>
+</pre></div>
+
+<p>Keywords (see <a href="Keyword-list.html#Keyword-list">Keyword list</a>):
+</p>
+<div class="example">
+<pre class="example">$<i></i>Author: joe $
+$<i></i>Date: 1993/12/09 03:21:13 $
+$<i></i>Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$<i></i>Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$<i></i>Locker: harry $
+$<i></i>Name: snapshot_1_14 $
+$<i></i>RCSfile: file1,v $
+$<i></i>Revision: 1.1 $
+$<i></i>Source: /home/files/file1,v $
+$<i></i>State: Exp $
+$<i></i>Log: file1,v $
+Revision 1.1 1993/12/09 03:30:17 joe
+Initial revision
+
+</pre></div>
+
+<p>Commands, command options, and command arguments:
+</p>
+<dl compact="compact">
+<dt><code>add [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Add a new file/directory. See <a
href="Adding-files.html#Adding-files">Adding files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Set keyword expansion.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Set file description.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>admin [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Administration of history files in the repository. See
+<a href="admin.html#admin">admin</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b[<var>rev</var>]</code></dt>
+<dd><p>Set default branch. See <a
href="Reverting-local-changes.html#Reverting-local-changes">Reverting local
changes</a>.
+</p>
+</dd>
+<dt><code>-c<var>string</var></code></dt>
+<dd><p>Set comment leader.
+</p>
+</dd>
+<dt><code>-k<var>subst</var></code></dt>
+<dd><p>Set keyword substitution. See <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-l[<var>rev</var>]</code></dt>
+<dd><p>Lock revision <var>rev</var>, or latest revision.
+</p>
+</dd>
+<dt><code>-m<var>rev</var>:<var>msg</var></code></dt>
+<dd><p>Replace the log message of revision <var>rev</var> with
+<var>msg</var>.
+</p>
+</dd>
+<dt><code>-o<var>range</var></code></dt>
+<dd><p>Delete revisions from the repository. See
+<a href="admin-options.html#admin-options">admin options</a>.
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Run quietly; do not print diagnostics.
+</p>
+</dd>
+<dt><code>-s<var>state</var>[:<var>rev</var>]</code></dt>
+<dd><p>Set the state. See <a href="admin-options.html#admin-options">admin
options</a> for more information on possible
+states.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Set file description from standard input.
+</p>
+</dd>
+<dt><code>-t<var>file</var></code></dt>
+<dd><p>Set file description from <var>file</var>.
+</p>
+</dd>
+<dt><code>-t-<var>string</var></code></dt>
+<dd><p>Set file description to <var>string</var>.
+</p>
+</dd>
+<dt><code>-u[<var>rev</var>]</code></dt>
+<dd><p>Unlock revision <var>rev</var>, or latest revision.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>annotate [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show last revision where each line was modified. See
+<a href="annotate.html#annotate">annotate</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate the most recent revision no later than
+<var>date</var>. See <a href="Common-options.html#Common-options">Common
options</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Annotate revision <var>tag</var>. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>checkout [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Get a copy of the sources. See <a
href="checkout.html#checkout">checkout</a>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags/date/options. See <a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a> and <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Output the module database. See <a
href="checkout-options.html#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var> (is sticky). See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Check out into <var>dir</var>. See <a
href="checkout-options.html#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-j <var>rev</var></code></dt>
+<dd><p>Merge in changes. See <a
href="checkout-options.html#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="Substitution-modes.html#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Don’t “shorten” module paths if -d specified. See
+<a href="checkout-options.html#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="checkout-options.html#checkout-options">checkout options</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a
href="Moving-directories.html#Moving-directories">Moving directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Check out files to standard output (avoids
+stickiness). See <a href="checkout-options.html#checkout-options">checkout
options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var> (is sticky). See <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Like -c, but include module status. See <a
href="checkout-options.html#checkout-options">checkout options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>commit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Check changes into the repository. See <a
href="commit.html#commit">commit</a>.
+</p>
+<dl compact="compact">
+<dt><code>-F <var>file</var></code></dt>
+<dd><p>Read log message from <var>file</var>. See <a
href="commit-options.html#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force the file to be committed; disables recursion.
+See <a href="commit-options.html#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Use <var>msg</var> as log message. See <a
href="commit-options.html#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="commit-options.html#commit-options">commit options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Commit to <var>rev</var>. See <a
href="commit-options.html#commit-options">commit options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>diff [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show differences between revisions. See <a
href="diff.html#diff">diff</a>.
+In addition to the options shown below, accepts a wide
+variety of options to control output style, for example
+‘<samp>-c</samp>’ for context diffs.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date1</var></code></dt>
+<dd><p>Diff revision for date against working file. See
+<a href="diff-options.html#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date2</var></code></dt>
+<dd><p>Diff <var>rev1</var>/<var>date1</var> against <var>date2</var>. See
+<a href="diff-options.html#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Include diffs for added and removed files. See
+<a href="diff-options.html#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev1</var></code></dt>
+<dd><p>Diff revision for <var>rev1</var> against working file. See
+<a href="diff-options.html#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev2</var></code></dt>
+<dd><p>Diff <var>rev1</var>/<var>date1</var> against <var>rev2</var>. See <a
href="diff-options.html#diff-options">diff options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>edit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Get ready to edit a watched file. See <a
href="Editing-files.html#Editing-files">Editing files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a <var>actions</var></code></dt>
+<dd><p>Specify actions for temporary watch, where
+<var>actions</var> is <code>edit</code>, <code>unedit</code>,
+<code>commit</code>, <code>all</code>, or <code>none</code>. See
+<a href="Editing-files.html#Editing-files">Editing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>editors [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>See who is editing a watched file. See <a
href="Watch-information.html#Watch-information">Watch information</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>export [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Export files from <small>CVS</small>. See <a
href="export.html#export">export</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var>. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Check out into <var>dir</var>. See <a
href="export-options.html#export-options">export options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="Substitution-modes.html#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Don’t “shorten” module paths if -d specified. See
+<a href="export-options.html#export-options">export options</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run module program (if any). See <a
href="export-options.html#export-options">export options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var>. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>history [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Show repository access history. See <a
href="history.html#history">history</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>All users (default is self). See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-b <var>str</var></code></dt>
+<dd><p>Back to record with <var>str</var> in module/file/repos
+field. See <a href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Report on committed (modified) files. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Since <var>date</var>. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-e</code></dt>
+<dd><p>Report on all record types. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Last modified (committed or modified report). See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-m <var>module</var></code></dt>
+<dd><p>Report on <var>module</var> (repeatable). See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-n <var>module</var></code></dt>
+<dd><p>In <var>module</var>. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-o</code></dt>
+<dd><p>Report on checked out modules. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-p <var>repository</var></code></dt>
+<dd><p>In <var>repository</var>. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Since revision <var>rev</var>. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-T</code></dt>
+<dd><p>Produce report on all TAGs. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-t <var>tag</var></code></dt>
+<dd><p>Since tag record placed in history file (by anyone).
+See <a href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-u <var>user</var></code></dt>
+<dd><p>For user <var>user</var> (repeatable). See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Working directory must match. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-x <var>types</var></code></dt>
+<dd><p>Report on <var>types</var>, one or more of
+<code>TOEFWUPCGMAR</code>. See <a
href="history-options.html#history-options">history options</a>.
+</p>
+</dd>
+<dt><code>-z <var>zone</var></code></dt>
+<dd><p>Output for time zone <var>zone</var>. See <a
href="history-options.html#history-options">history options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>import [<var>options</var>] <var>repository</var>
<var>vendor-tag</var> <var>release-tags</var>…</code></dt>
+<dd><p>Import files into <small>CVS</small>, using vendor branches. See
+<a href="import.html#import">import</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b <var>bra</var></code></dt>
+<dd><p>Import to vendor branch <var>bra</var>. See
+<a href="Multiple-vendor-branches.html#Multiple-vendor-branches">Multiple
vendor branches</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Use the file’s modification time as the time of
+import. See <a href="import-options.html#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Set default keyword substitution mode. See
+<a href="import-options.html#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-m <var>msg</var></code></dt>
+<dd><p>Use <var>msg</var> for log message. See
+<a href="import-options.html#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-I <var>ign</var></code></dt>
+<dd><p>More files to ignore (! to reset). See
+<a href="import-options.html#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>More wrappers. See <a href="import-options.html#import-options">import
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>init</code></dt>
+<dd><p>Create a <small>CVS</small> repository if it doesn’t exist. See
+<a href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a>.
+</p>
+</dd>
+<dt><code>kserver</code></dt>
+<dd><p>Kerberos authenticated server.
+See <a href="Kerberos-authenticated.html#Kerberos-authenticated">Kerberos
authenticated</a>.
+</p>
+</dd>
+<dt><code>log [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Print out history information for files. See <a
href="log.html#log">log</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Only list revisions on the default branch. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Specify dates (<var>d1</var><<var>d2</var> for range, <var>d</var>
for
+latest before). See <a href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Only print header. See <a href="log-options.html#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not list tags. See <a href="log-options.html#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Only print name of RCS file. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-r<var>revs</var></code></dt>
+<dd><p>Only list revisions <var>revs</var>. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Only list revisions with specified states. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Only print header and descriptive text. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Only list revisions checked in by specified logins. See <a
href="log-options.html#log-options">log options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>login</code></dt>
+<dd><p>Prompt for password for authenticating server. See
+<a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a>.
+</p>
+</dd>
+<dt><code>logout</code></dt>
+<dd><p>Remove stored password for authenticating server. See
+<a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a>.
+</p>
+</dd>
+<dt><code>pserver</code></dt>
+<dd><p>Password authenticated server.
+See <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>.
+</p>
+</dd>
+<dt><code>rannotate [<var>options</var>]
[<var>modules</var>…]</code></dt>
+<dd><p>Show last revision where each line was modified. See
+<a href="annotate.html#annotate">annotate</a>.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate the most recent revision no later than
+<var>date</var>. See <a href="Common-options.html#Common-options">Common
options</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Annotate revision <var>tag</var>. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rdiff [<var>options</var>] <var>modules</var>…</code></dt>
+<dd><p>Show differences between releases. See <a
href="rdiff.html#rdiff">rdiff</a>.
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Context diff output format (default). See <a
href="rdiff-options.html#rdiff-options">rdiff options</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Select revisions based on <var>date</var>. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Select revisions based on <var>rev</var>. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Short patch - one liner per file. See <a
href="rdiff-options.html#rdiff-options">rdiff options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Top two diffs - last change made to the file. See
+<a href="diff-options.html#diff-options">diff options</a>.
+</p>
+</dd>
+<dt><code>-u</code></dt>
+<dd><p>Unidiff output format. See <a
href="rdiff-options.html#rdiff-options">rdiff options</a>.
+</p>
+</dd>
+<dt><code>-V <var>vers</var></code></dt>
+<dd><p>Use RCS Version <var>vers</var> for keyword expansion (obsolete). See
+<a href="rdiff-options.html#rdiff-options">rdiff options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>release [<var>options</var>] <var>directory</var></code></dt>
+<dd><p>Indicate that a directory is no longer in use. See
+<a href="release.html#release">release</a>.
+</p>
+<dl compact="compact">
+<dt><code>-d</code></dt>
+<dd><p>Delete the given directory. See <a
href="release-options.html#release-options">release options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>remove [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Remove an entry from the repository. See <a
href="Removing-files.html#Removing-files">Removing files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-f</code></dt>
+<dd><p>Delete the file before removing it. See <a
href="Removing-files.html#Removing-files">Removing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rlog [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Print out history information for modules. See <a
href="log.html#log">log</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Only list revisions on the default branch. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Specify dates (<var>d1</var><<var>d2</var> for range, <var>d</var>
for
+latest before). See <a href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Only print header. See <a href="log-options.html#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not list tags. See <a href="log-options.html#log-options">log
options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Only print name of RCS file. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-r<var>revs</var></code></dt>
+<dd><p>Only list revisions <var>revs</var>. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Only list revisions with specified states. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Only print header and descriptive text. See <a
href="log-options.html#log-options">log options</a>.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Only list revisions checked in by specified logins. See <a
href="log-options.html#log-options">log options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>rtag [<var>options</var>] <var>tag</var>
<var>modules</var>…</code></dt>
+<dd><p>Add a symbolic tag to a module.
+See <a href="Revisions.html#Revisions">Revisions</a> and <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>Clear tag from removed files that would not otherwise
+be tagged. See <a
href="Tagging-add_002fremove.html#Tagging-add_002fremove">Tagging
add/remove</a>.
+</p>
+</dd>
+<dt><code>-b</code></dt>
+<dd><p>Create a branch named <var>tag</var>. See <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>.
+</p>
+</dd>
+<dt><code>-B</code></dt>
+<dd><p>Used in conjunction with -F or -d, enables movement and deletion of
+branch tags. Use with extreme caution.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag revisions as of <var>date</var>. See <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Delete <var>tag</var>. See <a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Move <var>tag</var> if it already exists. See <a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force a head revision match if tag/date not found.
+See <a href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>No execution of tag program. See <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Tag existing tag <var>rev</var>. See <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>server</code></dt>
+<dd><p>Rsh server. See <a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via rsh</a>.
+</p>
+</dd>
+<dt><code>status [<var>options</var>] <var>files</var>…</code></dt>
+<dd><p>Display status information in a working directory. See
+<a href="File-status.html#File-status">File status</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-v</code></dt>
+<dd><p>Include tag information for file. See <a
href="Tags.html#Tags">Tags</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>tag [<var>options</var>] <var>tag</var>
[<var>files</var>…]</code></dt>
+<dd><p>Add a symbolic tag to checked out version of files.
+See <a href="Revisions.html#Revisions">Revisions</a> and <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Create a branch named <var>tag</var>. See <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Check that working files are unmodified. See
+<a
href="Tagging-the-working-directory.html#Tagging-the-working-directory">Tagging
the working directory</a>.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag revisions as of <var>date</var>. See <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Delete <var>tag</var>. See <a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Move <var>tag</var> if it already exists. See <a
href="Modifying-tags.html#Modifying-tags">Modifying tags</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Force a head revision match if tag/date not found.
+See <a href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Tag existing tag <var>rev</var>. See <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">Tagging by
date/tag</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>unedit [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Undo an edit command. See <a
href="Editing-files.html#Editing-files">Editing files</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>update [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>Bring work tree in sync with repository. See
+<a href="update.html#update">update</a>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags/date/options. See <a
href="Sticky-tags.html#Sticky-tags">Sticky tags</a> and <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-C</code></dt>
+<dd><p>Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+<samp>.#<var>file</var>.<var>revision</var></samp>, however).
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Check out revisions as of <var>date</var> (is sticky). See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Create directories. See <a
href="update-options.html#update-options">update options</a>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found. See
+<a href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-I <var>ign</var></code></dt>
+<dd><p>More files to ignore (! to reset). See
+<a href="import-options.html#import-options">import options</a>.
+</p>
+</dd>
+<dt><code>-j <var>rev</var></code></dt>
+<dd><p>Merge in changes. See <a
href="update-options.html#update-options">update options</a>.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Use <var>kflag</var> keyword expansion. See
+<a href="Substitution-modes.html#Substitution-modes">Substitution modes</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a
href="Moving-directories.html#Moving-directories">Moving directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Check out files to standard output (avoids
+stickiness). See <a href="update-options.html#update-options">update
options</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Checkout revision <var>tag</var> (is sticky). See <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>More wrappers. See <a href="import-options.html#import-options">import
options</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>version</code></dt>
+<dd><a name="index-version-_0028subcommand_0029"></a>
+
+<p>Display the version of <small>CVS</small> being used. If the repository
+is remote, display both the client and server versions.
+</p>
+</dd>
+<dt><code>watch [on|off|add|remove] [<var>options</var>]
[<var>files</var>…]</code></dt>
+<dd>
+<p>on/off: turn on/off read-only checkouts of files. See
+<a href="Setting-a-watch.html#Setting-a-watch">Setting a watch</a>.
+</p>
+<p>add/remove: add or remove notification on actions. See
+<a href="Getting-Notified.html#Getting-Notified">Getting Notified</a>.
+</p>
+<dl compact="compact">
+<dt><code>-a <var>actions</var></code></dt>
+<dd><p>Specify actions for temporary watch, where
+<var>actions</var> is <code>edit</code>, <code>unedit</code>,
+<code>commit</code>, <code>all</code>, or <code>none</code>. See
+<a href="Editing-files.html#Editing-files">Editing files</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>watchers [<var>options</var>] [<var>files</var>…]</code></dt>
+<dd><p>See who is watching a file. See <a
href="Watch-information.html#Watch-information">Watch information</a>.
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Operate recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Administrative-files.html#Administrative-files" accesskey="n"
rel="next">Administrative files</a>, Previous: <a
href="CVS-commands.html#CVS-commands" accesskey="p" rel="prev">CVS
commands</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Keeping-a-checked-out-copy.html
===================================================================
RCS file: html_node/Keeping-a-checked-out-copy.html
diff -N html_node/Keeping-a-checked-out-copy.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Keeping-a-checked-out-copy.html 28 Dec 2015 15:57:57 -0000
1.1
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Keeping a checked out
copy</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Keeping a checked out copy">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Keeping a checked out copy">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="loginfo.html#loginfo" rel="up" title="loginfo">
+<link href="rcsinfo.html#rcsinfo" rel="next" title="rcsinfo">
+<link href="loginfo-example.html#loginfo-example" rel="prev" title="loginfo
example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Keeping-a-checked-out-copy"></a>
+<div class="header">
+<p>
+Previous: <a href="loginfo-example.html#loginfo-example" accesskey="p"
rel="prev">loginfo example</a>, Up: <a href="loginfo.html#loginfo"
accesskey="u" rel="up">loginfo</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Keeping-a-checked-out-copy-1"></a>
+<h4 class="appendixsubsubsec">C.4.4.2 Keeping a checked out copy</h4>
+
+<a name="index-Keeping-a-checked-out-copy"></a>
+<a name="index-Checked-out-copy_002c-keeping"></a>
+<a name="index-Web-pages_002c-maintaining-with-CVS"></a>
+
+<p>It is often useful to maintain a directory tree which
+contains files which correspond to the latest version
+in the repository. For example, other developers might
+want to refer to the latest sources without having to
+check them out, or you might be maintaining a web site
+with <small>CVS</small> and want every checkin to cause the files
+used by the web server to be updated.
+</p>
+<p>The way to do this is by having loginfo invoke
+<code>cvs update</code>. Doing so in the naive way will
+cause a problem with locks, so the <code>cvs update</code>
+must be run in the background.
+Here is an example for unix (this should all be on one line):
+</p>
+<div class="example">
+<pre class="example">^cyclic-pages (date; cat; (sleep 2; cd
/u/www/local-docs;
+ cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
+</pre></div>
+
+<p>This will cause checkins to repository directories
+starting with <code>cyclic-pages</code> to update the checked
+out tree in <samp>/u/www/local-docs</samp>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Kerberos-authenticated.html
===================================================================
RCS file: html_node/Kerberos-authenticated.html
diff -N html_node/Kerberos-authenticated.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Kerberos-authenticated.html 28 Dec 2015 15:57:57 -0000
1.1
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Kerberos
authenticated</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Kerberos authenticated">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Kerberos authenticated">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link href="Connecting-via-fork.html#Connecting-via-fork" rel="next"
title="Connecting via fork">
+<link href="GSSAPI-authenticated.html#GSSAPI-authenticated" rel="prev"
title="GSSAPI authenticated">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Kerberos-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="Connecting-via-fork.html#Connecting-via-fork" accesskey="n"
rel="next">Connecting via fork</a>, Previous: <a
href="GSSAPI-authenticated.html#GSSAPI-authenticated" accesskey="p"
rel="prev">GSSAPI authenticated</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Direct-connection-with-Kerberos"></a>
+<h4 class="subsection">2.9.5 Direct connection with Kerberos</h4>
+
+<a name="index-Kerberos_002c-using-_003akserver_003a"></a>
+<a name="index-Security_002c-Kerberos"></a>
+<a name="index-_003akserver_003a_002c-setting-up"></a>
+<p>The easiest way to use Kerberos is to use the Kerberos
+<code>rsh</code>, as described in <a
href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting via rsh</a>.
+The main disadvantage of using rsh is that all the data
+needs to pass through additional programs, so it may be
+slower. So if you have Kerberos installed you can
+connect via a direct <small>TCP</small> connection,
+authenticating with Kerberos.
+</p>
+<p>This section concerns the Kerberos network security
+system, version 4. Kerberos version 5 is supported via
+the GSSAPI generic network security interface, as
+described in the previous section.
+</p>
+<p>To do this, <small>CVS</small> needs to be compiled with Kerberos
+support; when configuring <small>CVS</small> it tries to detect
+whether Kerberos is present or you can use the
+<samp>--with-krb4</samp> flag to configure.
+</p>
+<p>The data transmitted is <em>not</em> encrypted by
+default. Encryption support must be compiled into both
+the client and server; use the
+<samp>--enable-encryption</samp> configure option to turn it
+on. You must then use the <code>-x</code> global option to
+request encryption.
+</p>
+<a name="index-CVS_005fCLIENT_005fPORT"></a>
+<p>You need to edit <samp>inetd.conf</samp> on the server
+machine to run <code>cvs kserver</code>. The client uses
+port 1999 by default; if you want to use another port
+specify it in the <code>CVSROOT</code> (see <a
href="Remote-repositories.html#Remote-repositories">Remote repositories</a>)
+or the <code>CVS_CLIENT_PORT</code> environment variable
+(see <a href="Environment-variables.html#Environment-variables">Environment
variables</a>) on the client.
+</p>
+<a name="index-kinit"></a>
+<p>When you want to use <small>CVS</small>, get a ticket in the
+usual way (generally <code>kinit</code>); it must be a ticket
+which allows you to log into the server machine. Then
+you are ready to go:
+</p>
+<div class="example">
+<pre class="example">cvs -d :kserver:faun.example.org:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<p>Previous versions of <small>CVS</small> would fall back to a
+connection via rsh; this version will not do so.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Connecting-via-fork.html#Connecting-via-fork" accesskey="n"
rel="next">Connecting via fork</a>, Previous: <a
href="GSSAPI-authenticated.html#GSSAPI-authenticated" accesskey="p"
rel="prev">GSSAPI authenticated</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Keyword-list.html
===================================================================
RCS file: html_node/Keyword-list.html
diff -N html_node/Keyword-list.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Keyword-list.html 28 Dec 2015 15:57:57 -0000 1.1
@@ -0,0 +1,169 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Keyword list</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Keyword list">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Keyword list">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="up"
title="Keyword substitution">
+<link href="Using-keywords.html#Using-keywords" rel="next" title="Using
keywords">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="prev"
title="Keyword substitution">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Keyword-list"></a>
+<div class="header">
+<p>
+Next: <a href="Using-keywords.html#Using-keywords" accesskey="n"
rel="next">Using keywords</a>, Up: <a
href="Keyword-substitution.html#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Keyword-List"></a>
+<h3 class="section">12.1 Keyword List</h3>
+<a name="index-Keyword-List"></a>
+
+
+<p>This is a list of the keywords:
+</p>
+<dl compact="compact">
+<dd><a name="index-Author-keyword"></a>
+</dd>
+<dt><code>$<i></i>Author$</code></dt>
+<dd><p>The login name of the user who checked in the revision.
+</p>
+<a name="index-Date-keyword"></a>
+</dd>
+<dt><code>$<i></i>Date$</code></dt>
+<dd><p>The date and time (UTC) the revision was checked in.
+</p>
+<a name="index-Header-keyword"></a>
+</dd>
+<dt><code>$<i></i>Header$</code></dt>
+<dd><p>A standard header containing the full pathname of the
+<small>RCS</small> file, the revision number, the date (UTC), the
+author, the state, and the locker (if locked). Files
+will normally never be locked when you use <small>CVS</small>.
+</p>
+<a name="index-Id-keyword"></a>
+</dd>
+<dt><code>$<i></i>Id$</code></dt>
+<dd><p>Same as <code>$<i></i>Header$</code>, except that the <small>RCS</small>
+filename is without a path.
+</p>
+<a name="index-Name-keyword"></a>
+</dd>
+<dt><code>$<i></i>Name$</code></dt>
+<dd><p>Tag name used to check out this file. The keyword is
+expanded only if one checks out with an explicit tag
+name. For example, when running the command <code>cvs
+co -r first</code>, the keyword expands to ‘<samp>Name:
first</samp>’.
+</p>
+<a name="index-Locker-keyword"></a>
+</dd>
+<dt><code>$<i></i>Locker$</code></dt>
+<dd><p>The login name of the user who locked the revision
+(empty if not locked, which is the normal case unless
+<code>cvs admin -l</code> is in use).
+</p>
+<a name="index-Log-keyword"></a>
+</dd>
+<dt><code>$<i></i>Log$</code></dt>
+<dd><p>The log message supplied during commit, preceded by a
+header containing the <small>RCS</small> filename, the revision
+number, the author, and the date (UTC). Existing log
+messages are <em>not</em> replaced. Instead, the new log
+message is inserted after <code>$<i></i>Log:…$</code>.
+Each new line is prefixed with the same string which
+precedes the <code>$Log</code> keyword. For example, if the
+file contains:
+</p>
+<div class="example">
+<pre class="example"> /* Here is what people have been up to:
+ *
+ * $<i></i>Log: frob.c,v $
+ * Revision 1.1 1997/01/03 14:23:51 joe
+ * Add the superfrobnicate option
+ *
+ */
+</pre></div>
+
+<p>then additional lines which are added when expanding
+the <code>$Log</code> keyword will be preceded by ‘<samp> *
</samp>’.
+Unlike previous versions of <small>CVS</small> and <small>RCS</small>, the
+<em>comment leader</em> from the <small>RCS</small> file is not used.
+The <code>$Log</code> keyword is useful for
+accumulating a complete change log in a source file,
+but for several reasons it can be problematic.
+See <a href="Log-keyword.html#Log-keyword">Log keyword</a>.
+</p>
+<a name="index-RCSfile-keyword"></a>
+</dd>
+<dt><code>$<i></i>RCSfile$</code></dt>
+<dd><p>The name of the RCS file without a path.
+</p>
+<a name="index-Revision-keyword"></a>
+</dd>
+<dt><code>$<i></i>Revision$</code></dt>
+<dd><p>The revision number assigned to the revision.
+</p>
+<a name="index-Source-keyword"></a>
+</dd>
+<dt><code>$<i></i>Source$</code></dt>
+<dd><p>The full pathname of the RCS file.
+</p>
+<a name="index-State-keyword"></a>
+</dd>
+<dt><code>$<i></i>State$</code></dt>
+<dd><p>The state assigned to the revision. States can be
+assigned with <code>cvs admin -s</code>—see <a
href="admin-options.html#admin-options">admin options</a>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Using-keywords.html#Using-keywords" accesskey="n"
rel="next">Using keywords</a>, Up: <a
href="Keyword-substitution.html#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Keyword-substitution.html
===================================================================
RCS file: html_node/Keyword-substitution.html
diff -N html_node/Keyword-substitution.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Keyword-substitution.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Keyword
substitution</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Keyword substitution">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Keyword substitution">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Keyword-list.html#Keyword-list" rel="next" title="Keyword list">
+<link href="When-to-commit.html#When-to-commit" rel="prev" title="When to
commit">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Keyword-substitution"></a>
+<div class="header">
+<p>
+Next: <a href="Tracking-sources.html#Tracking-sources" accesskey="n"
rel="next">Tracking sources</a>, Previous: <a
href="Revision-management.html#Revision-management" accesskey="p"
rel="prev">Revision management</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Keyword-substitution-1"></a>
+<h2 class="chapter">12 Keyword substitution</h2>
+<a name="index-Keyword-substitution"></a>
+<a name="index-Keyword-expansion"></a>
+<a name="index-Identifying-files"></a>
+
+
+<p>As long as you edit source files inside a working
+directory you can always find out the state of
+your files via ‘<samp>cvs status</samp>’ and ‘<samp>cvs
log</samp>’.
+But as soon as you export the files from your
+development environment it becomes harder to identify
+which revisions they are.
+</p>
+<p><small>CVS</small> can use a mechanism known as <em>keyword
+substitution</em> (or <em>keyword expansion</em>) to help
+identifying the files. Embedded strings of the form
+<code>$<var>keyword</var>$</code> and
+<code>$<var>keyword</var>:…$</code> in a file are replaced
+with strings of the form
+<code>$<var>keyword</var>:<var>value</var>$</code> whenever you obtain
+a new revision of the file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Keyword-list.html#Keyword-list" accesskey="1">Keyword
list</a>:</td><td> </td><td align="left" valign="top">Keywords
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Using-keywords.html#Using-keywords" accesskey="2">Using
keywords</a>:</td><td> </td><td align="left" valign="top">Using
keywords
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Avoiding-substitution.html#Avoiding-substitution" accesskey="3">Avoiding
substitution</a>:</td><td> </td><td align="left"
valign="top">Avoiding substitution
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Substitution-modes.html#Substitution-modes" accesskey="4">Substitution
modes</a>:</td><td> </td><td align="left" valign="top">Substitution
modes
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Log-keyword.html#Log-keyword" accesskey="5">Log
keyword</a>:</td><td> </td><td align="left" valign="top">Problems
with the $<i></i>Log$ keyword.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Keywords-in-imports.html
===================================================================
RCS file: html_node/Keywords-in-imports.html
diff -N html_node/Keywords-in-imports.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Keywords-in-imports.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Keywords in
imports</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Keywords in imports">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Keywords in imports">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Multiple-vendor-branches.html#Multiple-vendor-branches" rel="next"
title="Multiple vendor branches">
+<link href="Binary-files-in-imports.html#Binary-files-in-imports" rel="prev"
title="Binary files in imports">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Keywords-in-imports"></a>
+<div class="header">
+<p>
+Next: <a href="Multiple-vendor-branches.html#Multiple-vendor-branches"
accesskey="n" rel="next">Multiple vendor branches</a>, Previous: <a
href="Binary-files-in-imports.html#Binary-files-in-imports" accesskey="p"
rel="prev">Binary files in imports</a>, Up: <a
href="Tracking-sources.html#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-to-handle-keyword-substitution-with-cvs-import"></a>
+<h3 class="section">13.5 How to handle keyword substitution with cvs
import</h3>
+
+<p>The sources which you are importing may contain
+keywords (see <a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>). For example,
+the vendor may use <small>CVS</small> or some other system
+which uses similar keyword expansion syntax. If you
+just import the files in the default fashion, then
+the keyword expansions supplied by the vendor will
+be replaced by keyword expansions supplied by your
+own copy of <small>CVS</small>. It may be more convenient to
+maintain the expansions supplied by the vendor, so
+that this information can supply information about
+the sources that you imported from the vendor.
+</p>
+<p>To maintain the keyword expansions supplied by the
+vendor, supply the ‘<samp>-ko</samp>’ option to <code>cvs
+import</code> the first time you import the file.
+This will turn off keyword expansion
+for that file entirely, so if you want to be more
+selective you’ll have to think about what you want
+and use the ‘<samp>-k</samp>’ option to <code>cvs update</code> or
+<code>cvs admin</code> as appropriate.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Line-formats.html
===================================================================
RCS file: html_node/Line-formats.html
diff -N html_node/Line-formats.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Line-formats.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Line formats</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Line formats">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Line formats">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="diff-options.html#diff-options" rel="up" title="diff options">
+<link href="diff-examples.html#diff-examples" rel="next" title="diff examples">
+<link href="Line-group-formats.html#Line-group-formats" rel="prev" title="Line
group formats">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Line-formats"></a>
+<div class="header">
+<p>
+Previous: <a href="Line-group-formats.html#Line-group-formats" accesskey="p"
rel="prev">Line group formats</a>, Up: <a href="diff-options.html#diff-options"
accesskey="u" rel="up">diff options</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Line-formats-1"></a>
+<h4 class="appendixsubsubsec">A.11.1.2 Line formats</h4>
+
+<p>Line formats control how each line taken from an input file is
+output as part of a line group in if-then-else format.
+</p>
+<p>For example, the following command outputs text with a one-column
+change indicator to the left of the text. The first column of output
+is ‘<samp>-</samp>’ for deleted lines,
‘<samp>|</samp>’ for added lines, and a space
+for unchanged lines. The formats contain newline characters where
+newlines are desired on output.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-line-format='-%l
+' \
+ --new-line-format='|%l
+' \
+ --unchanged-line-format=' %l
+' \
+ myfile
+</pre></div>
+
+<p>To specify a line format, use one of the following options. You should
+quote <var>format</var>, since it often contains shell metacharacters.
+</p>
+<dl compact="compact">
+<dt>‘<samp>--old-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines just from the first file.
+</p>
+</dd>
+<dt>‘<samp>--new-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines just from the second file.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-line-format=<var>format</var></samp>’</dt>
+<dd><p>formats lines common to both files.
+</p>
+</dd>
+<dt>‘<samp>--line-format=<var>format</var></samp>’</dt>
+<dd><p>formats all lines; in effect, it sets all three above options
simultaneously.
+</p></dd>
+</dl>
+
+<p>In a line format, ordinary characters represent themselves;
+conversion specifications start with ‘<samp>%</samp>’ and have one
of the
+following forms.
+</p>
+<dl compact="compact">
+<dt>‘<samp>%l</samp>’</dt>
+<dd><p>stands for the contents of the line, not counting its trailing
+newline (if any). This format ignores whether the line is incomplete.
+</p>
+</dd>
+<dt>‘<samp>%L</samp>’</dt>
+<dd><p>stands for the contents of the line, including its trailing newline
+(if any). If a line is incomplete, this format preserves its
+incompleteness.
+</p>
+</dd>
+<dt>‘<samp>%%</samp>’</dt>
+<dd><p>stands for ‘<samp>%</samp>’.
+</p>
+</dd>
+<dt>‘<samp>%c'<var>C</var>'</samp>’</dt>
+<dd><p>where <var>C</var> is a single character, stands for <var>C</var>.
+<var>C</var> may not be a backslash or an apostrophe.
+For example, ‘<samp>%c':'</samp>’ stands for a colon.
+</p>
+</dd>
+<dt>‘<samp>%c'\<var>O</var>'</samp>’</dt>
+<dd><p>where <var>O</var> is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code <var>O</var>.
+For example, ‘<samp>%c'\0'</samp>’ stands for a null character.
+</p>
+</dd>
+<dt>‘<samp><var>F</var>n</samp>’</dt>
+<dd><p>where <var>F</var> is a <code>printf</code> conversion specification,
+stands for the line number formatted with <var>F</var>.
+For example, ‘<samp>%.5dn</samp>’ prints the line number using the
+<code>printf</code> format <code>"%.5d"</code>. See <a
href="Line-group-formats.html#Line-group-formats">Line group formats</a>, for
+more about printf conversion specifications.
+</p>
+</dd>
+</dl>
+
+<p>The default line format is ‘<samp>%l</samp>’ followed by a
newline character.
+</p>
+<p>If the input contains tab characters and it is important that they line
+up on output, you should ensure that ‘<samp>%l</samp>’ or
‘<samp>%L</samp>’ in a line
+format is just after a tab stop (e.g. by preceding
‘<samp>%l</samp>’ or
+‘<samp>%L</samp>’ with a tab character), or you should use the
‘<samp>-t</samp>’ or
+‘<samp>--expand-tabs</samp>’ option.
+</p>
+<p>Taken together, the line and line group formats let you specify many
+different formats. For example, the following command uses a format
+similar to <code>diff</code>’s normal format. You can tailor this
command
+to get fine control over <code>diff</code>’s output.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-line-format='< %l
+' \
+ --new-line-format='> %l
+' \
+ --old-group-format='%df%(f=l?:,%dl)d%dE
+%<' \
+ --new-group-format='%dea%dF%(F=L?:,%dL)
+%>' \
+ --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
+%<---
+%>' \
+ --unchanged-group-format='' \
+ myfile
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Line-group-formats.html#Line-group-formats" accesskey="p"
rel="prev">Line group formats</a>, Up: <a href="diff-options.html#diff-options"
accesskey="u" rel="up">diff options</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Line-group-formats.html
===================================================================
RCS file: html_node/Line-group-formats.html
diff -N html_node/Line-group-formats.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Line-group-formats.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,255 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Line group
formats</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Line group formats">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Line group formats">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="diff-options.html#diff-options" rel="up" title="diff options">
+<link href="Line-formats.html#Line-formats" rel="next" title="Line formats">
+<link href="diff-options.html#diff-options" rel="prev" title="diff options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Line-group-formats"></a>
+<div class="header">
+<p>
+Next: <a href="Line-formats.html#Line-formats" accesskey="n" rel="next">Line
formats</a>, Up: <a href="diff-options.html#diff-options" accesskey="u"
rel="up">diff options</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Line-group-formats-1"></a>
+<h4 class="appendixsubsubsec">A.11.1.1 Line group formats</h4>
+
+<p>Line group formats let you specify formats suitable for many
+applications that allow if-then-else input, including programming
+languages and text formatting languages. A line group format specifies
+the output format for a contiguous group of similar lines.
+</p>
+<p>For example, the following command compares the TeX file <samp>myfile</samp>
+with the original version from the repository,
+and outputs a merged file in which old regions are
+surrounded by
‘<samp>\begin{em}</samp>’-‘<samp>\end{em}</samp>’
lines, and new
+regions are surrounded by
‘<samp>\begin{bf}</samp>’-‘<samp>\end{bf}</samp>’ lines.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-group-format='\begin{em}
+%<\end{em}
+' \
+ --new-group-format='\begin{bf}
+%>\end{bf}
+' \
+ myfile
+</pre></div>
+
+<p>The following command is equivalent to the above example, but it is a
+little more verbose, because it spells out the default line group formats.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --old-group-format='\begin{em}
+%<\end{em}
+' \
+ --new-group-format='\begin{bf}
+%>\end{bf}
+' \
+ --unchanged-group-format='%=' \
+ --changed-group-format='\begin{em}
+%<\end{em}
+\begin{bf}
+%>\end{bf}
+' \
+ myfile
+</pre></div>
+
+<p>Here is a more advanced example, which outputs a diff listing with
+headers containing line numbers in a “plain English” style.
+</p>
+<div class="example">
+<pre class="example">cvs diff \
+ --unchanged-group-format='' \
+ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
+%<' \
+ --new-group-format='-------- %dN line%(N=1?:s) added after %de:
+%>' \
+ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
+%<-------- to:
+%>' \
+ myfile
+</pre></div>
+
+<p>To specify a line group format, use one of the options
+listed below. You can specify up to four line group formats, one for
+each kind of line group. You should quote <var>format</var>, because it
+typically contains shell metacharacters.
+</p>
+<dl compact="compact">
+<dt>‘<samp>--old-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing only lines from the first file.
+The default old group format is the same as the changed group format if
+it is specified; otherwise it is a format that outputs the line group as-is.
+</p>
+</dd>
+<dt>‘<samp>--new-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing only lines from the second
+file. The default new group format is same as the changed group
+format if it is specified; otherwise it is a format that outputs the
+line group as-is.
+</p>
+</dd>
+<dt>‘<samp>--changed-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups are hunks containing lines from both files. The
+default changed group format is the concatenation of the old and new
+group formats.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-group-format=<var>format</var></samp>’</dt>
+<dd><p>These line groups contain lines common to both files. The default
+unchanged group format is a format that outputs the line group as-is.
+</p></dd>
+</dl>
+
+<p>In a line group format, ordinary characters represent themselves;
+conversion specifications start with ‘<samp>%</samp>’ and have one
of the
+following forms.
+</p>
+<dl compact="compact">
+<dt>‘<samp>%<</samp>’</dt>
+<dd><p>stands for the lines from the first file, including the trailing
newline.
+Each line is formatted according to the old line format (see <a
href="Line-formats.html#Line-formats">Line formats</a>).
+</p>
+</dd>
+<dt>‘<samp>%></samp>’</dt>
+<dd><p>stands for the lines from the second file, including the trailing
newline.
+Each line is formatted according to the new line format.
+</p>
+</dd>
+<dt>‘<samp>%=</samp>’</dt>
+<dd><p>stands for the lines common to both files, including the trailing
newline.
+Each line is formatted according to the unchanged line format.
+</p>
+</dd>
+<dt>‘<samp>%%</samp>’</dt>
+<dd><p>stands for ‘<samp>%</samp>’.
+</p>
+</dd>
+<dt>‘<samp>%c'<var>C</var>'</samp>’</dt>
+<dd><p>where <var>C</var> is a single character, stands for <var>C</var>.
+<var>C</var> may not be a backslash or an apostrophe.
+For example, ‘<samp>%c':'</samp>’ stands for a colon, even inside
+the then-part of an if-then-else format, which a colon would
+normally terminate.
+</p>
+</dd>
+<dt>‘<samp>%c'\<var>O</var>'</samp>’</dt>
+<dd><p>where <var>O</var> is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code <var>O</var>.
+For example, ‘<samp>%c'\0'</samp>’ stands for a null character.
+</p>
+</dd>
+<dt>‘<samp><var>F</var><var>n</var></samp>’</dt>
+<dd><p>where <var>F</var> is a <code>printf</code> conversion specification
and <var>n</var> is one
+of the following letters, stands for <var>n</var>’s value formatted with
<var>F</var>.
+</p>
+<dl compact="compact">
+<dt>‘<samp>e</samp>’</dt>
+<dd><p>The line number of the line just before the group in the old file.
+</p>
+</dd>
+<dt>‘<samp>f</samp>’</dt>
+<dd><p>The line number of the first line in the group in the old file;
+equals <var>e</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>l</samp>’</dt>
+<dd><p>The line number of the last line in the group in the old file.
+</p>
+</dd>
+<dt>‘<samp>m</samp>’</dt>
+<dd><p>The line number of the line just after the group in the old file;
+equals <var>l</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>n</samp>’</dt>
+<dd><p>The number of lines in the group in the old file; equals <var>l</var> -
<var>f</var> + 1.
+</p>
+</dd>
+<dt>‘<samp>E, F, L, M, N</samp>’</dt>
+<dd><p>Likewise, for lines in the new file.
+</p>
+</dd>
+</dl>
+
+<p>The <code>printf</code> conversion specification can be
‘<samp>%d</samp>’,
+‘<samp>%o</samp>’, ‘<samp>%x</samp>’, or
‘<samp>%X</samp>’, specifying decimal, octal,
+lower case hexadecimal, or upper case hexadecimal output
+respectively. After the ‘<samp>%</samp>’ the following options
can appear in
+sequence: a ‘<samp>-</samp>’ specifying left-justification; an
integer
+specifying the minimum field width; and a period followed by an
+optional integer specifying the minimum number of digits.
+For example, ‘<samp>%5dN</samp>’ prints the number of new lines in
the group
+in a field of width 5 characters, using the <code>printf</code> format
<code>"%5d"</code>.
+</p>
+</dd>
+<dt>‘<samp>(<var>A</var>=<var>B</var>?<var>T</var>:<var>E</var>)</samp>’</dt>
+<dd><p>If <var>A</var> equals <var>B</var> then <var>T</var> else <var>E</var>.
+<var>A</var> and <var>B</var> are each either a decimal constant
+or a single letter interpreted as above.
+This format spec is equivalent to <var>T</var> if
+<var>A</var>’s value equals <var>B</var>’s; otherwise it is
equivalent to <var>E</var>.
+</p>
+<p>For example, ‘<samp>%(N=0?no:%dN) line%(N=1?:s)</samp>’ is
equivalent to
+‘<samp>no lines</samp>’ if <var>N</var> (the number of lines in
the group in the
+new file) is 0, to ‘<samp>1 line</samp>’ if <var>N</var> is 1, and
to ‘<samp>%dN lines</samp>’
+otherwise.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Line-formats.html#Line-formats" accesskey="n" rel="next">Line
formats</a>, Up: <a href="diff-options.html#diff-options" accesskey="u"
rel="up">diff options</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Locks.html
===================================================================
RCS file: html_node/Locks.html
diff -N html_node/Locks.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Locks.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Locks</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Locks">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Locks">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="CVSROOT-storage.html#CVSROOT-storage" rel="next" title="CVSROOT
storage">
+<link href="CVS-in-repository.html#CVS-in-repository" rel="prev" title="CVS in
repository">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Locks"></a>
+<div class="header">
+<p>
+Next: <a href="CVSROOT-storage.html#CVSROOT-storage" accesskey="n"
rel="next">CVSROOT storage</a>, Previous: <a
href="CVS-in-repository.html#CVS-in-repository" accesskey="p" rel="prev">CVS in
repository</a>, Up: <a href="Repository-storage.html#Repository-storage"
accesskey="u" rel="up">Repository storage</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="CVS-locks-in-the-repository"></a>
+<h4 class="subsection">2.2.6 CVS locks in the repository</h4>
+
+<a name="index-_0023cvs_002erfl_002c-technical-details"></a>
+<a name="index-_0023cvs_002ewfl_002c-technical-details"></a>
+<a name="index-_0023cvs_002elock_002c-technical-details"></a>
+<a name="index-Locks_002c-cvs_002c-technical-details"></a>
+<p>For an introduction to <small>CVS</small> locks focusing on
+user-visible behavior, see <a
href="Concurrency.html#Concurrency">Concurrency</a>. The
+following section is aimed at people who are writing
+tools which want to access a <small>CVS</small> repository without
+interfering with other tools accessing the same
+repository. If you find yourself confused by concepts
+described here, like <em>read lock</em>, <em>write lock</em>,
+and <em>deadlock</em>, you might consult the literature on
+operating systems or databases.
+</p>
+<a name="index-_0023cvs_002etfl"></a>
+<p>Any file in the repository with a name starting
+with <samp>#cvs.rfl.</samp> is a read lock. Any file in
+the repository with a name starting with
+<samp>#cvs.wfl</samp> is a write lock. Old versions of <small>CVS</small>
+(before <small>CVS</small> 1.5) also created files with names starting
+with <samp>#cvs.tfl</samp>, but they are not discussed here.
+The directory <samp>#cvs.lock</samp> serves as a master
+lock. That is, one must obtain this lock first before
+creating any of the other locks.
+</p>
+<p>To obtain a read lock, first create the <samp>#cvs.lock</samp>
+directory. This operation must be atomic (which should
+be true for creating a directory under most operating
+systems). If it fails because the directory already
+existed, wait for a while and try again. After
+obtaining the <samp>#cvs.lock</samp> lock, create a file
+whose name is <samp>#cvs.rfl.</samp> followed by information
+of your choice (for example, hostname and process
+identification number). Then remove the
+<samp>#cvs.lock</samp> directory to release the master lock.
+Then proceed with reading the repository. When you are
+done, remove the <samp>#cvs.rfl</samp> file to release the
+read lock.
+</p>
+<p>To obtain a write lock, first create the
+<samp>#cvs.lock</samp> directory, as with read locks. Then
+check that there are no files whose names start with
+<samp>#cvs.rfl.</samp>. If there are, remove
+<samp>#cvs.lock</samp>, wait for a while, and try again. If
+there are no readers, then create a file whose name is
+<samp>#cvs.wfl</samp> followed by information of your choice
+(for example, hostname and process identification
+number). Hang on to the <samp>#cvs.lock</samp> lock. Proceed
+with writing the repository. When you are done, first
+remove the <samp>#cvs.wfl</samp> file and then the
+<samp>#cvs.lock</samp> directory. Note that unlike the
+<samp>#cvs.rfl</samp> file, the <samp>#cvs.wfl</samp> file is just
+informational; it has no effect on the locking operation
+beyond what is provided by holding on to the
+<samp>#cvs.lock</samp> lock itself.
+</p>
+<p>Note that each lock (write lock or read lock) only locks
+a single directory in the repository, including
+<samp>Attic</samp> and <samp>CVS</samp> but not including
+subdirectories which represent other directories under
+version control. To lock an entire tree, you need to
+lock each directory (note that if you fail to obtain
+any lock you need, you must release the whole tree
+before waiting and trying again, to avoid deadlocks).
+</p>
+<p>Note also that <small>CVS</small> expects write locks to control
+access to individual <samp>foo,v</samp> files. <small>RCS</small> has
+a scheme where the <samp>,foo,</samp> file serves as a lock,
+but <small>CVS</small> does not implement it and so taking out a
+<small>CVS</small> write lock is recommended. See the comments at
+rcs_internal_lockfile in the <small>CVS</small> source code for
+further discussion/rationale.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="CVSROOT-storage.html#CVSROOT-storage" accesskey="n"
rel="next">CVSROOT storage</a>, Previous: <a
href="CVS-in-repository.html#CVS-in-repository" accesskey="p" rel="prev">CVS in
repository</a>, Up: <a href="Repository-storage.html#Repository-storage"
accesskey="u" rel="up">Repository storage</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Log-keyword.html
===================================================================
RCS file: html_node/Log-keyword.html
diff -N html_node/Log-keyword.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Log-keyword.html 28 Dec 2015 15:57:58 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Log keyword</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Log keyword">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Log keyword">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="up"
title="Keyword substitution">
+<link href="Tracking-sources.html#Tracking-sources" rel="next" title="Tracking
sources">
+<link href="Substitution-modes.html#Substitution-modes" rel="prev"
title="Substitution modes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Log-keyword"></a>
+<div class="header">
+<p>
+Previous: <a href="Substitution-modes.html#Substitution-modes" accesskey="p"
rel="prev">Substitution modes</a>, Up: <a
href="Keyword-substitution.html#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Problems-with-the-_0024Log_0024-keyword_002e"></a>
+<h3 class="section">12.5 Problems with the $<i></i>Log$ keyword.</h3>
+
+<p>The <code>$<i></i>Log$</code> keyword is somewhat
+controversial. As long as you are working on your
+development system the information is easily accessible
+even if you do not use the <code>$<i></i>Log$</code>
+keyword—just do a <code>cvs log</code>. Once you export
+the file the history information might be useless
+anyhow.
+</p>
+<p>A more serious concern is that <small>CVS</small> is not good at
+handling <code>$<i></i>Log$</code> entries when a branch is
+merged onto the main trunk. Conflicts often result
+from the merging operation.
+</p>
+<p>People also tend to "fix" the log entries in the file
+(correcting spelling mistakes and maybe even factual
+errors). If that is done the information from
+<code>cvs log</code> will not be consistent with the
+information inside the file. This may or may not be a
+problem in real life.
+</p>
+<p>It has been suggested that the <code>$<i></i>Log$</code>
+keyword should be inserted <em>last</em> in the file, and
+not in the files header, if it is to be used at all.
+That way the long list of change messages will not
+interfere with everyday source file browsing.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Magic-branch-numbers.html
===================================================================
RCS file: html_node/Magic-branch-numbers.html
diff -N html_node/Magic-branch-numbers.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Magic-branch-numbers.html 28 Dec 2015 15:57:59 -0000 1.1
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Magic branch
numbers</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Magic branch numbers">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Magic branch numbers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Merging-a-branch.html#Merging-a-branch" rel="next" title="Merging
a branch">
+<link href="Branches-and-revisions.html#Branches-and-revisions" rel="prev"
title="Branches and revisions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Magic-branch-numbers"></a>
+<div class="header">
+<p>
+Next: <a href="Merging-a-branch.html#Merging-a-branch" accesskey="n"
rel="next">Merging a branch</a>, Previous: <a
href="Branches-and-revisions.html#Branches-and-revisions" accesskey="p"
rel="prev">Branches and revisions</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Magic-branch-numbers-1"></a>
+<h3 class="section">5.5 Magic branch numbers</h3>
+
+
+<p>This section describes a <small>CVS</small> feature called
+<em>magic branches</em>. For most purposes, you need not
+worry about magic branches; <small>CVS</small> handles them for
+you. However, they are visible to you in certain
+circumstances, so it may be useful to have some idea of
+how it works.
+</p>
+<p>Externally, branch numbers consist of an odd number of
+dot-separated decimal integers. See <a
href="Revision-numbers.html#Revision-numbers">Revision numbers</a>. That is
not the whole truth, however. For
+efficiency reasons <small>CVS</small> sometimes inserts an extra 0
+in the second rightmost position (1.2.4 becomes
+1.2.0.4, 8.9.10.11.12 becomes 8.9.10.11.0.12 and so
+on).
+</p>
+<p><small>CVS</small> does a pretty good job at hiding these so
+called magic branches, but in a few places the hiding
+is incomplete:
+</p>
+<ul>
+<li> The magic branch number appears in the output from
+<code>cvs log</code>.
+
+</li><li> You cannot specify a symbolic branch name to <code>cvs
+admin</code>.
+
+</li></ul>
+
+<p>You can use the <code>admin</code> command to reassign a
+symbolic name to a branch the way <small>RCS</small> expects it
+to be. If <code>R4patches</code> is assigned to the branch
+1.4.2 (magic branch number 1.4.0.2) in file
+<samp>numbers.c</samp> you can do this:
+</p>
+<div class="example">
+<pre class="example">$ cvs admin -NR4patches:1.4.2 numbers.c
+</pre></div>
+
+<p>It only works if at least one revision is already
+committed on the branch. Be very careful so that you
+do not assign the tag to the wrong number. (There is
+no way to see how the tag was assigned yesterday).
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Merging-a-branch.html
===================================================================
RCS file: html_node/Merging-a-branch.html
diff -N html_node/Merging-a-branch.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Merging-a-branch.html 28 Dec 2015 15:57:59 -0000 1.1
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Merging a branch</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Merging a branch">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Merging a branch">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Merging-more-than-once.html#Merging-more-than-once" rel="next"
title="Merging more than once">
+<link href="Magic-branch-numbers.html#Magic-branch-numbers" rel="prev"
title="Magic branch numbers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Merging-a-branch"></a>
+<div class="header">
+<p>
+Next: <a href="Merging-more-than-once.html#Merging-more-than-once"
accesskey="n" rel="next">Merging more than once</a>, Previous: <a
href="Magic-branch-numbers.html#Magic-branch-numbers" accesskey="p"
rel="prev">Magic branch numbers</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Merging-an-entire-branch"></a>
+<h3 class="section">5.6 Merging an entire branch</h3>
+<a name="index-Merging-a-branch"></a>
+<a name="index-_002dj-_0028merging-branches_0029"></a>
+
+<p>You can merge changes made on a branch into your working copy by giving
+the ‘<samp>-j <var>branchname</var></samp>’ flag to the
<code>update</code> subcommand. With one
+‘<samp>-j <var>branchname</var></samp>’ option it merges the
changes made between the
+greatest common ancestor (GCA) of the branch and the destination revision (in
+the simple case below the GCA is the point where the branch forked) and the
+newest revision on that branch into your working copy.
+</p>
+<a name="index-Join"></a>
+<p>The ‘<samp>-j</samp>’ stands for “join”.
+</p>
+<a name="index-Branch-merge-example"></a>
+<a name="index-Example_002c-branch-merge"></a>
+<a name="index-Merge_002c-branch-example"></a>
+<p>Consider this revision tree:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+</pre></div>
+
+<p>The branch 1.2.2 has been given the tag (symbolic name)
‘<samp>R1fix</samp>’. The
+following example assumes that the module ‘<samp>mod</samp>’
contains only one
+file, <samp>m.c</samp>.
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout mod # <span
class="roman">Retrieve the latest revision, 1.4</span>
+
+$ cvs update -j R1fix m.c # <span class="roman">Merge all changes made
on the branch,</span>
+ # <span class="roman">i.e. the changes
between revision 1.2</span>
+ # <span class="roman">and 1.2.2.2, into your
working copy</span>
+ # <span class="roman">of the file.</span>
+
+$ cvs commit -m "Included R1fix" # <span class="roman">Create
revision 1.5.</span>
+</pre></div>
+
+<p>A conflict can result from a merge operation. If that
+happens, you should resolve it before committing the
+new revision. See <a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a>.
+</p>
+<p>If your source files contain keywords (see <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>),
+you might be getting more conflicts than strictly necessary. See
+<a href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a>, for information on how to avoid this.
+</p>
+<p>The <code>checkout</code> command also supports the ‘<samp>-j
<var>branchname</var></samp>’ flag. The
+same effect as above could be achieved with this:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -j R1fix mod
+$ cvs commit -m "Included R1fix"
+</pre></div>
+
+<p>It should be noted that <code>update -j <var>tagname</var></code> will also
work but may
+not produce the desired result. See <a
href="Merging-adds-and-removals.html#Merging-adds-and-removals">Merging adds
and removals</a>, for more.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Merging-more-than-once.html#Merging-more-than-once"
accesskey="n" rel="next">Merging more than once</a>, Previous: <a
href="Magic-branch-numbers.html#Magic-branch-numbers" accesskey="p"
rel="prev">Magic branch numbers</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Merging-adds-and-removals.html
===================================================================
RCS file: html_node/Merging-adds-and-removals.html
diff -N html_node/Merging-adds-and-removals.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Merging-adds-and-removals.html 28 Dec 2015 15:57:59 -0000
1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Merging adds and
removals</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Merging adds and removals">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Merging adds and removals">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Merging-and-keywords.html#Merging-and-keywords" rel="next"
title="Merging and keywords">
+<link href="Merging-two-revisions.html#Merging-two-revisions" rel="prev"
title="Merging two revisions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Merging-adds-and-removals"></a>
+<div class="header">
+<p>
+Next: <a href="Merging-and-keywords.html#Merging-and-keywords" accesskey="n"
rel="next">Merging and keywords</a>, Previous: <a
href="Merging-two-revisions.html#Merging-two-revisions" accesskey="p"
rel="prev">Merging two revisions</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Merging-can-add-or-remove-files"></a>
+<h3 class="section">5.9 Merging can add or remove files</h3>
+
+<p>If the changes which you are merging involve removing
+or adding some files, <code>update -j</code> will reflect
+such additions or removals.
+</p>
+<p>For example:
+</p><div class="example">
+<pre class="example">cvs update -A
+touch a b c
+cvs add a b c ; cvs ci -m "added" a b c
+cvs tag -b branchtag
+cvs update -r branchtag
+touch d ; cvs add d
+rm a ; cvs rm a
+cvs ci -m "added d, removed a"
+cvs update -A
+cvs update -jbranchtag
+</pre></div>
+
+<p>After these commands are executed and a ‘<samp>cvs
commit</samp>’ is done,
+file <samp>a</samp> will be removed and file <samp>d</samp> added in the main
branch.
+</p>
+<p>Note that using a single static tag (‘<samp>-j
<var>tagname</var></samp>’)
+rather than a dynamic tag (‘<samp>-j
<var>branchname</var></samp>’) to merge
+changes from a branch will usually not remove files which were removed on the
+branch since <small>CVS</small> does not automatically add static tags to dead
revisions.
+The exception to this rule occurs when
+a static tag has been attached to a dead revision manually. Use the branch tag
+to merge all changes from the branch or use two static tags as merge endpoints
+to be sure that all intended changes are propagated in the merge.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Merging-and-keywords.html
===================================================================
RCS file: html_node/Merging-and-keywords.html
diff -N html_node/Merging-and-keywords.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Merging-and-keywords.html 28 Dec 2015 15:57:59 -0000 1.1
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Merging and
keywords</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Merging and keywords">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Merging and keywords">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Recursive-behavior.html#Recursive-behavior" rel="next"
title="Recursive behavior">
+<link href="Merging-adds-and-removals.html#Merging-adds-and-removals"
rel="prev" title="Merging adds and removals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Merging-and-keywords"></a>
+<div class="header">
+<p>
+Previous: <a href="Merging-adds-and-removals.html#Merging-adds-and-removals"
accesskey="p" rel="prev">Merging adds and removals</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Merging-and-keywords-1"></a>
+<h3 class="section">5.10 Merging and keywords</h3>
+<a name="index-Merging_002c-and-keyword-substitution"></a>
+<a name="index-Keyword-substitution_002c-and-merging"></a>
+<a
name="index-_002dj-_0028merging-branches_0029_002c-and-keyword-substitution"></a>
+<a name="index-_002dkk_002c-to-avoid-conflicts-during-a-merge"></a>
+
+<p>If you merge files containing keywords (see <a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>), you will normally get numerous
+conflicts during the merge, because the keywords are
+expanded differently in the revisions which you are
+merging.
+</p>
+<p>Therefore, you will often want to specify the
+‘<samp>-kk</samp>’ (see <a
href="Substitution-modes.html#Substitution-modes">Substitution modes</a>)
switch to the
+merge command line. By substituting just the name of
+the keyword, not the expanded value of that keyword,
+this option ensures that the revisions which you are
+merging will be the same as each other, and avoid
+spurious conflicts.
+</p>
+<p>For example, suppose you have a file like this:
+</p>
+<div class="example">
+<pre class="example"> +---------+
+ _! 1.1.2.1 ! <- br1
+ / +---------+
+ /
+ /
++-----+ +-----+
+! 1.1 !----! 1.2 !
++-----+ +-----+
+</pre></div>
+
+<p>and your working directory is currently on the trunk
+(revision 1.2). Then you might get the following
+results from a merge:
+</p>
+<div class="example">
+<pre class="example">$ cat file1
+key $<i></i>Revision: 1.2 $
+. . .
+$ cvs update -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+rcsmerge: warning: conflicts during merge
+$ cat file1
+<<<<<<< file1
+key $<i></i>Revision: 1.2 $
+=======
+key $<i></i>Revision: 1.1.2.1 $
+>>>>>>> 1.1.2.1
+. . .
+</pre></div>
+
+<p>What happened was that the merge tried to merge the
+differences between 1.1 and 1.1.2.1 into your working
+directory. So, since the keyword changed from
+<code>Revision: 1.1</code> to <code>Revision: 1.1.2.1</code>,
+<small>CVS</small> tried to merge that change into your working
+directory, which conflicted with the fact that your
+working directory had contained <code>Revision: 1.2</code>.
+</p>
+<p>Here is what happens if you had used ‘<samp>-kk</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cat file1
+key $<i></i>Revision: 1.2 $
+. . .
+$ cvs update -kk -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+$ cat file1
+key $<i></i>Revision$
+. . .
+</pre></div>
+
+<p>What is going on here is that revision 1.1 and 1.1.2.1
+both expand as plain <code>Revision</code>, and therefore
+merging the changes between them into the working
+directory need not change anything. Therefore, there
+is no conflict.
+</p>
+<p>There is, however, one major caveat with using
+‘<samp>-kk</samp>’ on merges. Namely, it overrides whatever
+keyword expansion mode <small>CVS</small> would normally have
+used. In particular, this is a problem if the mode had
+been ‘<samp>-kb</samp>’ for a binary file. Therefore, if your
+repository contains binary files, you will need to deal
+with the conflicts rather than using ‘<samp>-kk</samp>’.
+</p>
+
+<p>As a result of using ‘<samp>-kk</samp>’ during the merge, each
file examined by the
+update will have ‘<samp>-kk</samp>’ set as sticky options.
Running <code>update -A</code>
+will clear the sticky options on unmodified files, but it will not clear
+the sticky options on modified files. To get back to the default keyword
+substitution for modified files, you must commit the results of the merge
+and then run <code>update -A</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Merging-adds-and-removals.html#Merging-adds-and-removals"
accesskey="p" rel="prev">Merging adds and removals</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Merging-more-than-once.html
===================================================================
RCS file: html_node/Merging-more-than-once.html
diff -N html_node/Merging-more-than-once.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Merging-more-than-once.html 28 Dec 2015 15:57:59 -0000
1.1
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Merging more than
once</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Merging more than once">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Merging more than once">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Merging-two-revisions.html#Merging-two-revisions" rel="next"
title="Merging two revisions">
+<link href="Merging-a-branch.html#Merging-a-branch" rel="prev" title="Merging
a branch">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Merging-more-than-once"></a>
+<div class="header">
+<p>
+Next: <a href="Merging-two-revisions.html#Merging-two-revisions" accesskey="n"
rel="next">Merging two revisions</a>, Previous: <a
href="Merging-a-branch.html#Merging-a-branch" accesskey="p" rel="prev">Merging
a branch</a>, Up: <a href="Branching-and-merging.html#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Merging-from-a-branch-several-times"></a>
+<h3 class="section">5.7 Merging from a branch several times</h3>
+
+<p>Continuing our example, the revision tree now looks
+like this:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+</pre></div>
+
+<p>where the starred line represents the merge from the
+‘<samp>R1fix</samp>’ branch to the main trunk, as just
+discussed.
+</p>
+<p>Now suppose that development continues on the
+‘<samp>R1fix</samp>’ branch:
+</p>
+<div class="example">
+<pre class="example">+-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ +---------+ +---------+ +---------+
+</pre></div>
+
+<p>and then you want to merge those new changes onto the
+main trunk. If you just use the <code>cvs update -j
+R1fix m.c</code> command again, <small>CVS</small> will attempt to
+merge again the changes which you have already merged,
+which can have undesirable side effects.
+</p>
+<p>So instead you need to specify that you only want to
+merge the changes on the branch which have not yet been
+merged into the trunk. To do that you specify two
+‘<samp>-j</samp>’ options, and <small>CVS</small> merges the
changes from
+the first revision to the second revision. For
+example, in this case the simplest way would be
+</p>
+<div class="example">
+<pre class="example">cvs update -j 1.2.2.2 -j R1fix m.c # <span
class="roman">Merge changes from 1.2.2.2 to the</span>
+ # <span class="roman">head of the R1fix
branch</span>
+</pre></div>
+
+<p>The problem with this is that you need to specify the
+1.2.2.2 revision manually. A slightly better approach
+might be to use the date the last merge was done:
+</p>
+<div class="example">
+<pre class="example">cvs update -j R1fix:yesterday -j R1fix m.c
+</pre></div>
+
+<p>Better yet, tag the R1fix branch after every merge into
+the trunk, and then use that tag for subsequent merges:
+</p>
+<div class="example">
+<pre class="example">cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Merging-two-revisions.html#Merging-two-revisions" accesskey="n"
rel="next">Merging two revisions</a>, Previous: <a
href="Merging-a-branch.html#Merging-a-branch" accesskey="p" rel="prev">Merging
a branch</a>, Up: <a href="Branching-and-merging.html#Branching-and-merging"
accesskey="u" rel="up">Branching and merging</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Merging-two-revisions.html
===================================================================
RCS file: html_node/Merging-two-revisions.html
diff -N html_node/Merging-two-revisions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Merging-two-revisions.html 28 Dec 2015 15:58:00 -0000
1.1
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Merging two
revisions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Merging two revisions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Merging two revisions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="up"
title="Branching and merging">
+<link href="Merging-adds-and-removals.html#Merging-adds-and-removals"
rel="next" title="Merging adds and removals">
+<link href="Merging-more-than-once.html#Merging-more-than-once" rel="prev"
title="Merging more than once">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Merging-two-revisions"></a>
+<div class="header">
+<p>
+Next: <a href="Merging-adds-and-removals.html#Merging-adds-and-removals"
accesskey="n" rel="next">Merging adds and removals</a>, Previous: <a
href="Merging-more-than-once.html#Merging-more-than-once" accesskey="p"
rel="prev">Merging more than once</a>, Up: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="u"
rel="up">Branching and merging</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Merging-differences-between-any-two-revisions"></a>
+<h3 class="section">5.8 Merging differences between any two revisions</h3>
+<a name="index-Merging-two-revisions"></a>
+<a name="index-Revisions_002c-merging-differences-between"></a>
+<a name="index-Differences_002c-merging"></a>
+
+<p>With two ‘<samp>-j <var>revision</var></samp>’ flags, the
<code>update</code>
+(and <code>checkout</code>) command can merge the differences
+between any two revisions into your working file.
+</p>
+<a name="index-Undoing-a-change"></a>
+<a name="index-Removing-a-change"></a>
+<div class="example">
+<pre class="example">$ cvs update -j 1.5 -j 1.3 backend.c
+</pre></div>
+
+<p>will undo all changes made between revision
+1.3 and 1.5. Note the order of the revisions!
+</p>
+<p>If you try to use this option when operating on
+multiple files, remember that the numeric revisions will
+probably be very different between the various files.
+You almost always use symbolic
+tags rather than revision numbers when operating on
+multiple files.
+</p>
+<a name="index-Restoring-old-version-of-removed-file"></a>
+<a name="index-Resurrecting-old-version-of-dead-file"></a>
+<p>Specifying two ‘<samp>-j</samp>’ options can also undo file
+removals or additions. For example, suppose you have
+a file
+named <samp>file1</samp> which existed as revision 1.1, and
+you then removed it (thus adding a dead revision 1.2).
+Now suppose you want to add it again, with the same
+contents it had previously. Here is how to do it:
+</p>
+<div class="example">
+<pre class="example">$ cvs update -j 1.2 -j 1.1 file1
+U file1
+$ cvs commit -m test
+Checking in file1;
+/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+new revision: 1.3; previous revision: 1.2
+done
+$
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Modifying-tags.html
===================================================================
RCS file: html_node/Modifying-tags.html
diff -N html_node/Modifying-tags.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Modifying-tags.html 28 Dec 2015 15:58:00 -0000 1.1
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Modifying tags</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Modifying tags">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Modifying tags">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Tagging-add_002fremove.html#Tagging-add_002fremove" rel="next"
title="Tagging add/remove">
+<link href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag" rel="prev"
title="Tagging by date/tag">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Modifying-tags"></a>
+<div class="header">
+<p>
+Next: <a href="Tagging-add_002fremove.html#Tagging-add_002fremove"
accesskey="n" rel="next">Tagging add/remove</a>, Previous: <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag" accesskey="p"
rel="prev">Tagging by date/tag</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Deleting_002c-moving_002c-and-renaming-tags"></a>
+<h3 class="section">4.7 Deleting, moving, and renaming tags</h3>
+
+
+<p>Normally one does not modify tags. They exist in order
+to record the history of the repository and so deleting
+them or changing their meaning would, generally, not be
+what you want.
+</p>
+<p>However, there might be cases in which one uses a tag
+temporarily or accidentally puts one in the wrong
+place. Therefore, one might delete, move, or rename a
+tag.
+</p>
+<p><strong>WARNING: The commands in this section are
+dangerous; they permanently discard historical
+information and it can be difficult or impossible to
+recover from errors. If you are a <small>CVS</small>
+administrator, you may consider restricting these
+commands with the <samp>taginfo</samp> file (see <a
href="taginfo.html#taginfo">taginfo</a>).</strong>
+</p>
+<a name="index-Deleting-tags"></a>
+<a name="index-Deleting-branch-tags"></a>
+<a name="index-Removing-tags"></a>
+<a name="index-Removing-branch-tags"></a>
+<a name="index-Tags_002c-deleting"></a>
+<a name="index-Branch-tags_002c-deleting"></a>
+<p>To delete a tag, specify the ‘<samp>-d</samp>’ option to either
+<code>cvs tag</code> or <code>cvs rtag</code>. For example:
+</p>
+<div class="example">
+<pre class="example">cvs rtag -d rel-0-4 tc
+</pre></div>
+
+<p>deletes the non-branch tag <code>rel-0-4</code> from the module
<code>tc</code>.
+In the event that branch tags are encountered within the repository
+with the given name, a warning message will be issued and the branch
+tag will not be deleted. If you are absolutely certain you know what
+you are doing, the <code>-B</code> option may be specified to allow deletion
+of branch tags. In that case, any non-branch tags encountered will
+trigger warnings and will not be deleted.
+</p>
+<p><strong>WARNING: Moving branch tags is very dangerous! If you think
+you need the <code>-B</code> option, think again and ask your
<small>CVS</small>
+administrator about it (if that isn’t you). There is almost certainly
+another way to accomplish what you want to accomplish.</strong>
+</p>
+<a name="index-Moving-tags"></a>
+<a name="index-Moving-branch-tags"></a>
+<a name="index-Tags_002c-moving"></a>
+<a name="index-Branch-tags_002c-moving"></a>
+<p>When we say <em>move</em> a tag, we mean to make the same
+name point to different revisions. For example, the
+<code>stable</code> tag may currently point to revision 1.4
+of <samp>backend.c</samp> and perhaps we want to make it
+point to revision 1.6. To move a non-branch tag, specify the
+‘<samp>-F</samp>’ option to either <code>cvs tag</code> or
<code>cvs
+rtag</code>. For example, the task just mentioned might be
+accomplished as:
+</p>
+<div class="example">
+<pre class="example">cvs tag -r 1.6 -F stable backend.c
+</pre></div>
+
+<p>If any branch tags are encountered in the repository
+with the given name, a warning is issued and the branch
+tag is not disturbed. If you are absolutely certain you
+wish to move the branch tag, the <code>-B</code> option may be specified.
+In that case, non-branch tags encountered with the given
+name are ignored with a warning message.
+</p>
+<p><strong>WARNING: Moving branch tags is very dangerous! If you think you
+need the <code>-B</code> option, think again and ask your <small>CVS</small>
+administrator about it (if that isn’t you). There is almost certainly
+another way to accomplish what you want to accomplish.</strong>
+</p>
+<a name="index-Renaming-tags"></a>
+<a name="index-Tags_002c-renaming"></a>
+<p>When we say <em>rename</em> a tag, we mean to make a
+different name point to the same revisions as the old
+tag. For example, one may have misspelled the tag name
+and want to correct it (hopefully before others are
+relying on the old spelling). To rename a tag, first
+create a new tag using the ‘<samp>-r</samp>’ option to
+<code>cvs rtag</code>, and then delete the old name. (Caution:
+this method will not work with branch tags.)
+This leaves the new tag on exactly the
+same files as the old tag. For example:
+</p>
+<div class="example">
+<pre class="example">cvs rtag -r old-name-0-4 rel-0-4 tc
+cvs rtag -d old-name-0-4 tc
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tagging-add_002fremove.html#Tagging-add_002fremove"
accesskey="n" rel="next">Tagging add/remove</a>, Previous: <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag" accesskey="p"
rel="prev">Tagging by date/tag</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Module-options.html
===================================================================
RCS file: html_node/Module-options.html
diff -N html_node/Module-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Module-options.html 28 Dec 2015 15:58:00 -0000 1.1
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Module options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Module options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Module options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Module-program-options.html#Module-program-options" rel="next"
title="Module program options">
+<link href="Excluding-directories.html#Excluding-directories" rel="prev"
title="Excluding directories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Module-options"></a>
+<div class="header">
+<p>
+Next: <a href="Module-program-options.html#Module-program-options"
accesskey="n" rel="next">Module program options</a>, Previous: <a
href="Excluding-directories.html#Excluding-directories" accesskey="p"
rel="prev">Excluding directories</a>, Up: <a href="modules.html#modules"
accesskey="u" rel="up">modules</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Module-options-1"></a>
+<h4 class="appendixsubsec">C.1.5 Module options</h4>
+<a name="index-Options_002c-in-modules-file"></a>
+
+<p>Either regular modules or ampersand modules can contain
+options, which supply additional information concerning
+the module.
+</p>
+<dl compact="compact">
+<dd><a name="index-_002dd_002c-in-modules-file"></a>
+</dd>
+<dt><code>-d <var>name</var></code></dt>
+<dd><p>Name the working directory something other than the
+module name.
+</p>
+<a name="index-Export-program"></a>
+<a name="index-_002de_002c-in-modules-file"></a>
+</dd>
+<dt><code>-e <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are exported. <var>prog</var> runs with a single
+argument, the module name.
+</p>
+<a name="index-Checkout-program"></a>
+<a name="index-_002do_002c-in-modules-file"></a>
+</dd>
+<dt><code>-o <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are checked out. <var>prog</var> runs with a single
+argument, the module name. See <a
href="Module-program-options.html#Module-program-options">Module program
options</a> for
+information on how <var>prog</var> is called.
+</p>
+<a name="index-Status-of-a-module"></a>
+<a name="index-Module-status"></a>
+<a name="index-_002ds_002c-in-modules-file"></a>
+</dd>
+<dt><code>-s <var>status</var></code></dt>
+<dd><p>Assign a status to the module. When the module file is
+printed with ‘<samp>cvs checkout -s</samp>’ the modules are
+sorted according to primarily module status, and
+secondarily according to the module name. This option
+has no other meaning. You can use this option for
+several things besides status: for instance, list the
+person that is responsible for this module.
+</p>
+<a name="index-Tag-program"></a>
+<a name="index-_002dt_002c-in-modules-file"></a>
+</dd>
+<dt><code>-t <var>prog</var></code></dt>
+<dd><p>Specify a program <var>prog</var> to run whenever files in a
+module are tagged with <code>rtag</code>. <var>prog</var> runs
+with two arguments: the module name and the symbolic
+tag specified to <code>rtag</code>. It is not run
+when <code>tag</code> is executed. Generally you will find
+that the <samp>taginfo</samp> file is a better solution (see <a
href="taginfo.html#taginfo">taginfo</a>).
+</p></dd>
+</dl>
+
+<p>You should also see see <a
href="Module-program-options.html#Module-program-options">Module program
options</a> about how the
+“program options” programs are run.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Module-program-options.html#Module-program-options"
accesskey="n" rel="next">Module program options</a>, Previous: <a
href="Excluding-directories.html#Excluding-directories" accesskey="p"
rel="prev">Excluding directories</a>, Up: <a href="modules.html#modules"
accesskey="u" rel="up">modules</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Module-program-options.html
===================================================================
RCS file: html_node/Module-program-options.html
diff -N html_node/Module-program-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Module-program-options.html 28 Dec 2015 15:58:00 -0000
1.1
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Module program
options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Module program options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Module program options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Wrappers.html#Wrappers" rel="next" title="Wrappers">
+<link href="Module-options.html#Module-options" rel="prev" title="Module
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Module-program-options"></a>
+<div class="header">
+<p>
+Previous: <a href="Module-options.html#Module-options" accesskey="p"
rel="prev">Module options</a>, Up: <a href="modules.html#modules" accesskey="u"
rel="up">modules</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a
name="How-the-modules-file-_0060_0060program-options_0027_0027-programs-are-run"></a>
+<h4 class="appendixsubsec">C.1.6 How the modules file “program
options” programs are run</h4>
+<a name="index-Modules-file-program-options"></a>
+<a name="index-_002dt_002c-in-modules-file-1"></a>
+<a name="index-_002do_002c-in-modules-file-1"></a>
+<a name="index-_002de_002c-in-modules-file-1"></a>
+
+<p>For checkout, rtag, and export, the program is server-based, and as such the
+following applies:-
+</p>
+<p>If using remote access methods (pserver, ext, etc.),
+<small>CVS</small> will execute this program on the server from a temporary
+directory. The path is searched for this program.
+</p>
+<p>If using “local access” (on a local or remote NFS file system,
i.e.,
+repository set just to a path),
+the program will be executed from the newly checked-out tree, if
+found there, or alternatively searched for in the path if not.
+</p>
+<p>The programs are all run after the operation has effectively
+completed.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/Moving-a-repository.html
===================================================================
RCS file: html_node/Moving-a-repository.html
diff -N html_node/Moving-a-repository.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Moving-a-repository.html 28 Dec 2015 15:58:01 -0000 1.1
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Moving a
repository</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Moving a repository">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Moving a repository">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Remote-repositories.html#Remote-repositories" rel="next"
title="Remote repositories">
+<link href="Backing-up.html#Backing-up" rel="prev" title="Backing up">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Moving-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="Remote-repositories.html#Remote-repositories" accesskey="n"
rel="next">Remote repositories</a>, Previous: <a
href="Backing-up.html#Backing-up" accesskey="p" rel="prev">Backing up</a>, Up:
<a href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Moving-a-repository-1"></a>
+<h3 class="section">2.8 Moving a repository</h3>
+<a name="index-Repository_002c-moving"></a>
+<a name="index-Moving-a-repository"></a>
+<a name="index-Copying-a-repository"></a>
+
+<p>Just as backing up the files in the repository is
+pretty much like backing up any other files, if you
+need to move a repository from one place to another it
+is also pretty much like just moving any other
+collection of files.
+</p>
+<p>The main thing to consider is that working directories
+point to the repository. The simplest way to deal with
+a moved repository is to just get a fresh working
+directory after the move. Of course, you’ll want to
+make sure that the old working directory had been
+checked in before the move, or you figured out some
+other way to make sure that you don’t lose any
+changes. If you really do want to reuse the existing
+working directory, it should be possible with manual
+surgery on the <samp>CVS/Repository</samp> files. You can
+see <a href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a>, for information on
+the <samp>CVS/Repository</samp> and <samp>CVS/Root</samp> files, but
+unless you are sure you want to bother, it probably
+isn’t worth it.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Moving-directories.html
===================================================================
RCS file: html_node/Moving-directories.html
diff -N html_node/Moving-directories.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Moving-directories.html 28 Dec 2015 15:58:01 -0000 1.1
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Moving
directories</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Moving directories">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Moving directories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="up"
title="Adding and removing">
+<link href="History-browsing.html#History-browsing" rel="next" title="History
browsing">
+<link href="Rename-by-copying.html#Rename-by-copying" rel="prev" title="Rename
by copying">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Moving-directories"></a>
+<div class="header">
+<p>
+Previous: <a href="Moving-files.html#Moving-files" accesskey="p"
rel="prev">Moving files</a>, Up: <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Moving-and-renaming-directories"></a>
+<h3 class="section">7.5 Moving and renaming directories</h3>
+<a name="index-Moving-directories"></a>
+<a name="index-Renaming-directories"></a>
+<a name="index-Directories_002c-moving"></a>
+
+<p>The normal way to rename or move a directory is to
+rename or move each file within it as described in
+<a href="Outside.html#Outside">Outside</a>. Then check out with the
‘<samp>-P</samp>’
+option, as described in <a
href="Removing-directories.html#Removing-directories">Removing directories</a>.
+</p>
+<p>If you really want to hack the repository to rename or
+delete a directory in the repository, you can do it
+like this:
+</p>
+<ol>
+<li> Inform everyone who has a checked out copy of the directory that the
+directory will be renamed. They should commit all their changes in all their
+copies of the project containing the directory to be removed, and remove
+all their working copies of said project, before you take the steps below.
+
+</li><li> Rename the directory inside the repository.
+
+<div class="example">
+<pre class="example">$ cd $CVSROOT/<var>parent-dir</var>
+$ mv <var>old-dir</var> <var>new-dir</var>
+</pre></div>
+
+</li><li> Fix the <small>CVS</small> administrative files, if necessary (for
+instance if you renamed an entire module).
+
+</li><li> Tell everyone that they can check out again and continue
+working.
+
+</li></ol>
+
+<p>If someone had a working copy the <small>CVS</small> commands will
+cease to work for him, until he removes the directory
+that disappeared inside the repository.
+</p>
+<p>It is almost always better to move the files in the
+directory instead of moving the directory. If you move the
+directory you are unlikely to be able to retrieve old
+releases correctly, since they probably depend on the
+name of the directories.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Moving-files.html
===================================================================
RCS file: html_node/Moving-files.html
diff -N html_node/Moving-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Moving-files.html 28 Dec 2015 15:58:01 -0000 1.1
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Moving files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Moving files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Moving files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="up"
title="Adding and removing">
+<link href="Outside.html#Outside" rel="next" title="Outside">
+<link href="Removing-directories.html#Removing-directories" rel="prev"
title="Removing directories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Moving-files"></a>
+<div class="header">
+<p>
+Next: <a href="Moving-directories.html#Moving-directories" accesskey="n"
rel="next">Moving directories</a>, Previous: <a
href="Removing-directories.html#Removing-directories" accesskey="p"
rel="prev">Removing directories</a>, Up: <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Moving-and-renaming-files"></a>
+<h3 class="section">7.4 Moving and renaming files</h3>
+<a name="index-Moving-files"></a>
+<a name="index-Renaming-files"></a>
+<a name="index-Files_002c-moving"></a>
+
+<p>Moving files to a different directory or renaming them
+is not difficult, but some of the ways in which this
+works may be non-obvious. (Moving or renaming a
+directory is even harder. See <a
href="Moving-directories.html#Moving-directories">Moving directories</a>.).
+</p>
+<p>The examples below assume that the file <var>old</var> is renamed to
+<var>new</var>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="Outside.html#Outside"
accesskey="1">Outside</a>:</td><td> </td><td align="left"
valign="top">The normal way to Rename
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Inside.html#Inside"
accesskey="2">Inside</a>:</td><td> </td><td align="left"
valign="top">A tricky, alternative way
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Rename-by-copying.html#Rename-by-copying" accesskey="3">Rename by
copying</a>:</td><td> </td><td align="left" valign="top">Another
tricky, alternative way
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Multiple-developers.html
===================================================================
RCS file: html_node/Multiple-developers.html
diff -N html_node/Multiple-developers.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Multiple-developers.html 28 Dec 2015 15:58:01 -0000 1.1
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Multiple
developers</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Multiple developers">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Multiple developers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="File-status.html#File-status" rel="next" title="File status">
+<link href="Binary-howto.html#Binary-howto" rel="prev" title="Binary howto">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Multiple-developers"></a>
+<div class="header">
+<p>
+Next: <a href="Revision-management.html#Revision-management" accesskey="n"
rel="next">Revision management</a>, Previous: <a
href="Binary-files.html#Binary-files" accesskey="p" rel="prev">Binary
files</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Multiple-developers-1"></a>
+<h2 class="chapter">10 Multiple developers</h2>
+<a name="index-Multiple-developers"></a>
+<a name="index-Team-of-developers"></a>
+<a name="index-File-locking"></a>
+<a name="index-Locking-files"></a>
+<a name="index-Working-copy"></a>
+<a name="index-Reserved-checkouts"></a>
+<a name="index-Unreserved-checkouts"></a>
+<a name="index-RCS_002dstyle-locking"></a>
+
+<p>When more than one person works on a software project
+things often get complicated. Often, two people try to
+edit the same file simultaneously. One solution, known
+as <em>file locking</em> or <em>reserved checkouts</em>, is
+to allow only one person to edit each file at a time.
+This is the only solution with some version control
+systems, including <small>RCS</small> and <small>SCCS</small>. Currently
+the usual way to get reserved checkouts with <small>CVS</small>
+is the <code>cvs admin -l</code> command (see <a
href="admin-options.html#admin-options">admin options</a>). This is not as
nicely integrated into
+<small>CVS</small> as the watch features, described below, but it
+seems that most people with a need for reserved
+checkouts find it adequate.
+It also may be possible to use the watches
+features described below, together with suitable
+procedures (not enforced by software), to avoid having
+two people edit at the same time.
+</p>
+<p>The default model with <small>CVS</small> is known as
+<em>unreserved checkouts</em>. In this model, developers
+can edit their own <em>working copy</em> of a file
+simultaneously. The first person that commits his
+changes has no automatic way of knowing that another
+has started to edit it. Others will get an error
+message when they try to commit the file. They must
+then use <small>CVS</small> commands to bring their working copy
+up to date with the repository revision. This process
+is almost automatic.
+</p>
+<p><small>CVS</small> also supports mechanisms which facilitate
+various kinds of communication, without actually
+enforcing rules like reserved checkouts do.
+</p>
+<p>The rest of this chapter describes how these various
+models work, and some of the issues involved in
+choosing between them.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="File-status.html#File-status" accesskey="1">File
status</a>:</td><td> </td><td align="left" valign="top">A file can
be in several states
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Updating-a-file.html#Updating-a-file" accesskey="2">Updating a
file</a>:</td><td> </td><td align="left" valign="top">Bringing a
file up-to-date
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Conflicts-example.html#Conflicts-example" accesskey="3">Conflicts
example</a>:</td><td> </td><td align="left" valign="top">An
informative example
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Informing-others.html#Informing-others" accesskey="4">Informing
others</a>:</td><td> </td><td align="left" valign="top">To cooperate
you must inform
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Concurrency.html#Concurrency"
accesskey="5">Concurrency</a>:</td><td> </td><td align="left"
valign="top">Simultaneous repository access
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Watches.html#Watches"
accesskey="6">Watches</a>:</td><td> </td><td align="left"
valign="top">Mechanisms to track who is editing files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Choosing-a-model.html#Choosing-a-model" accesskey="7">Choosing a
model</a>:</td><td> </td><td align="left" valign="top">Reserved or
unreserved checkouts?
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Revision-management.html#Revision-management" accesskey="n"
rel="next">Revision management</a>, Previous: <a
href="Binary-files.html#Binary-files" accesskey="p" rel="prev">Binary
files</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Multiple-repositories.html
===================================================================
RCS file: html_node/Multiple-repositories.html
diff -N html_node/Multiple-repositories.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Multiple-repositories.html 28 Dec 2015 15:58:02 -0000
1.1
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Multiple
repositories</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Multiple repositories">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Multiple repositories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Creating-a-repository.html#Creating-a-repository" rel="next"
title="Creating a repository">
+<link href="Intro-administrative-files.html#Intro-administrative-files"
rel="prev" title="Intro administrative files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Multiple-repositories"></a>
+<div class="header">
+<p>
+Next: <a href="Creating-a-repository.html#Creating-a-repository" accesskey="n"
rel="next">Creating a repository</a>, Previous: <a
href="Intro-administrative-files.html#Intro-administrative-files" accesskey="p"
rel="prev">Intro administrative files</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Multiple-repositories-1"></a>
+<h3 class="section">2.5 Multiple repositories</h3>
+<a name="index-Multiple-repositories"></a>
+<a name="index-Repositories_002c-multiple"></a>
+<a name="index-Many-repositories"></a>
+<a name="index-Parallel-repositories"></a>
+<a name="index-Disjoint-repositories"></a>
+<a name="index-CVSROOT_002c-multiple-repositories"></a>
+
+<p>In some situations it is a good idea to have more than
+one repository, for instance if you have two
+development groups that work on separate projects
+without sharing any code. All you have to do to have
+several repositories is to specify the appropriate
+repository, using the <code>CVSROOT</code> environment
+variable, the ‘<samp>-d</samp>’ option to <small>CVS</small>, or
(once
+you have checked out a working directory) by simply
+allowing <small>CVS</small> to use the repository that was used
+to check out the working directory
+(see <a href="Specifying-a-repository.html#Specifying-a-repository">Specifying
a repository</a>).
+</p>
+<p>The big advantage of having multiple repositories is
+that they can reside on different servers. With <small>CVS</small>
+version 1.10, a single command cannot recurse into
+directories from different repositories. With development
+versions of <small>CVS</small>, you can check out code from multiple
+servers into your working directory. <small>CVS</small> will
+recurse and handle all the details of making
+connections to as many server machines as necessary to
+perform the requested command. Here is an example of
+how to set up a working directory:
+</p>
+<div class="example">
+<pre class="example">cvs -d server1:/cvs co dir1
+cd dir1
+cvs -d server2:/root co sdir
+cvs update
+</pre></div>
+
+<p>The <code>cvs co</code> commands set up the working
+directory, and then the <code>cvs update</code> command will
+contact server2, to update the dir1/sdir subdirectory,
+and server1, to update everything else.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/Multiple-vendor-branches.html
===================================================================
RCS file: html_node/Multiple-vendor-branches.html
diff -N html_node/Multiple-vendor-branches.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Multiple-vendor-branches.html 28 Dec 2015 15:58:02 -0000
1.1
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Multiple vendor
branches</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Multiple vendor branches">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Multiple vendor branches">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Builds.html#Builds" rel="next" title="Builds">
+<link href="Keywords-in-imports.html#Keywords-in-imports" rel="prev"
title="Keywords in imports">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Multiple-vendor-branches"></a>
+<div class="header">
+<p>
+Previous: <a href="Keywords-in-imports.html#Keywords-in-imports" accesskey="p"
rel="prev">Keywords in imports</a>, Up: <a
href="Tracking-sources.html#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Multiple-vendor-branches-1"></a>
+<h3 class="section">13.6 Multiple vendor branches</h3>
+
+<p>All the examples so far assume that there is only one
+vendor from which you are getting sources. In some
+situations you might get sources from a variety of
+places. For example, suppose that you are dealing with
+a project where many different people and teams are
+modifying the software. There are a variety of ways to
+handle this, but in some cases you have a bunch of
+source trees lying around and what you want to do more
+than anything else is just to all put them in <small>CVS</small> so
+that you at least have them in one place.
+</p>
+<p>For handling situations in which there may be more than
+one vendor, you may specify the ‘<samp>-b</samp>’ option to
+<code>cvs import</code>. It takes as an argument the vendor
+branch to import to. The default is ‘<samp>-b 1.1.1</samp>’.
+</p>
+<p>For example, suppose that there are two teams, the red
+team and the blue team, that are sending you sources.
+You want to import the red team’s efforts to branch
+1.1.1 and use the vendor tag RED. You want to import
+the blue team’s efforts to branch 1.1.3 and use the
+vendor tag BLUE. So the commands you might use are:
+</p>
+<div class="example">
+<pre class="example">$ cvs import dir RED RED_1-0
+$ cvs import -b 1.1.3 dir BLUE BLUE_1-5
+</pre></div>
+
+<p>Note that if your vendor tag does not match your
+‘<samp>-b</samp>’ option, <small>CVS</small> will not detect this
case! For
+example,
+</p>
+<div class="example">
+<pre class="example">$ cvs import -b 1.1.3 dir RED RED_1-0
+</pre></div>
+
+<p>Be careful; this kind of mismatch is sure to sow
+confusion or worse. I can’t think of a useful purpose
+for the ability to specify a mismatch here, but if you
+discover such a use, don’t. <small>CVS</small> is likely to make this
+an error in some future release.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Keywords-in-imports.html#Keywords-in-imports" accesskey="p"
rel="prev">Keywords in imports</a>, Up: <a
href="Tracking-sources.html#Tracking-sources" accesskey="u" rel="up">Tracking
sources</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Other-problems.html
===================================================================
RCS file: html_node/Other-problems.html
diff -N html_node/Other-problems.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Other-problems.html 28 Dec 2015 15:58:02 -0000 1.1
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Other problems</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Other problems">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Other problems">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Troubleshooting.html#Troubleshooting" rel="up"
title="Troubleshooting">
+<link href="Credits.html#Credits" rel="next" title="Credits">
+<link href="Connection.html#Connection" rel="prev" title="Connection">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Other-problems"></a>
+<div class="header">
+<p>
+Previous: <a href="Connection.html#Connection" accesskey="p"
rel="prev">Connection</a>, Up: <a href="Troubleshooting.html#Troubleshooting"
accesskey="u" rel="up">Troubleshooting</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Other-common-problems"></a>
+<h3 class="appendixsec">F.3 Other common problems</h3>
+
+<p>Here is a list of problems which do not fit into the
+above categories. They are in no particular order.
+</p>
+<ul>
+<li> On Windows, if there is a 30 second or so delay when
+you run a <small>CVS</small> command, it may mean that you have
+your home directory set to <samp>C:/</samp>, for example (see
+<code>HOMEDRIVE</code> and <code>HOMEPATH</code> in
+<a href="Environment-variables.html#Environment-variables">Environment
variables</a>). <small>CVS</small> expects the home
+directory to not end in a slash, for example <samp>C:</samp>
+or <samp>C:\cvs</samp>.
+
+</li><li> If you are running <small>CVS</small> 1.9.18 or older, and
+<code>cvs update</code> finds a conflict and tries to
+merge, as described in <a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a>, but
+doesn’t tell you there were conflicts, then you may
+have an old version of <small>RCS</small>. The easiest solution
+probably is to upgrade to a current version of
+<small>CVS</small>, which does not rely on external <small>RCS</small>
+programs.
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: html_node/Outside.html
===================================================================
RCS file: html_node/Outside.html
diff -N html_node/Outside.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Outside.html 28 Dec 2015 15:58:02 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Outside</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Outside">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Outside">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Moving-files.html#Moving-files" rel="up" title="Moving files">
+<link href="Inside.html#Inside" rel="next" title="Inside">
+<link href="Moving-files.html#Moving-files" rel="prev" title="Moving files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Outside"></a>
+<div class="header">
+<p>
+Next: <a href="Inside.html#Inside" accesskey="n" rel="next">Inside</a>, Up: <a
href="Moving-files.html#Moving-files" accesskey="u" rel="up">Moving files</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Normal-way-to-Rename"></a>
+<h4 class="subsection">7.4.1 The Normal way to Rename</h4>
+
+
+<p>The normal way to move a file is to copy <var>old</var> to
+<var>new</var>, and then issue the normal <small>CVS</small> commands
+to remove <var>old</var> from the repository, and add
+<var>new</var> to it.
+</p>
+<div class="example">
+<pre class="example">$ mv <var>old</var> <var>new</var>
+$ cvs remove <var>old</var>
+$ cvs add <var>new</var>
+$ cvs commit -m "Renamed <var>old</var> to <var>new</var>"
<var>old</var> <var>new</var>
+</pre></div>
+
+<p>This is the simplest way to move a file, it is not
+error-prone, and it preserves the history of what was
+done. Note that to access the history of the file you
+must specify the old or the new name, depending on what
+portion of the history you are accessing. For example,
+<code>cvs log <var>old</var></code> will give the log up until the
+time of the rename.
+</p>
+<p>When <var>new</var> is committed its revision numbers will
+start again, usually at 1.1, so if that bothers you,
+use the ‘<samp>-r rev</samp>’ option to commit. For more
+information see <a
href="Assigning-revisions.html#Assigning-revisions">Assigning revisions</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Overview.html
===================================================================
RCS file: html_node/Overview.html
diff -N html_node/Overview.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Overview.html 28 Dec 2015 15:58:02 -0000 1.1
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Overview</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Overview">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Overview">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="What-is-CVS_003f.html#What-is-CVS_003f" rel="next" title="What is
CVS?">
+<link href="index.html#Top" rel="prev" title="Top">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Overview"></a>
+<div class="header">
+<p>
+Next: <a href="Repository.html#Repository" accesskey="n"
rel="next">Repository</a>, Previous: <a href="index.html#Top" accesskey="p"
rel="prev">Top</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Overview-1"></a>
+<h2 class="chapter">1 Overview</h2>
+<a name="index-Overview"></a>
+
+<p>This chapter is for people who have never used
+<small>CVS</small>, and perhaps have never used version control
+software before.
+</p>
+<p>If you are already familiar with <small>CVS</small> and are just
+trying to learn a particular feature or remember a
+certain command, you can probably skip everything here.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="What-is-CVS_003f.html#What-is-CVS_003f" accesskey="1">What is
CVS?</a>:</td><td> </td><td align="left" valign="top">What you can
do with <small>CVS</small>
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="What-is-CVS-not_003f.html#What-is-CVS-not_003f" accesskey="2">What is CVS
not?</a>:</td><td> </td><td align="left" valign="top">Problems
<small>CVS</small> doesn’t try to solve
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="A-sample-session.html#A-sample-session" accesskey="3">A sample
session</a>:</td><td> </td><td align="left" valign="top">A tour of
basic <small>CVS</small> usage
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Password-authenticated.html
===================================================================
RCS file: html_node/Password-authenticated.html
diff -N html_node/Password-authenticated.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Password-authenticated.html 28 Dec 2015 15:58:03 -0000
1.1
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Password
authenticated</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Password authenticated">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Password authenticated">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link
href="Password-authentication-server.html#Password-authentication-server"
rel="next" title="Password authentication server">
+<link href="Connecting-via-rsh.html#Connecting-via-rsh" rel="prev"
title="Connecting via rsh">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Password-authenticated"></a>
+<div class="header">
+<p>
+Next: <a href="GSSAPI-authenticated.html#GSSAPI-authenticated" accesskey="n"
rel="next">GSSAPI authenticated</a>, Previous: <a
href="Connecting-via-rsh.html#Connecting-via-rsh" accesskey="p"
rel="prev">Connecting via rsh</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Direct-connection-with-password-authentication"></a>
+<h4 class="subsection">2.9.3 Direct connection with password
authentication</h4>
+
+<p>The <small>CVS</small> client can also connect to the server
+using a password protocol. This is particularly useful
+if using <code>rsh</code> is not feasible (for example,
+the server is behind a firewall), and Kerberos also is
+not available.
+</p>
+<p>To use this method, it is necessary to make
+some adjustments on both the server and client sides.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Password-authentication-server.html#Password-authentication-server"
accesskey="1">Password authentication server</a>:</td><td> </td><td
align="left" valign="top">Setting up the server
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Password-authentication-client.html#Password-authentication-client"
accesskey="2">Password authentication client</a>:</td><td> </td><td
align="left" valign="top">Using the client
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Password-authentication-security.html#Password-authentication-security"
accesskey="3">Password authentication
security</a>:</td><td> </td><td align="left" valign="top">What this
method does and does not do
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Password-authentication-client.html
===================================================================
RCS file: html_node/Password-authentication-client.html
diff -N html_node/Password-authentication-client.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Password-authentication-client.html 28 Dec 2015 15:58:03
-0000 1.1
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Password authentication
client</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Password authentication client">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Password authentication client">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Password-authenticated.html#Password-authenticated" rel="up"
title="Password authenticated">
+<link
href="Password-authentication-security.html#Password-authentication-security"
rel="next" title="Password authentication security">
+<link
href="Password-authentication-server.html#Password-authentication-server"
rel="prev" title="Password authentication server">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Password-authentication-client"></a>
+<div class="header">
+<p>
+Next: <a
href="Password-authentication-security.html#Password-authentication-security"
accesskey="n" rel="next">Password authentication security</a>, Previous: <a
href="Password-authentication-server.html#Password-authentication-server"
accesskey="p" rel="prev">Password authentication server</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-the-client-with-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.2 Using the client with password
authentication</h4>
+<a name="index-Login-_0028subcommand_0029"></a>
+<a name="index-Password-client_002c-using"></a>
+<a name="index-Authenticated-client_002c-using"></a>
+<a name="index-_003apserver_003a_002c-setting-up"></a>
+<p>To run a <small>CVS</small> command on a remote repository via
+the password-authenticating server, one specifies the
+<code>pserver</code> protocol, optional username, repository host, an
+optional port number, and path to the repository. For example:
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:faun.example.org:/usr/local/cvsroot
checkout someproj
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">CVSROOT=:pserver:address@hidden:2401/usr/local/cvsroot
+cvs checkout someproj
+</pre></div>
+
+<p>However, unless you’re connecting to a public-access
+repository (i.e., one where that username doesn’t
+require a password), you’ll need to supply a password or <em>log in</em>
first.
+Logging in verifies your password with the repository and stores it in a file.
+It’s done with the <code>login</code> command, which will
+prompt you interactively for the password if you didn’t supply one as
part of
+<var>$CVSROOT</var>:
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:address@hidden:/usr/local/cvsroot login
+CVS password:
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:bach:address@hidden:/usr/local/cvsroot
login
+</pre></div>
+
+<p>After you enter the password, <small>CVS</small> verifies it with
+the server. If the verification succeeds, then that
+combination of username, host, repository, and password
+is permanently recorded, so future transactions with
+that repository won’t require you to run <code>cvs
+login</code>. (If verification fails, <small>CVS</small> will exit
+complaining that the password was incorrect, and
+nothing will be recorded.)
+</p>
+<p>The records are stored, by default, in the file
+<samp>$HOME/.cvspass</samp>. That file’s format is
+human-readable, and to a degree human-editable, but
+note that the passwords are not stored in
+cleartext—they are trivially encoded to protect them
+from "innocent" compromise (i.e., inadvertent viewing
+by a system administrator or other non-malicious
+person).
+</p>
+<a name="index-CVS_005fPASSFILE_002c-environment-variable"></a>
+<p>You can change the default location of this file by
+setting the <code>CVS_PASSFILE</code> environment variable.
+If you use this variable, make sure you set it
+<em>before</em> <code>cvs login</code> is run. If you were to
+set it after running <code>cvs login</code>, then later
+<small>CVS</small> commands would be unable to look up the
+password for transmission to the server.
+</p>
+<p>Once you have logged in, all <small>CVS</small> commands using
+that remote repository and username will authenticate
+with the stored password. So, for example
+</p>
+<div class="example">
+<pre class="example">cvs -d :pserver:address@hidden:/usr/local/cvsroot
checkout foo
+</pre></div>
+
+<p>should just work (unless the password changes on the
+server side, in which case you’ll have to re-run
+<code>cvs login</code>).
+</p>
+<p>Note that if the ‘<samp>:pserver:</samp>’ were not present in
+the repository specification, <small>CVS</small> would assume it
+should use <code>rsh</code> to connect with the server
+instead (see <a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting
via rsh</a>).
+</p>
+<p>Of course, once you have a working copy checked out and
+are running <small>CVS</small> commands from within it, there is
+no longer any need to specify the repository
+explicitly, because <small>CVS</small> can deduce the repository
+from the working copy’s <samp>CVS</samp> subdirectory.
+</p>
+<a name="index-Logout-_0028subcommand_0029"></a>
+<p>The password for a given remote repository can be
+removed from the <code>CVS_PASSFILE</code> by using the
+<code>cvs logout</code> command.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a
href="Password-authentication-security.html#Password-authentication-security"
accesskey="n" rel="next">Password authentication security</a>, Previous: <a
href="Password-authentication-server.html#Password-authentication-server"
accesskey="p" rel="prev">Password authentication server</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Password-authentication-security.html
===================================================================
RCS file: html_node/Password-authentication-security.html
diff -N html_node/Password-authentication-security.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Password-authentication-security.html 28 Dec 2015 15:58:03
-0000 1.1
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Password authentication
security</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Password authentication security">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Password authentication security">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Password-authenticated.html#Password-authenticated" rel="up"
title="Password authenticated">
+<link href="GSSAPI-authenticated.html#GSSAPI-authenticated" rel="next"
title="GSSAPI authenticated">
+<link
href="Password-authentication-client.html#Password-authentication-client"
rel="prev" title="Password authentication client">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Password-authentication-security"></a>
+<div class="header">
+<p>
+Previous: <a
href="Password-authentication-client.html#Password-authentication-client"
accesskey="p" rel="prev">Password authentication client</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Security-considerations-with-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.3 Security considerations with password
authentication</h4>
+
+<a name="index-Security_002c-of-pserver"></a>
+<p>The passwords are stored on the client side in a
+trivial encoding of the cleartext, and transmitted in
+the same encoding. The encoding is done only to
+prevent inadvertent password compromises (i.e., a
+system administrator accidentally looking at the file),
+and will not prevent even a naive attacker from gaining
+the password.
+</p>
+<p>The separate <small>CVS</small> password file (see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>) allows people
+to use a different password for repository access than
+for login access. On the other hand, once a user has
+non-read-only
+access to the repository, she can execute programs on
+the server system through a variety of means. Thus, repository
+access implies fairly broad system access as well. It
+might be possible to modify <small>CVS</small> to prevent that,
+but no one has done so as of this writing.
+</p>
+<p>Note that because the <samp>$CVSROOT/CVSROOT</samp> directory
+contains <samp>passwd</samp> and other files which are used
+to check security, you must control the permissions on
+this directory as tightly as the permissions on
+<samp>/etc</samp>. The same applies to the <samp>$CVSROOT</samp>
+directory itself and any directory
+above it in the tree. Anyone who has write access to
+such a directory will have the ability to become any
+user on the system. Note that these permissions are
+typically tighter than you would use if you are not
+using pserver.
+</p>
+<p>In summary, anyone who gets the password gets
+repository access (which may imply some measure of general system
+access as well). The password is available to anyone
+who can sniff network packets or read a protected
+(i.e., user read-only) file. If you want real
+security, get Kerberos.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a
href="Password-authentication-client.html#Password-authentication-client"
accesskey="p" rel="prev">Password authentication client</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Password-authentication-server.html
===================================================================
RCS file: html_node/Password-authentication-server.html
diff -N html_node/Password-authentication-server.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Password-authentication-server.html 28 Dec 2015 15:58:03
-0000 1.1
@@ -0,0 +1,290 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Password authentication
server</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Password authentication server">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Password authentication server">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Password-authenticated.html#Password-authenticated" rel="up"
title="Password authenticated">
+<link
href="Password-authentication-client.html#Password-authentication-client"
rel="next" title="Password authentication client">
+<link href="Password-authenticated.html#Password-authenticated" rel="prev"
title="Password authenticated">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Password-authentication-server"></a>
+<div class="header">
+<p>
+Next: <a
href="Password-authentication-client.html#Password-authentication-client"
accesskey="n" rel="next">Password authentication client</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Setting-up-the-server-for-password-authentication"></a>
+<h4 class="subsubsection">2.9.3.1 Setting up the server for password
authentication</h4>
+
+<p>First of all, you probably want to tighten the
+permissions on the <samp>$CVSROOT</samp> and
+<samp>$CVSROOT/CVSROOT</samp> directories. See <a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a>, for more details.
+</p>
+<a name="index-pserver-_0028subcommand_0029"></a>
+<a name="index-Remote-repositories_002c-port-specification-1"></a>
+<a name="index-Repositories_002c-remote_002c-port-specification-1"></a>
+<a name="index-Client_002fServer-Operation_002c-port-specification-1"></a>
+<a
name="index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a
name="index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a
name="index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification-1"></a>
+<a name="index-port_002c-specifying-for-remote-repositories-1"></a>
+<a name="index-Password-server_002c-setting-up"></a>
+<a name="index-Authenticating-server_002c-setting-up"></a>
+<a name="index-inetd_002c-configuring-for-pserver"></a>
+<a name="index-xinetd_002c-configuring-for-pserver"></a>
+<p>On the server side, the file <samp>/etc/inetd.conf</samp>
+needs to be edited so <code>inetd</code> knows to run the
+command <code>cvs pserver</code> when it receives a
+connection on the right port. By default, the port
+number is 2401; it would be different if your client
+were compiled with <code>CVS_AUTH_PORT</code> defined to
+something else, though. This can also be specified in the CVSROOT variable
+(see <a href="Remote-repositories.html#Remote-repositories">Remote
repositories</a>) or overridden with the CVS_CLIENT_PORT
+environment variable (see <a
href="Environment-variables.html#Environment-variables">Environment
variables</a>).
+</p>
+<p>If your <code>inetd</code> allows raw port numbers in
+<samp>/etc/inetd.conf</samp>, then the following (all on a
+single line in <samp>inetd.conf</samp>) should be sufficient:
+</p>
+<div class="example">
+<pre class="example">2401 stream tcp nowait root /usr/local/bin/cvs
+cvs -f --allow-root=/usr/cvsroot pserver
+</pre></div>
+
+<p>(You could also use the
+‘<samp>-T</samp>’ option to specify a temporary directory.)
+</p>
+<p>The ‘<samp>--allow-root</samp>’ option specifies the allowable
+<small>CVSROOT</small> directory. Clients which attempt to use a
+different <small>CVSROOT</small> directory will not be allowed to
+connect. If there is more than one <small>CVSROOT</small>
+directory which you want to allow, repeat the option.
+Unfortunately, many versions of <code>inetd</code> have very small
+limits on the number of arguments and/or the total length
+of the command. The usual solution to this problem is
+to have <code>inetd</code> run a shell script which then invokes
+<small>CVS</small> with the necessary arguments:
+</p>
+<div class="example">
+<pre class="example">#! /bin/sh
+exec /usr/local/bin/cvs -f \
+ --allow-root=/repo1 \
+ --allow-root=/repo2 \
+ ...
+ --allow-root=/repo<var>N</var> \
+ pserver
+</pre></div>
+
+<p>If your <code>inetd</code> wants a symbolic service
+name instead of a raw port number, then put this in
+<samp>/etc/services</samp>:
+</p>
+<div class="example">
+<pre class="example">cvspserver 2401/tcp
+</pre></div>
+
+<p>and put <code>cvspserver</code> instead of <code>2401</code> in
<samp>inetd.conf</samp>.
+</p>
+<p>If your system uses <code>xinetd</code> instead of <code>inetd</code>,
+the procedure is slightly different.
+Create a file called <samp>/etc/xinetd.d/cvspserver</samp> containing the
following:
+</p>
+<div class="example">
+<pre class="example">service cvspserver
+{
+ port = 2401
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ user = root
+ passenv = PATH
+ server = /usr/local/bin/cvs
+ server_args = -f --allow-root=/usr/cvsroot pserver
+}
+</pre></div>
+
+<p>(If <code>cvspserver</code> is defined in <samp>/etc/services</samp>, you
can omit
+the <code>port</code> line.)
+</p>
+<p>Once the above is taken care of, restart your
+<code>inetd</code>, or do whatever is necessary to force it
+to reread its initialization files.
+</p>
+<p>If you are having trouble setting this up, see
+<a href="Connection.html#Connection">Connection</a>.
+</p>
+<a name="index-CVS-passwd-file"></a>
+<a name="index-passwd-_0028admin-file_0029"></a>
+<p>Because the client stores and transmits passwords in
+cleartext (almost—see <a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a>, for details), a separate <small>CVS</small>
password
+file is generally used, so people don’t compromise
+their regular passwords when they access the
+repository. This file is
+<samp>$CVSROOT/CVSROOT/passwd</samp> (see <a
href="Intro-administrative-files.html#Intro-administrative-files">Intro
administrative files</a>). It uses a colon-separated
+format, similar to <samp>/etc/passwd</samp> on Unix systems,
+except that it has fewer fields: <small>CVS</small> username,
+optional password, and an optional system username for
+<small>CVS</small> to run as if authentication succeeds. Here is
+an example <samp>passwd</samp> file with five entries:
+</p>
+<div class="example">
+<pre class="example">anonymous:
+bach:ULtgRLXo7NRxs
+spwang:1sOp854gDF3DY
+melissa:tGX1fS8sun6rY:pubcvs
+qproj:XR4EZcEs0szik:pubcvs
+</pre></div>
+
+<p>(The passwords are encrypted according to the standard
+Unix <code>crypt()</code> function, so it is possible to
+paste in passwords directly from regular Unix
+<samp>/etc/passwd</samp> files.)
+</p>
+<p>The first line in the example will grant access to any
+<small>CVS</small> client attempting to authenticate as user
+<code>anonymous</code>, no matter what password they use,
+including an empty password. (This is typical for
+sites granting anonymous read-only access; for
+information on how to do the "read-only" part, see
+<a href="Read_002donly-access.html#Read_002donly-access">Read-only access</a>.)
+</p>
+<p>The second and third lines will grant access to
+<code>bach</code> and <code>spwang</code> if they supply their
+respective plaintext passwords.
+</p>
+<a name="index-User-aliases"></a>
+<p>The fourth line will grant access to <code>melissa</code>, if
+she supplies the correct password, but her <small>CVS</small>
+operations will actually run on the server side under
+the system user <code>pubcvs</code>. Thus, there need not be
+any system user named <code>melissa</code>, but there
+<em>must</em> be one named <code>pubcvs</code>.
+</p>
+<p>The fifth line shows that system user identities can be
+shared: any client who successfully authenticates as
+<code>qproj</code> will actually run as <code>pubcvs</code>, just
+as <code>melissa</code> does. That way you could create a
+single, shared system user for each project in your
+repository, and give each developer their own line in
+the <samp>$CVSROOT/CVSROOT/passwd</samp> file. The <small>CVS</small>
+username on each line would be different, but the
+system username would be the same. The reason to have
+different <small>CVS</small> usernames is that <small>CVS</small> will log
their
+actions under those names: when <code>melissa</code> commits
+a change to a project, the checkin is recorded in the
+project’s history under the name <code>melissa</code>, not
+<code>pubcvs</code>. And the reason to have them share a
+system username is so that you can arrange permissions
+in the relevant area of the repository such that only
+that account has write-permission there.
+</p>
+<p>If the system-user field is present, all
+password-authenticated <small>CVS</small> commands run as that
+user; if no system user is specified, <small>CVS</small> simply
+takes the <small>CVS</small> username as the system username and
+runs commands as that user. In either case, if there
+is no such user on the system, then the <small>CVS</small>
+operation will fail (regardless of whether the client
+supplied a valid password).
+</p>
+<p>The password and system-user fields can both be omitted
+(and if the system-user field is omitted, then also
+omit the colon that would have separated it from the
+encrypted password). For example, this would be a
+valid <samp>$CVSROOT/CVSROOT/passwd</samp> file:
+</p>
+<div class="example">
+<pre class="example">anonymous::pubcvs
+fish:rKa5jzULzmhOo:kfogel
+sussman:1sOp854gDF3DY
+</pre></div>
+
+<p>When the password field is omitted or empty, then the
+client’s authentication attempt will succeed with any
+password, including the empty string. However, the
+colon after the <small>CVS</small> username is always necessary,
+even if the password is empty.
+</p>
+<p><small>CVS</small> can also fall back to use system authentication.
+When authenticating a password, the server first checks
+for the user in the <samp>$CVSROOT/CVSROOT/passwd</samp>
+file. If it finds the user, it will use that entry for
+authentication as described above. But if it does not
+find the user, or if the <small>CVS</small> <samp>passwd</samp> file
+does not exist, then the server can try to authenticate
+the username and password using the operating system’s
+user-lookup routines (this "fallback" behavior can be
+disabled by setting <code>SystemAuth=no</code> in the
+<small>CVS</small> <samp>config</samp> file, see <a
href="config.html#config">config</a>). Be
+aware, however, that falling back to system
+authentication might be a security risk: <small>CVS</small>
+operations would then be authenticated with that user’s
+regular login password, and the password flies across
+the network in plaintext. See <a
href="Password-authentication-security.html#Password-authentication-security">Password
authentication security</a> for more on this.
+</p>
+<p>Right now, the only way to put a password in the
+<small>CVS</small> <samp>passwd</samp> file is to paste it there from
+somewhere else. Someday, there may be a <code>cvs
+passwd</code> command.
+</p>
+<p>Unlike many of the files in <samp>$CVSROOT/CVSROOT</samp>, it
+is normal to edit the <samp>passwd</samp> file in-place,
+rather than via <small>CVS</small>. This is because of the
+possible security risks of having the <samp>passwd</samp>
+file checked out to people’s working copies. If you do
+want to include the <samp>passwd</samp> file in checkouts of
+<samp>$CVSROOT/CVSROOT</samp>, see <a
href="checkoutlist.html#checkoutlist">checkoutlist</a>.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a
href="Password-authentication-client.html#Password-authentication-client"
accesskey="n" rel="next">Password authentication client</a>, Up: <a
href="Password-authenticated.html#Password-authenticated" accesskey="u"
rel="up">Password authenticated</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Read_002donly-access.html
===================================================================
RCS file: html_node/Read_002donly-access.html
diff -N html_node/Read_002donly-access.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Read_002donly-access.html 28 Dec 2015 15:58:03 -0000 1.1
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Read-only access</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Read-only access">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Read-only access">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Server-temporary-directory.html#Server-temporary-directory"
rel="next" title="Server temporary directory">
+<link href="Connecting-via-fork.html#Connecting-via-fork" rel="prev"
title="Connecting via fork">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Read_002donly-access"></a>
+<div class="header">
+<p>
+Next: <a href="Server-temporary-directory.html#Server-temporary-directory"
accesskey="n" rel="next">Server temporary directory</a>, Previous: <a
href="Remote-repositories.html#Remote-repositories" accesskey="p"
rel="prev">Remote repositories</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Read_002donly-repository-access"></a>
+<h3 class="section">2.10 Read-only repository access</h3>
+<a name="index-Read_002donly-repository-access"></a>
+<a name="index-readers-_0028admin-file_0029"></a>
+<a name="index-writers-_0028admin-file_0029"></a>
+
+<p>It is possible to grant read-only repository
+access to people using the password-authenticated
+server (see <a
href="Password-authenticated.html#Password-authenticated">Password
authenticated</a>). (The
+other access methods do not have explicit support for
+read-only users because those methods all assume login
+access to the repository machine anyway, and therefore
+the user can do whatever local file permissions allow
+her to do.)
+</p>
+<p>A user who has read-only access can do only
+those <small>CVS</small> operations which do not modify the
+repository, except for certain “administrative” files
+(such as lock files and the history file). It may be
+desirable to use this feature in conjunction with
+user-aliasing (see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>).
+</p>
+<p>Unlike with previous versions of <small>CVS</small>, read-only
+users should be able merely to read the repository, and
+not to execute programs on the server or otherwise gain
+unexpected levels of access. Or to be more accurate,
+the <em>known</em> holes have been plugged. Because this
+feature is new and has not received a comprehensive
+security audit, you should use whatever level of
+caution seems warranted given your attitude concerning
+security.
+</p>
+<p>There are two ways to specify read-only access
+for a user: by inclusion, and by exclusion.
+</p>
+<p>"Inclusion" means listing that user
+specifically in the <samp>$CVSROOT/CVSROOT/readers</samp>
+file, which is simply a newline-separated list of
+users. Here is a sample <samp>readers</samp> file:
+</p>
+<div class="example">
+<pre class="example">melissa
+splotnik
+jrandom
+</pre></div>
+
+<p>(Don’t forget the newline after the last user.)
+</p>
+<p>"Exclusion" means explicitly listing everyone
+who has <em>write</em> access—if the file
+</p>
+<div class="example">
+<pre class="example">$CVSROOT/CVSROOT/writers
+</pre></div>
+
+<p>exists, then only
+those users listed in it have write access, and
+everyone else has read-only access (of course, even the
+read-only users still need to be listed in the
+<small>CVS</small> <samp>passwd</samp> file). The
+<samp>writers</samp> file has the same format as the
+<samp>readers</samp> file.
+</p>
+<p>Note: if your <small>CVS</small> <samp>passwd</samp>
+file maps cvs users onto system users (see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>), make sure you deny or grant
+read-only access using the <em>cvs</em> usernames, not
+the system usernames. That is, the <samp>readers</samp> and
+<samp>writers</samp> files contain cvs usernames, which may
+or may not be the same as system usernames.
+</p>
+<p>Here is a complete description of the server’s
+behavior in deciding whether to grant read-only or
+read-write access:
+</p>
+<p>If <samp>readers</samp> exists, and this user is
+listed in it, then she gets read-only access. Or if
+<samp>writers</samp> exists, and this user is NOT listed in
+it, then she also gets read-only access (this is true
+even if <samp>readers</samp> exists but she is not listed
+there). Otherwise, she gets full read-write access.
+</p>
+<p>Of course there is a conflict if the user is
+listed in both files. This is resolved in the more
+conservative way, it being better to protect the
+repository too much than too little: such a user gets
+read-only access.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Server-temporary-directory.html#Server-temporary-directory"
accesskey="n" rel="next">Server temporary directory</a>, Previous: <a
href="Remote-repositories.html#Remote-repositories" accesskey="p"
rel="prev">Remote repositories</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Recursive-behavior.html
===================================================================
RCS file: html_node/Recursive-behavior.html
diff -N html_node/Recursive-behavior.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Recursive-behavior.html 28 Dec 2015 15:58:03 -0000 1.1
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Recursive
behavior</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Recursive behavior">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Recursive behavior">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="next"
title="Adding and removing">
+<link href="Merging-and-keywords.html#Merging-and-keywords" rel="prev"
title="Merging and keywords">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Recursive-behavior"></a>
+<div class="header">
+<p>
+Next: <a href="Adding-and-removing.html#Adding-and-removing" accesskey="n"
rel="next">Adding and removing</a>, Previous: <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="p"
rel="prev">Branching and merging</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Recursive-behavior-1"></a>
+<h2 class="chapter">6 Recursive behavior</h2>
+<a name="index-Recursive-_0028directory-descending_0029"></a>
+<a name="index-Directory_002c-descending"></a>
+<a name="index-Descending-directories"></a>
+<a name="index-Subdirectories"></a>
+
+<p>Almost all of the subcommands of <small>CVS</small> work
+recursively when you specify a directory as an
+argument. For instance, consider this directory
+structure:
+</p>
+<div class="example">
+<pre class="example"> <code>$HOME</code>
+ |
+ +--<tt>tc</tt>
+ | |
+ +--<tt>CVS</tt>
+ | (internal CVS files)
+ +--<tt>Makefile</tt>
+ +--<tt>backend.c</tt>
+ +--<tt>driver.c</tt>
+ +--<tt>frontend.c</tt>
+ +--<tt>parser.c</tt>
+ +--<tt>man</tt>
+ | |
+ | +--<tt>CVS</tt>
+ | | (internal CVS files)
+ | +--<tt>tc.1</tt>
+ |
+ +--<tt>testing</tt>
+ |
+ +--<tt>CVS</tt>
+ | (internal CVS files)
+ +--<tt>testpgm.t</tt>
+ +--<tt>test2.t</tt>
+</pre></div>
+
+<p>If <samp>tc</samp> is the current working directory, the
+following is true:
+</p>
+<ul>
+<li> ‘<samp>cvs update testing</samp>’ is equivalent to
+
+<div class="example">
+<pre class="example">cvs update testing/testpgm.t testing/test2.t
+</pre></div>
+
+</li><li> ‘<samp>cvs update testing man</samp>’ updates all files
in the
+subdirectories
+
+</li><li> ‘<samp>cvs update .</samp>’ or just ‘<samp>cvs
update</samp>’ updates
+all files in the <code>tc</code> directory
+</li></ul>
+
+<p>If no arguments are given to <code>update</code> it will
+update all files in the current working directory and
+all its subdirectories. In other words, <samp>.</samp> is a
+default argument to <code>update</code>. This is also true
+for most of the <small>CVS</small> subcommands, not only the
+<code>update</code> command.
+</p>
+<p>The recursive behavior of the <small>CVS</small> subcommands can be
+turned off with the ‘<samp>-l</samp>’ option.
+Conversely, the ‘<samp>-R</samp>’ option can be used to force
recursion if
+‘<samp>-l</samp>’ is specified in <samp>~/.cvsrc</samp> (see <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<div class="example">
+<pre class="example">$ cvs update -l # <span class="roman">Don’t
update files in subdirectories</span>
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Regular-modules.html
===================================================================
RCS file: html_node/Regular-modules.html
diff -N html_node/Regular-modules.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Regular-modules.html 28 Dec 2015 15:58:04 -0000 1.1
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Regular modules</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Regular modules">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Regular modules">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="modules.html#modules" rel="up" title="modules">
+<link href="Ampersand-modules.html#Ampersand-modules" rel="next"
title="Ampersand modules">
+<link href="Alias-modules.html#Alias-modules" rel="prev" title="Alias modules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Regular-modules"></a>
+<div class="header">
+<p>
+Next: <a href="Ampersand-modules.html#Ampersand-modules" accesskey="n"
rel="next">Ampersand modules</a>, Previous: <a
href="Alias-modules.html#Alias-modules" accesskey="p" rel="prev">Alias
modules</a>, Up: <a href="modules.html#modules" accesskey="u"
rel="up">modules</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Regular-modules-1"></a>
+<h4 class="appendixsubsec">C.1.2 Regular modules</h4>
+<a name="index-Regular-modules"></a>
+
+<dl compact="compact">
+<dt><code><var>mname</var> [ options ] <var>dir</var> [
<var>files</var>… ]</code></dt>
+<dd><p>In the simplest case, this form of module definition
+reduces to ‘<samp><var>mname</var> <var>dir</var></samp>’. This
defines
+all the files in directory <var>dir</var> as module mname.
+<var>dir</var> is a relative path (from <code>$CVSROOT</code>) to a
+directory of source in the source repository. In this
+case, on checkout, a single directory called
+<var>mname</var> is created as a working directory; no
+intermediate directory levels are used by default, even
+if <var>dir</var> was a path involving several directory
+levels.
+</p></dd>
+</dl>
+
+<p>For example, if a module is defined by:
+</p>
+<div class="example">
+<pre class="example">regmodule first-dir
+</pre></div>
+
+<p>then regmodule will contain the files from first-dir:
+</p>
+<div class="example">
+<pre class="example">$ cvs co regmodule
+cvs checkout: Updating regmodule
+U regmodule/file1
+U regmodule/file2
+cvs checkout: Updating regmodule/sdir
+U regmodule/sdir/sfile
+$
+</pre></div>
+
+<p>By explicitly specifying files in the module definition
+after <var>dir</var>, you can select particular files from
+directory <var>dir</var>. Here is
+an example:
+</p>
+<div class="example">
+<pre class="example">regfiles first-dir/sdir sfile
+</pre></div>
+
+<p>With this definition, getting the regfiles module
+will create a single working directory
+<samp>regfiles</samp> containing the file listed, which
+comes from a directory deeper
+in the <small>CVS</small> source repository:
+</p>
+<div class="example">
+<pre class="example">$ cvs co regfiles
+U regfiles/sfile
+$
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Remote-repositories.html
===================================================================
RCS file: html_node/Remote-repositories.html
diff -N html_node/Remote-repositories.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Remote-repositories.html 28 Dec 2015 15:58:04 -0000 1.1
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Remote
repositories</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Remote repositories">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Remote repositories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Server-requirements.html#Server-requirements" rel="next"
title="Server requirements">
+<link href="Moving-a-repository.html#Moving-a-repository" rel="prev"
title="Moving a repository">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Remote-repositories"></a>
+<div class="header">
+<p>
+Next: <a href="Read_002donly-access.html#Read_002donly-access" accesskey="n"
rel="next">Read-only access</a>, Previous: <a
href="Moving-a-repository.html#Moving-a-repository" accesskey="p"
rel="prev">Moving a repository</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Remote-repositories-1"></a>
+<h3 class="section">2.9 Remote repositories</h3>
+<a name="index-Repositories_002c-remote"></a>
+<a name="index-Remote-repositories"></a>
+<a name="index-Client_002fServer-Operation"></a>
+<a name="index-Server_002c-CVS"></a>
+<a name="index-Remote-repositories_002c-port-specification"></a>
+<a name="index-Repositories_002c-remote_002c-port-specification"></a>
+<a name="index-Client_002fServer-Operation_002c-port-specification"></a>
+<a
name="index-pserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a
name="index-kserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a
name="index-gserver-_0028client_002fserver-connection-method_0029_002c-port-specification"></a>
+<a name="index-port_002c-specifying-for-remote-repositories"></a>
+
+<p>Your working copy of the sources can be on a
+different machine than the repository. Using <small>CVS</small>
+in this manner is known as <em>client/server</em>
+operation. You run <small>CVS</small> on a machine which can
+mount your working directory, known as the
+<em>client</em>, and tell it to communicate to a machine
+which can mount the repository, known as the
+<em>server</em>. Generally, using a remote
+repository is just like using a local one, except that
+the format of the repository name is:
+</p>
+<div class="example">
+<pre
class="example">[:<var>method</var>:][[<var>user</var>][:<var>password</var>address@hidden<var>hostname</var>[:[<var>port</var>]]/path/to/repository
+</pre></div>
+
+<p>Specifying a password in the repository name is not recommended during
+checkout, since this will cause <small>CVS</small> to store a cleartext copy
of the
+password in each created directory. <code>cvs login</code> first instead
+(see <a
href="Password-authentication-client.html#Password-authentication-client">Password
authentication client</a>).
+</p>
+<p>The details of exactly what needs to be set up depend
+on how you are connecting to the server.
+</p>
+<p>If <var>method</var> is not specified, and the repository
+name contains ‘<samp>:</samp>’, then the default is
<code>ext</code>
+or <code>server</code>, depending on your platform; both are
+described in <a href="Connecting-via-rsh.html#Connecting-via-rsh">Connecting
via rsh</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Server-requirements.html#Server-requirements" accesskey="1">Server
requirements</a>:</td><td> </td><td align="left" valign="top">Memory
and other resources for servers
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Connecting-via-rsh.html#Connecting-via-rsh" accesskey="2">Connecting via
rsh</a>:</td><td> </td><td align="left" valign="top">Using the
<code>rsh</code> program to connect
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Password-authenticated.html#Password-authenticated"
accesskey="3">Password authenticated</a>:</td><td> </td><td
align="left" valign="top">Direct connections using passwords
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="GSSAPI-authenticated.html#GSSAPI-authenticated" accesskey="4">GSSAPI
authenticated</a>:</td><td> </td><td align="left"
valign="top">Direct connections using GSSAPI
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Kerberos-authenticated.html#Kerberos-authenticated"
accesskey="5">Kerberos authenticated</a>:</td><td> </td><td
align="left" valign="top">Direct connections with Kerberos
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Connecting-via-fork.html#Connecting-via-fork" accesskey="6">Connecting
via fork</a>:</td><td> </td><td align="left" valign="top">Using a
forked <code>cvs server</code> to connect
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Read_002donly-access.html#Read_002donly-access" accesskey="n"
rel="next">Read-only access</a>, Previous: <a
href="Moving-a-repository.html#Moving-a-repository" accesskey="p"
rel="prev">Moving a repository</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Removing-directories.html
===================================================================
RCS file: html_node/Removing-directories.html
diff -N html_node/Removing-directories.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Removing-directories.html 28 Dec 2015 15:58:04 -0000 1.1
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Removing
directories</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Removing directories">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Removing directories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="up"
title="Adding and removing">
+<link href="Moving-files.html#Moving-files" rel="next" title="Moving files">
+<link href="Removing-files.html#Removing-files" rel="prev" title="Removing
files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Removing-directories"></a>
+<div class="header">
+<p>
+Next: <a href="Moving-files.html#Moving-files" accesskey="n" rel="next">Moving
files</a>, Previous: <a href="Removing-files.html#Removing-files" accesskey="p"
rel="prev">Removing files</a>, Up: <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="u"
rel="up">Adding and removing</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Removing-directories-1"></a>
+<h3 class="section">7.3 Removing directories</h3>
+<a name="index-Removing-directories"></a>
+<a name="index-Directories_002c-removing"></a>
+
+<p>In concept, removing directories is somewhat similar to
+removing files—you want the directory to not exist in
+your current working directories, but you also want to
+be able to retrieve old releases in which the directory
+existed.
+</p>
+<p>The way that you remove a directory is to remove all
+the files in it. You don’t remove the directory
+itself; there is no way to do that.
+Instead you specify the ‘<samp>-P</samp>’ option to
+<code>cvs update</code> or <code>cvs checkout</code>,
+which will cause <small>CVS</small> to remove empty
+directories from working directories.
+(Note that <code>cvs export</code> always removes empty directories.)
+Probably the
+best way to do this is to always specify ‘<samp>-P</samp>’; if
+you want an empty directory then put a dummy file (for
+example <samp>.keepme</samp>) in it to prevent ‘<samp>-P</samp>’
from
+removing it.
+</p>
+<p>Note that ‘<samp>-P</samp>’ is implied by the
‘<samp>-r</samp>’ or ‘<samp>-D</samp>’
+options of <code>checkout</code>. This way,
+<small>CVS</small> will be able to correctly create the directory
+or not depending on whether the particular version you
+are checking out contains any files in that directory.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Removing-files.html
===================================================================
RCS file: html_node/Removing-files.html
diff -N html_node/Removing-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Removing-files.html 28 Dec 2015 15:58:04 -0000 1.1
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Removing files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Removing files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Removing files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Adding-and-removing.html#Adding-and-removing" rel="up"
title="Adding and removing">
+<link href="Removing-directories.html#Removing-directories" rel="next"
title="Removing directories">
+<link href="Adding-files.html#Adding-files" rel="prev" title="Adding files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Removing-files"></a>
+<div class="header">
+<p>
+Next: <a href="Removing-directories.html#Removing-directories" accesskey="n"
rel="next">Removing directories</a>, Previous: <a
href="Adding-files.html#Adding-files" accesskey="p" rel="prev">Adding
files</a>, Up: <a href="Adding-and-removing.html#Adding-and-removing"
accesskey="u" rel="up">Adding and removing</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Removing-files-1"></a>
+<h3 class="section">7.2 Removing files</h3>
+<a name="index-Removing-files"></a>
+<a name="index-Deleting-files"></a>
+
+<p>Directories change. New files are added, and old files
+disappear. Still, you want to be able to retrieve an
+exact copy of old releases.
+</p>
+<p>Here is what you can do to remove a file,
+but remain able to retrieve old revisions:
+</p>
+<ul>
+<li> Make sure that you have not made any uncommitted
+modifications to the file. See <a
href="Viewing-differences.html#Viewing-differences">Viewing differences</a>,
+for one way to do that. You can also use the
+<code>status</code> or <code>update</code> command. If you remove
+the file without committing your changes, you will of
+course not be able to retrieve the file as it was
+immediately before you deleted it.
+
+</li><li> Remove the file from your working copy of the directory.
+You can for instance use <code>rm</code>.
+
+</li><li> Use ‘<samp>cvs remove <var>filename</var></samp>’ to
tell <small>CVS</small> that
+you really want to delete the file.
+
+</li><li> Use ‘<samp>cvs commit <var>filename</var></samp>’ to
actually
+perform the removal of the file from the repository.
+</li></ul>
+
+<p>When you commit the removal of the file, <small>CVS</small>
+records the fact that the file no longer exists. It is
+possible for a file to exist on only some branches and
+not on others, or to re-add another file with the same
+name later. <small>CVS</small> will correctly create or not create
+the file, based on the ‘<samp>-r</samp>’ and
‘<samp>-D</samp>’ options
+specified to <code>checkout</code> or <code>update</code>.
+</p>
+<a name="index-Remove-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-remove"></a>Command: <strong>cvs remove</strong>
<em>[options] files …</em></dt>
+<dd>
+<p>Schedule file(s) to be removed from the repository
+(files which have not already been removed from the
+working directory are not processed). This command
+does not actually remove the file from the repository
+until you commit the removal. For a full list of
+options, see <a href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>.
+</p></dd></dl>
+
+<p>Here is an example of removing several files:
+</p>
+<div class="example">
+<pre class="example">$ cd test
+$ rm *.c
+$ cvs remove
+cvs remove: Removing .
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+</pre></div>
+
+<p>As a convenience you can remove the file and <code>cvs
+remove</code> it in one step, by specifying the ‘<samp>-f</samp>’
+option. For example, the above example could also be
+done like this:
+</p>
+<div class="example">
+<pre class="example">$ cd test
+$ cvs remove -f *.c
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+</pre></div>
+
+<p>If you execute <code>remove</code> for a file, and then
+change your mind before you commit, you can undo the
+<code>remove</code> with an <code>add</code> command.
+</p>
+
+<div class="example">
+<pre class="example">$ ls
+CVS ja.h oj.c
+$ rm oj.c
+$ cvs remove oj.c
+cvs remove: scheduling oj.c for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+$ cvs add oj.c
+U oj.c
+cvs add: oj.c, version 1.1.1.1, resurrected
+</pre></div>
+
+<p>If you realize your mistake before you run the
+<code>remove</code> command you can use <code>update</code> to
+resurrect the file:
+</p>
+<div class="example">
+<pre class="example">$ rm oj.c
+$ cvs update oj.c
+cvs update: warning: oj.c was lost
+U oj.c
+</pre></div>
+
+<p>When you remove a file it is removed only on the branch
+which you are working on (see <a
href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>). You can
+later merge the removals to another branch if you want
+(see <a
href="Merging-adds-and-removals.html#Merging-adds-and-removals">Merging adds
and removals</a>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Removing-directories.html#Removing-directories" accesskey="n"
rel="next">Removing directories</a>, Previous: <a
href="Adding-files.html#Adding-files" accesskey="p" rel="prev">Adding
files</a>, Up: <a href="Adding-and-removing.html#Adding-and-removing"
accesskey="u" rel="up">Adding and removing</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Rename-by-copying.html
===================================================================
RCS file: html_node/Rename-by-copying.html
diff -N html_node/Rename-by-copying.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Rename-by-copying.html 28 Dec 2015 15:58:04 -0000 1.1
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Rename by copying</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Rename by copying">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Rename by copying">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Moving-files.html#Moving-files" rel="up" title="Moving files">
+<link href="Moving-directories.html#Moving-directories" rel="next"
title="Moving directories">
+<link href="Inside.html#Inside" rel="prev" title="Inside">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Rename-by-copying"></a>
+<div class="header">
+<p>
+Previous: <a href="Inside.html#Inside" accesskey="p" rel="prev">Inside</a>,
Up: <a href="Moving-files.html#Moving-files" accesskey="u" rel="up">Moving
files</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Copying-the-history-file"></a>
+<h4 class="subsection">7.4.3 Copying the history file</h4>
+
+<p>This way also involves direct modifications to the
+repository. It is safe, but not without drawbacks.
+</p>
+<div class="example">
+<pre class="example"># <span class="roman">Copy the RCS file inside the
repository</span>
+$ cd $CVSROOT/<var>dir</var>
+$ cp <var>old</var>,v <var>new</var>,v
+# <span class="roman">Remove the old file</span>
+$ cd ~/<var>dir</var>
+$ rm <var>old</var>
+$ cvs remove <var>old</var>
+$ cvs commit <var>old</var>
+# <span class="roman">Remove all tags from <var>new</var></span>
+$ cvs update <var>new</var>
+$ cvs log <var>new</var> # <span class="roman">Remember the
non-branch tag names</span>
+$ cvs tag -d <var>tag1</var> <var>new</var>
+$ cvs tag -d <var>tag2</var> <var>new</var>
+…
+</pre></div>
+
+<p>By removing the tags you will be able to check out old
+revisions.
+</p>
+<p>Advantages:
+</p>
+<ul>
+<li> Checking out old revisions works correctly, as long as
+you use ‘<samp>-r<var>tag</var></samp>’ and not
‘<samp>-D<var>date</var></samp>’
+to retrieve the revisions.
+
+</li><li> The log of changes is maintained intact.
+
+</li><li> The revision numbers are not affected.
+</li></ul>
+
+<p>Disadvantages:
+</p>
+<ul>
+<li> You cannot easily see the history of the file across the rename.
+
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: html_node/Repository-files.html
===================================================================
RCS file: html_node/Repository-files.html
diff -N html_node/Repository-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Repository-files.html 28 Dec 2015 15:58:05 -0000 1.1
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Repository files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Repository files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Repository files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="File-permissions.html#File-permissions" rel="next" title="File
permissions">
+<link href="Repository-storage.html#Repository-storage" rel="prev"
title="Repository storage">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Repository-files"></a>
+<div class="header">
+<p>
+Next: <a href="File-permissions.html#File-permissions" accesskey="n"
rel="next">File permissions</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Where-files-are-stored-within-the-repository"></a>
+<h4 class="subsection">2.2.1 Where files are stored within the repository</h4>
+
+
+<p>The overall structure of the repository is a directory
+tree corresponding to the directories in the working
+directory. For example, supposing the repository is in
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot
+</pre></div>
+
+<p>here is a possible directory tree (showing only the
+directories):
+</p>
+<div class="example">
+<pre class="example"><tt>/usr</tt>
+ |
+ +--<tt>local</tt>
+ | |
+ | +--<tt>cvsroot</tt>
+ | | |
+ | | +--<tt>CVSROOT</tt>
+ | (administrative files)
+ |
+ +--<tt>gnu</tt>
+ | |
+ | +--<tt>diff</tt>
+ | | (source code to GNU diff)
+ | |
+ | +--<tt>rcs</tt>
+ | | (source code to RCS)
+ | |
+ | +--<tt>cvs</tt>
+ | (source code to CVS)
+ |
+ +--<tt>yoyodyne</tt>
+ |
+ +--<tt>tc</tt>
+ | |
+ | +--<tt>man</tt>
+ | |
+ | +--<tt>testing</tt>
+ |
+ +--(other Yoyodyne software)
+</pre></div>
+
+<p>With the directories are <em>history files</em> for each file
+under version control. The name of the history file is
+the name of the corresponding file with ‘<samp>,v</samp>’
+appended to the end. Here is what the repository for
+the <samp>yoyodyne/tc</samp> directory might look like:
+</p><div class="example">
+<pre class="example"> <code>$CVSROOT</code>
+ |
+ +--<tt>yoyodyne</tt>
+ | |
+ | +--<tt>tc</tt>
+ | | |
+ +--<tt>Makefile,v</tt>
+ +--<tt>backend.c,v</tt>
+ +--<tt>driver.c,v</tt>
+ +--<tt>frontend.c,v</tt>
+ +--<tt>parser.c,v</tt>
+ +--<tt>man</tt>
+ | |
+ | +--<tt>tc.1,v</tt>
+ |
+ +--<tt>testing</tt>
+ |
+ +--<tt>testpgm.t,v</tt>
+ +--<tt>test2.t,v</tt>
+</pre></div>
+
+<a name="index-History-files"></a>
+<a name="index-RCS-history-files"></a>
+<p>The history files contain, among other things, enough
+information to recreate any revision of the file, a log
+of all commit messages and the user-name of the person
+who committed the revision. The history files are
+known as <em>RCS files</em>, because the first program to
+store files in that format was a version control system
+known as <small>RCS</small>. For a full
+description of the file format, see the <code>man</code> page
+<cite>rcsfile(5)</cite>, distributed with <small>RCS</small>, or the
+file <samp>doc/RCSFILES</samp> in the <small>CVS</small> source
+distribution. This
+file format has become very common—many systems other
+than <small>CVS</small> or <small>RCS</small> can at least import history
+files in this format.
+</p>
+<p>The <small>RCS</small> files used in <small>CVS</small> differ in a few
+ways from the standard format. The biggest difference
+is magic branches; for more information see <a
href="Magic-branch-numbers.html#Magic-branch-numbers">Magic branch numbers</a>.
Also in <small>CVS</small> the valid tag names
+are a subset of what <small>RCS</small> accepts; for <small>CVS</small>’s
+rules see <a href="Tags.html#Tags">Tags</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="File-permissions.html#File-permissions" accesskey="n"
rel="next">File permissions</a>, Up: <a
href="Repository-storage.html#Repository-storage" accesskey="u"
rel="up">Repository storage</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Repository-storage.html
===================================================================
RCS file: html_node/Repository-storage.html
diff -N html_node/Repository-storage.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Repository-storage.html 28 Dec 2015 15:58:05 -0000 1.1
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Repository
storage</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Repository storage">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Repository storage">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Repository-files.html#Repository-files" rel="next"
title="Repository files">
+<link href="Specifying-a-repository.html#Specifying-a-repository" rel="prev"
title="Specifying a repository">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Repository-storage"></a>
+<div class="header">
+<p>
+Next: <a href="Working-directory-storage.html#Working-directory-storage"
accesskey="n" rel="next">Working directory storage</a>, Previous: <a
href="Specifying-a-repository.html#Specifying-a-repository" accesskey="p"
rel="prev">Specifying a repository</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-data-is-stored-in-the-repository"></a>
+<h3 class="section">2.2 How data is stored in the repository</h3>
+<a name="index-Repository_002c-how-data-is-stored"></a>
+
+<p>For most purposes it isn’t important <em>how</em>
+<small>CVS</small> stores information in the repository. In
+fact, the format has changed in the past, and is likely
+to change in the future. Since in almost all cases one
+accesses the repository via <small>CVS</small> commands, such
+changes need not be disruptive.
+</p>
+<p>However, in some cases it may be necessary to
+understand how <small>CVS</small> stores data in the repository,
+for example you might need to track down <small>CVS</small> locks
+(see <a href="Concurrency.html#Concurrency">Concurrency</a>) or you might need
to deal with
+the file permissions appropriate for the repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Repository-files.html#Repository-files" accesskey="1">Repository
files</a>:</td><td> </td><td align="left" valign="top">What files
are stored in the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="File-permissions.html#File-permissions" accesskey="2">File
permissions</a>:</td><td> </td><td align="left" valign="top">File
permissions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Windows-permissions.html#Windows-permissions" accesskey="3">Windows
permissions</a>:</td><td> </td><td align="left" valign="top">Issues
specific to Windows
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Attic.html#Attic"
accesskey="4">Attic</a>:</td><td> </td><td align="left"
valign="top">Some files are stored in the Attic
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="CVS-in-repository.html#CVS-in-repository" accesskey="5">CVS in
repository</a>:</td><td> </td><td align="left"
valign="top">Additional information in CVS directory
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Locks.html#Locks"
accesskey="6">Locks</a>:</td><td> </td><td align="left"
valign="top">CVS locks control concurrent accesses
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="CVSROOT-storage.html#CVSROOT-storage" accesskey="7">CVSROOT
storage</a>:</td><td> </td><td align="left" valign="top">A few
things about CVSROOT are different
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Repository.html
===================================================================
RCS file: html_node/Repository.html
diff -N html_node/Repository.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Repository.html 28 Dec 2015 15:58:05 -0000 1.1
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Repository</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Repository">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Repository">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Specifying-a-repository.html#Specifying-a-repository" rel="next"
title="Specifying a repository">
+<link href="Viewing-differences.html#Viewing-differences" rel="prev"
title="Viewing differences">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Repository"></a>
+<div class="header">
+<p>
+Next: <a href="Starting-a-new-project.html#Starting-a-new-project"
accesskey="n" rel="next">Starting a new project</a>, Previous: <a
href="Overview.html#Overview" accesskey="p" rel="prev">Overview</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Repository"></a>
+<h2 class="chapter">2 The Repository</h2>
+<a name="index-Repository-_0028intro_0029"></a>
+<a name="index-Repository_002c-example"></a>
+<a name="index-Layout-of-repository"></a>
+<a name="index-Typical-repository"></a>
+<a name="index-_002fusr_002flocal_002fcvsroot_002c-as-example-repository"></a>
+<a name="index-cvsroot"></a>
+
+<p>The <small>CVS</small> <em>repository</em> stores a complete copy of
+all the files and directories which are under version
+control.
+</p>
+<p>Normally, you never access any of the files in the
+repository directly. Instead, you use <small>CVS</small>
+commands to get your own copy of the files into a
+<em>working directory</em>, and then
+work on that copy. When you’ve finished a set of
+changes, you check (or <em>commit</em>) them back into the
+repository. The repository then contains the changes
+which you have made, as well as recording exactly what
+you changed, when you changed it, and other such
+information. Note that the repository is not a
+subdirectory of the working directory, or vice versa;
+they should be in separate locations.
+</p>
+<a name="index-_003alocal_003a_002c-setting-up"></a>
+<p><small>CVS</small> can access a repository by a variety of
+means. It might be on the local computer, or it might
+be on a computer across the room or across the world.
+To distinguish various ways to access a repository, the
+repository name can start with an <em>access method</em>.
+For example, the access method <code>:local:</code> means to
+access a repository directory, so the repository
+<code>:local:/usr/local/cvsroot</code> means that the
+repository is in <samp>/usr/local/cvsroot</samp> on the
+computer running <small>CVS</small>. For information on other
+access methods, see <a
href="Remote-repositories.html#Remote-repositories">Remote repositories</a>.
+</p>
+<p>If the access method is omitted, then if the repository
+starts with ‘<samp>/</samp>’, then <code>:local:</code> is
+assumed. If it does not start with ‘<samp>/</samp>’ then either
+<code>:ext:</code> or <code>:server:</code> is assumed. For
+example, if you have a local repository in
+<samp>/usr/local/cvsroot</samp>, you can use
+<code>/usr/local/cvsroot</code> instead of
+<code>:local:/usr/local/cvsroot</code>. But if (under
+Windows NT, for example) your local repository is
+<samp>c:\src\cvsroot</samp>, then you must specify the access
+method, as in <code>:local:c:/src/cvsroot</code>.
+</p>
+<p>The repository is split in two parts. <samp>$CVSROOT/CVSROOT</samp>
contains
+administrative files for <small>CVS</small>. The other directories contain
the actual
+user-defined modules.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Specifying-a-repository.html#Specifying-a-repository"
accesskey="1">Specifying a repository</a>:</td><td> </td><td
align="left" valign="top">Telling CVS where your repository is
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Repository-storage.html#Repository-storage" accesskey="2">Repository
storage</a>:</td><td> </td><td align="left" valign="top">The
structure of the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Working-directory-storage.html#Working-directory-storage"
accesskey="3">Working directory storage</a>:</td><td> </td><td
align="left" valign="top">The structure of working directories
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Intro-administrative-files.html#Intro-administrative-files"
accesskey="4">Intro administrative files</a>:</td><td> </td><td
align="left" valign="top">Defining modules
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Multiple-repositories.html#Multiple-repositories" accesskey="5">Multiple
repositories</a>:</td><td> </td><td align="left"
valign="top">Multiple repositories
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Creating-a-repository.html#Creating-a-repository" accesskey="6">Creating
a repository</a>:</td><td> </td><td align="left"
valign="top">Creating a repository
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Backing-up.html#Backing-up"
accesskey="7">Backing up</a>:</td><td> </td><td align="left"
valign="top">Backing up a repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Moving-a-repository.html#Moving-a-repository" accesskey="8">Moving a
repository</a>:</td><td> </td><td align="left" valign="top">Moving a
repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Remote-repositories.html#Remote-repositories" accesskey="9">Remote
repositories</a>:</td><td> </td><td align="left"
valign="top">Accessing repositories on remote machines
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Read_002donly-access.html#Read_002donly-access">Read-only
access</a>:</td><td> </td><td align="left" valign="top">Granting
read-only access to the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Server-temporary-directory.html#Server-temporary-directory">Server
temporary directory</a>:</td><td> </td><td align="left"
valign="top">The server creates temporary directories
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Starting-a-new-project.html#Starting-a-new-project"
accesskey="n" rel="next">Starting a new project</a>, Previous: <a
href="Overview.html#Overview" accesskey="p" rel="prev">Overview</a>, Up: <a
href="index.html#Top" accesskey="u" rel="up">Top</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Reverting-local-changes.html
===================================================================
RCS file: html_node/Reverting-local-changes.html
diff -N html_node/Reverting-local-changes.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Reverting-local-changes.html 28 Dec 2015 15:58:05 -0000
1.1
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Reverting local
changes</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Reverting local changes">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Reverting local changes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Binary-files-in-imports.html#Binary-files-in-imports" rel="next"
title="Binary files in imports">
+<link href="Update-imports.html#Update-imports" rel="prev" title="Update
imports">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Reverting-local-changes"></a>
+<div class="header">
+<p>
+Next: <a href="Binary-files-in-imports.html#Binary-files-in-imports"
accesskey="n" rel="next">Binary files in imports</a>, Previous: <a
href="Update-imports.html#Update-imports" accesskey="p" rel="prev">Update
imports</a>, Up: <a href="Tracking-sources.html#Tracking-sources" accesskey="u"
rel="up">Tracking sources</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Reverting-to-the-latest-vendor-release"></a>
+<h3 class="section">13.3 Reverting to the latest vendor release</h3>
+
+<p>You can also revert local changes completely and return
+to the latest vendor release by changing the ‘head’
+revision back to the vendor branch on all files. For
+example, if you have a checked-out copy of the sources
+in <samp>~/work.d/wdiff</samp>, and you want to revert to the
+vendor’s version for all the files in that directory,
+you would type:
+</p>
+<div class="example">
+<pre class="example">$ cd ~/work.d/wdiff
+$ cvs admin -bFSF_DIST .
+</pre></div>
+
+<p>You must specify the ‘<samp>-bFSF_DIST</samp>’ without any space
+after the ‘<samp>-b</samp>’. See <a
href="admin-options.html#admin-options">admin options</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Revision-management.html
===================================================================
RCS file: html_node/Revision-management.html
diff -N html_node/Revision-management.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Revision-management.html 28 Dec 2015 15:58:06 -0000 1.1
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Revision
management</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Revision management">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Revision management">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="When-to-commit.html#When-to-commit" rel="next" title="When to
commit">
+<link href="Choosing-a-model.html#Choosing-a-model" rel="prev" title="Choosing
a model">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Revision-management"></a>
+<div class="header">
+<p>
+Next: <a href="Keyword-substitution.html#Keyword-substitution" accesskey="n"
rel="next">Keyword substitution</a>, Previous: <a
href="Multiple-developers.html#Multiple-developers" accesskey="p"
rel="prev">Multiple developers</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Revision-management-1"></a>
+<h2 class="chapter">11 Revision management</h2>
+<a name="index-Revision-management"></a>
+
+
+<p>If you have read this far, you probably have a pretty
+good grasp on what <small>CVS</small> can do for you. This
+chapter talks a little about things that you still have
+to decide.
+</p>
+<p>If you are doing development on your own using <small>CVS</small>
+you could probably skip this chapter. The questions
+this chapter takes up become more important when more
+than one person is working in a repository.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="When-to-commit.html#When-to-commit" accesskey="1">When to
commit</a>:</td><td> </td><td align="left" valign="top">Some
discussion on the subject
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Revision-numbers.html
===================================================================
RCS file: html_node/Revision-numbers.html
diff -N html_node/Revision-numbers.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Revision-numbers.html 28 Dec 2015 15:58:06 -0000 1.1
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Revision numbers</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Revision numbers">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Revision numbers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Versions-revisions-releases.html#Versions-revisions-releases"
rel="next" title="Versions revisions releases">
+<link href="Revisions.html#Revisions" rel="prev" title="Revisions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Revision-numbers"></a>
+<div class="header">
+<p>
+Next: <a href="Versions-revisions-releases.html#Versions-revisions-releases"
accesskey="n" rel="next">Versions revisions releases</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Revision-numbers-1"></a>
+<h3 class="section">4.1 Revision numbers</h3>
+<a name="index-Revision-numbers"></a>
+<a name="index-Revision-tree"></a>
+<a name="index-Linear-development"></a>
+<a name="index-Number_002c-revision_002d"></a>
+<a name="index-Decimal-revision-number"></a>
+<a name="index-Branch-number"></a>
+<a name="index-Number_002c-branch"></a>
+
+<p>Each version of a file has a unique <em>revision
+number</em>. Revision numbers look like ‘<samp>1.1</samp>’,
+‘<samp>1.2</samp>’, ‘<samp>1.3.2.2</samp>’ or even
‘<samp>1.3.2.2.4.5</samp>’.
+A revision number always has an even number of
+period-separated decimal integers. By default revision
+1.1 is the first revision of a file. Each successive
+revision is given a new number by increasing the
+rightmost number by one. The following figure displays
+a few revisions, with newer revisions to the right.
+</p>
+<div class="example">
+<pre class="example"> +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+</pre></div>
+
+<p>It is also possible to end up with numbers containing
+more than one period, for example ‘<samp>1.3.2.2</samp>’. Such
+revisions represent revisions on branches
+(see <a href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>); such revision numbers
+are explained in detail in <a
href="Branches-and-revisions.html#Branches-and-revisions">Branches and
revisions</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Revisions.html
===================================================================
RCS file: html_node/Revisions.html
diff -N html_node/Revisions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Revisions.html 28 Dec 2015 15:58:06 -0000 1.1
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Revisions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Revisions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Revisions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Revision-numbers.html#Revision-numbers" rel="next" title="Revision
numbers">
+<link href="Defining-the-module.html#Defining-the-module" rel="prev"
title="Defining the module">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Revisions"></a>
+<div class="header">
+<p>
+Next: <a href="Branching-and-merging.html#Branching-and-merging" accesskey="n"
rel="next">Branching and merging</a>, Previous: <a
href="Starting-a-new-project.html#Starting-a-new-project" accesskey="p"
rel="prev">Starting a new project</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Revisions-1"></a>
+<h2 class="chapter">4 Revisions</h2>
+
+<p>For many uses of <small>CVS</small>, one doesn’t need to worry
+too much about revision numbers; <small>CVS</small> assigns
+numbers such as <code>1.1</code>, <code>1.2</code>, and so on, and
+that is all one needs to know. However, some people
+prefer to have more knowledge and control concerning
+how <small>CVS</small> assigns revision numbers.
+</p>
+<p>If one wants to keep track of a set of revisions
+involving more than one file, such as which revisions
+went into a particular release, one uses a <em>tag</em>,
+which is a symbolic revision which can be assigned to a
+numeric revision in each file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Revision-numbers.html#Revision-numbers" accesskey="1">Revision
numbers</a>:</td><td> </td><td align="left" valign="top">The meaning
of a revision number
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Versions-revisions-releases.html#Versions-revisions-releases"
accesskey="2">Versions revisions releases</a>:</td><td> </td><td
align="left" valign="top">Terminology used in this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Assigning-revisions.html#Assigning-revisions" accesskey="3">Assigning
revisions</a>:</td><td> </td><td align="left" valign="top">Assigning
revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Tags.html#Tags"
accesskey="4">Tags</a>:</td><td> </td><td align="left"
valign="top">Tags–Symbolic revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Tagging-the-working-directory.html#Tagging-the-working-directory"
accesskey="5">Tagging the working directory</a>:</td><td> </td><td
align="left" valign="top">The cvs tag command
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag"
accesskey="6">Tagging by date/tag</a>:</td><td> </td><td
align="left" valign="top">The cvs rtag command
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Modifying-tags.html#Modifying-tags" accesskey="7">Modifying
tags</a>:</td><td> </td><td align="left" valign="top">Adding,
renaming, and deleting tags
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Tagging-add_002fremove.html#Tagging-add_002fremove" accesskey="8">Tagging
add/remove</a>:</td><td> </td><td align="left" valign="top">Tags
with adding and removing files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Sticky-tags.html#Sticky-tags" accesskey="9">Sticky
tags</a>:</td><td> </td><td align="left" valign="top">Certain tags
are persistent
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Server-requirements.html
===================================================================
RCS file: html_node/Server-requirements.html
diff -N html_node/Server-requirements.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Server-requirements.html 28 Dec 2015 15:58:06 -0000 1.1
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Server
requirements</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Server requirements">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Server requirements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Remote-repositories.html#Remote-repositories" rel="up"
title="Remote repositories">
+<link href="Connecting-via-rsh.html#Connecting-via-rsh" rel="next"
title="Connecting via rsh">
+<link href="Remote-repositories.html#Remote-repositories" rel="prev"
title="Remote repositories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Server-requirements"></a>
+<div class="header">
+<p>
+Next: <a href="Connecting-via-rsh.html#Connecting-via-rsh" accesskey="n"
rel="next">Connecting via rsh</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Server-requirements-1"></a>
+<h4 class="subsection">2.9.1 Server requirements</h4>
+
+<p>The quick answer to what sort of machine is suitable as
+a server is that requirements are modest—a server
+with 32M of memory or even less can handle a fairly
+large source tree with a fair amount of activity.
+</p>
+<p>The real answer, of course, is more complicated.
+Estimating the known areas of large memory consumption
+should be sufficient to estimate memory requirements.
+There are two such areas documented here; other memory
+consumption should be small by comparison (if you find
+that is not the case, let us know, as described in
+<a href="BUGS.html#BUGS">BUGS</a>, so we can update this documentation).
+</p>
+<p>The first area of big memory consumption is large
+checkouts, when using the <small>CVS</small> server. The server
+consists of two processes for each client that it is
+serving. Memory consumption on the child process
+should remain fairly small. Memory consumption on the
+parent process, particularly if the network connection
+to the client is slow, can be expected to grow to
+slightly more than the size of the sources in a single
+directory, or two megabytes, whichever is larger.
+</p>
+<p>Multiplying the size of each <small>CVS</small> server by the
+number of servers which you expect to have active at
+one time should give an idea of memory requirements for
+the server. For the most part, the memory consumed by
+the parent process probably can be swap space rather
+than physical memory.
+</p>
+
+<p>The second area of large memory consumption is
+<code>diff</code>, when checking in large files. This is
+required even for binary files. The rule of thumb is
+to allow about ten times the size of the largest file
+you will want to check in, although five times may be
+adequate. For example, if you want to check in a file
+which is 10 megabytes, you should have 100 megabytes of
+memory on the machine doing the checkin (the server
+machine for client/server, or the machine running
+<small>CVS</small> for non-client/server). This can be swap
+space rather than physical memory. Because the memory
+is only required briefly, there is no particular need
+to allow memory for more than one such checkin at a
+time.
+</p>
+<p>Resource consumption for the client is even more
+modest—any machine with enough capacity to run the
+operating system in question should have little
+trouble.
+</p>
+<p>For information on disk space requirements, see
+<a href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Connecting-via-rsh.html#Connecting-via-rsh" accesskey="n"
rel="next">Connecting via rsh</a>, Up: <a
href="Remote-repositories.html#Remote-repositories" accesskey="u"
rel="up">Remote repositories</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Server-temporary-directory.html
===================================================================
RCS file: html_node/Server-temporary-directory.html
diff -N html_node/Server-temporary-directory.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Server-temporary-directory.html 28 Dec 2015 15:58:06 -0000
1.1
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Server temporary
directory</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Server temporary directory">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Server temporary directory">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Starting-a-new-project.html#Starting-a-new-project" rel="next"
title="Starting a new project">
+<link href="Read_002donly-access.html#Read_002donly-access" rel="prev"
title="Read-only access">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Server-temporary-directory"></a>
+<div class="header">
+<p>
+Previous: <a href="Read_002donly-access.html#Read_002donly-access"
accesskey="p" rel="prev">Read-only access</a>, Up: <a
href="Repository.html#Repository" accesskey="u" rel="up">Repository</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Temporary-directories-for-the-server"></a>
+<h3 class="section">2.11 Temporary directories for the server</h3>
+<a name="index-Temporary-directories_002c-and-server"></a>
+<a name="index-Server_002c-temporary-directories"></a>
+
+<p>While running, the <small>CVS</small> server creates temporary
+directories. They are named
+</p>
+<div class="example">
+<pre class="example">cvs-serv<var>pid</var>
+</pre></div>
+
+<p>where <var>pid</var> is the process identification number of
+the server.
+They are located in the directory specified by
+the ‘<samp>-T</samp>’ global option (see <a
href="Global-options.html#Global-options">Global options</a>),
+the <code>TMPDIR</code> environment variable (see <a
href="Environment-variables.html#Environment-variables">Environment
variables</a>),
+or, failing that, <samp>/tmp</samp>.
+</p>
+<p>In most cases the server will remove the temporary
+directory when it is done, whether it finishes normally
+or abnormally. However, there are a few cases in which
+the server does not or cannot remove the temporary
+directory, for example:
+</p>
+<ul>
+<li> If the server aborts due to an internal server error,
+it may preserve the directory to aid in debugging
+
+</li><li> If the server is killed in a way that it has no way of
+cleaning up (most notably, ‘<samp>kill -KILL</samp>’ on unix).
+
+</li><li> If the system shuts down without an orderly shutdown,
+which tells the server to clean up.
+</li></ul>
+
+<p>In cases such as this, you will need to manually remove
+the <samp>cvs-serv<var>pid</var></samp> directories. As long as
+there is no server running with process identification
+number <var>pid</var>, it is safe to do so.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Setting-a-watch.html
===================================================================
RCS file: html_node/Setting-a-watch.html
diff -N html_node/Setting-a-watch.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Setting-a-watch.html 28 Dec 2015 15:58:07 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Setting a watch</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Setting a watch">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Setting a watch">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Watches.html#Watches" rel="up" title="Watches">
+<link href="Getting-Notified.html#Getting-Notified" rel="next" title="Getting
Notified">
+<link href="Watches.html#Watches" rel="prev" title="Watches">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Setting-a-watch"></a>
+<div class="header">
+<p>
+Next: <a href="Getting-Notified.html#Getting-Notified" accesskey="n"
rel="next">Getting Notified</a>, Up: <a href="Watches.html#Watches"
accesskey="u" rel="up">Watches</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Telling-CVS-to-watch-certain-files"></a>
+<h4 class="subsection">10.6.1 Telling CVS to watch certain files</h4>
+
+<p>To enable the watch features, you first specify that
+certain files are to be watched.
+</p>
+<a name="index-watch-on-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watch-on"></a>Command: <strong>cvs watch on</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<a name="index-Read_002donly-files_002c-and-watches"></a>
+<p>Specify that developers should run <code>cvs edit</code>
+before editing <var>files</var>. <small>CVS</small> will create working
+copies of <var>files</var> read-only, to remind developers
+to run the <code>cvs edit</code> command before working on
+them.
+</p>
+<p>If <var>files</var> includes the name of a directory, <small>CVS</small>
+arranges to watch all files added to the corresponding
+repository directory, and sets a default for files
+added in the future; this allows the user to set
+notification policies on a per-directory basis. The
+contents of the directory are processed recursively,
+unless the <code>-l</code> option is given.
+The <code>-R</code> option can be used to force recursion if the
<code>-l</code>
+option is set in <samp>~/.cvsrc</samp> (see <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<p>If <var>files</var> is omitted, it defaults to the current directory.
+</p>
+<a name="index-watch-off-_0028subcommand_0029"></a>
+</dd></dl>
+
+<dl>
+<dt><a name="index-cvs-watch-off"></a>Command: <strong>cvs watch off</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>Do not create <var>files</var> read-only on checkout; thus,
+developers will not be reminded to use <code>cvs edit</code>
+and <code>cvs unedit</code>.
+</p>
+<p>The <var>files</var> and options are processed as for <code>cvs
+watch on</code>.
+</p>
+</dd></dl>
+
+
+
+
+</body>
+</html>
Index: html_node/Setting-up-the-files.html
===================================================================
RCS file: html_node/Setting-up-the-files.html
diff -N html_node/Setting-up-the-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Setting-up-the-files.html 28 Dec 2015 15:58:07 -0000 1.1
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Setting up the
files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Setting up the files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Setting up the files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Starting-a-new-project.html#Starting-a-new-project" rel="up"
title="Starting a new project">
+<link href="From-files.html#From-files" rel="next" title="From files">
+<link href="Starting-a-new-project.html#Starting-a-new-project" rel="prev"
title="Starting a new project">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Setting-up-the-files"></a>
+<div class="header">
+<p>
+Next: <a href="Defining-the-module.html#Defining-the-module" accesskey="n"
rel="next">Defining the module</a>, Up: <a
href="Starting-a-new-project.html#Starting-a-new-project" accesskey="u"
rel="up">Starting a new project</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Setting-up-the-files-1"></a>
+<h3 class="section">3.1 Setting up the files</h3>
+
+<p>The first step is to create the files inside the repository. This can
+be done in a couple of different ways.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="From-files.html#From-files"
accesskey="1">From files</a>:</td><td> </td><td align="left"
valign="top">This method is useful with old projects
+ where files already exists.
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="From-other-version-control-systems.html#From-other-version-control-systems"
accesskey="2">From other version control
systems</a>:</td><td> </td><td align="left" valign="top">Old
projects where you want to
+ preserve history from another system.
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="From-scratch.html#From-scratch" accesskey="3">From
scratch</a>:</td><td> </td><td align="left" valign="top">Creating a
directory tree from scratch.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Special-Files.html
===================================================================
RCS file: html_node/Special-Files.html
diff -N html_node/Special-Files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Special-Files.html 28 Dec 2015 15:58:07 -0000 1.1
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Special Files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Special Files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Special Files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="CVS-commands.html#CVS-commands" rel="next" title="CVS commands">
+<link href="Builds.html#Builds" rel="prev" title="Builds">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Special-Files"></a>
+<div class="header">
+<p>
+Next: <a href="CVS-commands.html#CVS-commands" accesskey="n" rel="next">CVS
commands</a>, Previous: <a href="Builds.html#Builds" accesskey="p"
rel="prev">Builds</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Special-Files-1"></a>
+<h2 class="chapter">15 Special Files</h2>
+
+<a name="index-Special-files"></a>
+<a name="index-Device-nodes"></a>
+<a name="index-Ownership_002c-saving-in-CVS"></a>
+<a name="index-Permissions_002c-saving-in-CVS"></a>
+<a name="index-Hard-links"></a>
+<a name="index-Symbolic-links"></a>
+
+<p>In normal circumstances, <small>CVS</small> works only with regular
+files. Every file in a project is assumed to be
+persistent; it must be possible to open, read and close
+them; and so on. <small>CVS</small> also ignores file permissions and
+ownerships, leaving such issues to be resolved by the
+developer at installation time. In other words, it is
+not possible to "check in" a device into a repository;
+if the device file cannot be opened, <small>CVS</small> will refuse to
+handle it. Files also lose their ownerships and
+permissions during repository transactions.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/Specifying-a-repository.html
===================================================================
RCS file: html_node/Specifying-a-repository.html
diff -N html_node/Specifying-a-repository.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Specifying-a-repository.html 28 Dec 2015 15:58:07 -0000
1.1
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Specifying a
repository</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Specifying a repository">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Specifying a repository">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Repository-storage.html#Repository-storage" rel="next"
title="Repository storage">
+<link href="Repository.html#Repository" rel="prev" title="Repository">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Specifying-a-repository"></a>
+<div class="header">
+<p>
+Next: <a href="Repository-storage.html#Repository-storage" accesskey="n"
rel="next">Repository storage</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Telling-CVS-where-your-repository-is"></a>
+<h3 class="section">2.1 Telling CVS where your repository is</h3>
+
+<p>There are several ways to tell <small>CVS</small>
+where to find the repository. You can name the
+repository on the command line explicitly, with the
+<code>-d</code> (for "directory") option:
+</p>
+<div class="example">
+<pre class="example">cvs -d /usr/local/cvsroot checkout yoyodyne/tc
+</pre></div>
+
+<a name="index-_002eprofile_002c-setting-CVSROOT-in"></a>
+<a name="index-_002ecshrc_002c-setting-CVSROOT-in"></a>
+<a name="index-_002etcshrc_002c-setting-CVSROOT-in"></a>
+<a name="index-_002ebashrc_002c-setting-CVSROOT-in"></a>
+<a name="index-CVSROOT_002c-environment-variable"></a>
+<p>Or you can set the <code>$CVSROOT</code> environment
+variable to an absolute path to the root of the
+repository, <samp>/usr/local/cvsroot</samp> in this example.
+To set <code>$CVSROOT</code>, <code>csh</code> and <code>tcsh</code>
+users should have this line in their <samp>.cshrc</samp> or
+<samp>.tcshrc</samp> files:
+</p>
+<div class="example">
+<pre class="example">setenv CVSROOT /usr/local/cvsroot
+</pre></div>
+
+<p><code>sh</code> and <code>bash</code> users should instead have these lines
in their
+<samp>.profile</samp> or <samp>.bashrc</samp>:
+</p>
+<div class="example">
+<pre class="example">CVSROOT=/usr/local/cvsroot
+export CVSROOT
+</pre></div>
+
+<a name="index-Root-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fRoot-file"></a>
+<p>A repository specified with <code>-d</code> will
+override the <code>$CVSROOT</code> environment variable.
+Once you’ve checked a working copy out from the
+repository, it will remember where its repository is
+(the information is recorded in the
+<samp>CVS/Root</samp> file in the working copy).
+</p>
+<p>The <code>-d</code> option and the <samp>CVS/Root</samp> file both
+override the <code>$CVSROOT</code> environment variable. If
+<code>-d</code> option differs from <samp>CVS/Root</samp>, the
+former is used. Of course, for proper operation they
+should be two ways of referring to the same repository.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Starting-a-new-project.html
===================================================================
RCS file: html_node/Starting-a-new-project.html
diff -N html_node/Starting-a-new-project.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Starting-a-new-project.html 28 Dec 2015 15:58:07 -0000
1.1
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Starting a new
project</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Starting a new project">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Starting a new project">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Setting-up-the-files.html#Setting-up-the-files" rel="next"
title="Setting up the files">
+<link href="Server-temporary-directory.html#Server-temporary-directory"
rel="prev" title="Server temporary directory">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Starting-a-new-project"></a>
+<div class="header">
+<p>
+Next: <a href="Revisions.html#Revisions" accesskey="n"
rel="next">Revisions</a>, Previous: <a href="Repository.html#Repository"
accesskey="p" rel="prev">Repository</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Starting-a-project-with-CVS"></a>
+<h2 class="chapter">3 Starting a project with CVS</h2>
+<a name="index-Starting-a-project-with-CVS"></a>
+<a name="index-Creating-a-project"></a>
+
+<p>Because renaming files and moving them between
+directories is somewhat inconvenient, the first thing
+you do when you start a new project should be to think
+through your file organization. It is not impossible
+to rename or move files, but it does increase the
+potential for confusion and <small>CVS</small> does have some
+quirks particularly in the area of renaming
+directories. See <a href="Moving-files.html#Moving-files">Moving files</a>.
+</p>
+<p>What to do next depends on the situation at hand.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Setting-up-the-files.html#Setting-up-the-files" accesskey="1">Setting up
the files</a>:</td><td> </td><td align="left" valign="top">Getting
the files into the repository
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Defining-the-module.html#Defining-the-module" accesskey="2">Defining the
module</a>:</td><td> </td><td align="left" valign="top">How to make
a module of the files
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Sticky-tags.html
===================================================================
RCS file: html_node/Sticky-tags.html
diff -N html_node/Sticky-tags.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Sticky-tags.html 28 Dec 2015 15:58:08 -0000 1.1
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Sticky tags</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Sticky tags">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Sticky tags">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Branching-and-merging.html#Branching-and-merging" rel="next"
title="Branching and merging">
+<link href="Tagging-add_002fremove.html#Tagging-add_002fremove" rel="prev"
title="Tagging add/remove">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Sticky-tags"></a>
+<div class="header">
+<p>
+Previous: <a href="Tagging-add_002fremove.html#Tagging-add_002fremove"
accesskey="p" rel="prev">Tagging add/remove</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Sticky-tags-1"></a>
+<h3 class="section">4.9 Sticky tags</h3>
+<a name="index-Sticky-tags"></a>
+<a name="index-Tags_002c-sticky"></a>
+
+
+<p>Sometimes a working copy’s revision has extra data
+associated with it, for example it might be on a branch
+(see <a href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>), or restricted to
+versions prior to a certain date by ‘<samp>checkout -D</samp>’
+or ‘<samp>update -D</samp>’. Because this data persists –
+that is, it applies to subsequent commands in the
+working copy – we refer to it as <em>sticky</em>.
+</p>
+<p>Most of the time, stickiness is an obscure aspect of
+<small>CVS</small> that you don’t need to think about. However,
+even if you don’t want to use the feature, you may need
+to know <em>something</em> about sticky tags (for
+example, how to avoid them!).
+</p>
+<p>You can use the <code>status</code> command to see if any
+sticky tags or dates are set:
+</p>
+<div class="example">
+<pre class="example">$ cvs status driver.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7.2.1 Sat Dec 5 19:35:03 1992
+ RCS Version: 1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+</pre></div>
+
+<a name="index-Resetting-sticky-tags"></a>
+<a name="index-Sticky-tags_002c-resetting"></a>
+<a name="index-Deleting-sticky-tags"></a>
+<p>The sticky tags will remain on your working files until
+you delete them with ‘<samp>cvs update -A</samp>’. The
+‘<samp>-A</samp>’ option merges local changes into the version of
the
+file from the head of the trunk, removing any sticky tags,
+dates, or options (other than sticky ‘<samp>-k</samp>’ options on
locally
+modified files). See <a href="update.html#update">update</a> for more on the
operation
+of <code>cvs update</code>.
+</p>
+<a name="index-Sticky-date"></a>
+<p>The most common use of sticky tags is to identify which
+branch one is working on, as described in
+<a href="Accessing-branches.html#Accessing-branches">Accessing branches</a>.
However, non-branch
+sticky tags have uses as well. For example,
+suppose that you want to avoid updating your working
+directory, to isolate yourself from possibly
+destabilizing changes other people are making. You
+can, of course, just refrain from running <code>cvs
+update</code>. But if you want to avoid updating only a
+portion of a larger tree, then sticky tags can help.
+If you check out a certain revision (such as 1.4) it
+will become sticky. Subsequent <code>cvs update</code>
+commands will
+not retrieve the latest revision until you reset the
+tag with <code>cvs update -A</code>. Likewise, use of the
+‘<samp>-D</samp>’ option to <code>update</code> or
<code>checkout</code>
+sets a <em>sticky date</em>, which, similarly, causes that
+date to be used for future retrievals.
+</p>
+<p>People often want to retrieve an old version of
+a file without setting a sticky tag. This can
+be done with the ‘<samp>-p</samp>’ option to <code>checkout</code>
or
+<code>update</code>, which sends the contents of the file to
+standard output. For example:
+</p><div class="example">
+<pre class="example">$ cvs update -p -r 1.1 file1 >file1
+===================================================================
+Checking out file1
+RCS: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+VERS: 1.1
+***************
+$
+</pre></div>
+
+<p>However, this isn’t the easiest way, if you are asking
+how to undo a previous checkin (in this example, put
+<samp>file1</samp> back to the way it was as of revision
+1.1). In that case you are better off using the
+‘<samp>-j</samp>’ option to <code>update</code>; for further
+discussion see <a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Tagging-add_002fremove.html#Tagging-add_002fremove"
accesskey="p" rel="prev">Tagging add/remove</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Structure.html
===================================================================
RCS file: html_node/Structure.html
diff -N html_node/Structure.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Structure.html 28 Dec 2015 15:58:08 -0000 1.1
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Structure</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Structure">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Structure">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="Exit-status.html#Exit-status" rel="next" title="Exit status">
+<link href="CVS-commands.html#CVS-commands" rel="prev" title="CVS commands">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Structure"></a>
+<div class="header">
+<p>
+Next: <a href="Exit-status.html#Exit-status" accesskey="n" rel="next">Exit
status</a>, Up: <a href="CVS-commands.html#CVS-commands" accesskey="u"
rel="up">CVS commands</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Overall-structure-of-CVS-commands"></a>
+<h3 class="appendixsec">A.1 Overall structure of CVS commands</h3>
+<a name="index-Structure"></a>
+<a name="index-CVS-command-structure"></a>
+<a name="index-Command-structure"></a>
+<a name="index-Format-of-CVS-commands"></a>
+
+<p>The overall format of all <small>CVS</small> commands is:
+</p>
+<div class="example">
+<pre class="example">cvs [ cvs_options ] cvs_command [ command_options ] [
command_args ]
+</pre></div>
+
+<dl compact="compact">
+<dt><code>cvs</code></dt>
+<dd><p>The name of the <small>CVS</small> program.
+</p>
+</dd>
+<dt><code>cvs_options</code></dt>
+<dd><p>Some options that affect all sub-commands of <small>CVS</small>. These
are
+described below.
+</p>
+</dd>
+<dt><code>cvs_command</code></dt>
+<dd><p>One of several different sub-commands. Some of the commands have
+aliases that can be used instead; those aliases are noted in the
+reference manual for that command. There are only two situations
+where you may omit ‘<samp>cvs_command</samp>’: ‘<samp>cvs
-H</samp>’ elicits a
+list of available commands, and ‘<samp>cvs -v</samp>’ displays
version
+information on <small>CVS</small> itself.
+</p>
+</dd>
+<dt><code>command_options</code></dt>
+<dd><p>Options that are specific for the command.
+</p>
+</dd>
+<dt><code>command_args</code></dt>
+<dd><p>Arguments to the commands.
+</p></dd>
+</dl>
+
+<p>There is unfortunately some confusion between
+<code>cvs_options</code> and <code>command_options</code>.
+When given as a <code>cvs_option</code>, some options only
+affect some of the commands. When given as a
+<code>command_option</code> it may have a different meaning, and
+be accepted by more commands. In other words, do not
+take the above categorization too seriously. Look at
+the documentation instead.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Substitution-modes.html
===================================================================
RCS file: html_node/Substitution-modes.html
diff -N html_node/Substitution-modes.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Substitution-modes.html 28 Dec 2015 15:58:08 -0000 1.1
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Substitution
modes</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Substitution modes">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Substitution modes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="up"
title="Keyword substitution">
+<link href="Log-keyword.html#Log-keyword" rel="next" title="Log keyword">
+<link href="Avoiding-substitution.html#Avoiding-substitution" rel="prev"
title="Avoiding substitution">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Substitution-modes"></a>
+<div class="header">
+<p>
+Next: <a href="Log-keyword.html#Log-keyword" accesskey="n" rel="next">Log
keyword</a>, Previous: <a
href="Avoiding-substitution.html#Avoiding-substitution" accesskey="p"
rel="prev">Avoiding substitution</a>, Up: <a
href="Keyword-substitution.html#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Substitution-modes-1"></a>
+<h3 class="section">12.4 Substitution modes</h3>
+<a name="index-Keyword-substitution_002c-changing-modes"></a>
+<a name="index-_002dk-_0028keyword-substitution_0029"></a>
+<a name="index-Kflag"></a>
+
+<p>Each file has a stored default substitution mode, and
+each working directory copy of a file also has a
+substitution mode. The former is set by the ‘<samp>-k</samp>’
+option to <code>cvs add</code> and <code>cvs admin</code>; the
+latter is set by the ‘<samp>-k</samp>’ or
‘<samp>-A</samp>’ options to <code>cvs
+checkout</code> or <code>cvs update</code>.
+<code>cvs diff</code> and <code>cvs rdiff</code> also
+have ‘<samp>-k</samp>’ options.
+For some examples,
+see <a href="Binary-files.html#Binary-files">Binary files</a>, and <a
href="Merging-and-keywords.html#Merging-and-keywords">Merging and keywords</a>.
+</p>
+<p>The modes available are:
+</p>
+<dl compact="compact">
+<dt>‘<samp>-kkv</samp>’</dt>
+<dd><p>Generate keyword strings using the default form, e.g.
+<code>$<i></i>Revision: 5.7 $</code> for the <code>Revision</code>
+keyword.
+</p>
+</dd>
+<dt>‘<samp>-kkvl</samp>’</dt>
+<dd><p>Like ‘<samp>-kkv</samp>’, except that a locker’s name
is always
+inserted if the given revision is currently locked.
+The locker’s name is only relevant if <code>cvs admin
+-l</code> is in use.
+</p>
+</dd>
+<dt>‘<samp>-kk</samp>’</dt>
+<dd><p>Generate only keyword names in keyword strings; omit
+their values. For example, for the <code>Revision</code>
+keyword, generate the string <code>$<i></i>Revision$</code>
+instead of <code>$<i></i>Revision: 5.7 $</code>. This option
+is useful to ignore differences due to keyword
+substitution when comparing different revisions of a
+file (see <a href="Merging-and-keywords.html#Merging-and-keywords">Merging and
keywords</a>).
+</p>
+</dd>
+<dt>‘<samp>-ko</samp>’</dt>
+<dd><p>Generate the old keyword string, present in the working
+file just before it was checked in. For example, for
+the <code>Revision</code> keyword, generate the string
+<code>$<i></i>Revision: 1.1 $</code> instead of
+<code>$<i></i>Revision: 5.7 $</code> if that is how the
+string appeared when the file was checked in.
+</p>
+</dd>
+<dt>‘<samp>-kb</samp>’</dt>
+<dd><p>Like ‘<samp>-ko</samp>’, but also inhibit conversion of line
+endings between the canonical form in which they are
+stored in the repository (linefeed only), and the form
+appropriate to the operating system in use on the
+client. For systems, like unix, which use linefeed
+only to terminate lines, this is the same as
+‘<samp>-ko</samp>’. For more information on binary files, see
+<a href="Binary-files.html#Binary-files">Binary files</a>.
+</p>
+</dd>
+<dt>‘<samp>-kv</samp>’</dt>
+<dd><p>Generate only keyword values for keyword strings. For
+example, for the <code>Revision</code> keyword, generate the string
+<code>5.7</code> instead of <code>$<i></i>Revision: 5.7 $</code>.
+This can help generate files in programming languages
+where it is hard to strip keyword delimiters like
+<code>$<i></i>Revision: $</code> from a string. However,
+further keyword substitution cannot be performed once
+the keyword names are removed, so this option should be
+used with care.
+</p>
+<p>One often would like to use ‘<samp>-kv</samp>’ with <code>cvs
+export</code>—see <a href="export.html#export">export</a>. But be aware
that doesn’t
+handle an export containing binary files correctly.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Log-keyword.html#Log-keyword" accesskey="n" rel="next">Log
keyword</a>, Previous: <a
href="Avoiding-substitution.html#Avoiding-substitution" accesskey="p"
rel="prev">Avoiding substitution</a>, Up: <a
href="Keyword-substitution.html#Keyword-substitution" accesskey="u"
rel="up">Keyword substitution</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Tagging-add_002fremove.html
===================================================================
RCS file: html_node/Tagging-add_002fremove.html
diff -N html_node/Tagging-add_002fremove.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Tagging-add_002fremove.html 28 Dec 2015 15:58:08 -0000
1.1
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Tagging
add/remove</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Tagging add/remove">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Tagging add/remove">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Sticky-tags.html#Sticky-tags" rel="next" title="Sticky tags">
+<link href="Modifying-tags.html#Modifying-tags" rel="prev" title="Modifying
tags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Tagging-add_002fremove"></a>
+<div class="header">
+<p>
+Next: <a href="Sticky-tags.html#Sticky-tags" accesskey="n" rel="next">Sticky
tags</a>, Previous: <a href="Modifying-tags.html#Modifying-tags" accesskey="p"
rel="prev">Modifying tags</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tagging-and-adding-and-removing-files"></a>
+<h3 class="section">4.8 Tagging and adding and removing files</h3>
+
+<p>The subject of exactly how tagging interacts with
+adding and removing files is somewhat obscure; for the
+most part <small>CVS</small> will keep track of whether files
+exist or not without too much fussing. By default,
+tags are applied to only files which have a revision
+corresponding to what is being tagged. Files which did
+not exist yet, or which were already removed, simply
+omit the tag, and <small>CVS</small> knows to treat the absence
+of a tag as meaning that the file didn’t exist as of
+that tag.
+</p>
+<p>However, this can lose a small amount of information.
+For example, suppose a file was added and then removed.
+Then, if the tag is missing for that file, there is no
+way to know whether the tag refers to the time before
+the file was added, or the time after it was removed.
+If you specify the ‘<samp>-r</samp>’ option to <code>cvs
rtag</code>,
+then <small>CVS</small> tags the files which have been removed,
+and thereby avoids this problem. For example, one
+might specify <code>-r HEAD</code> to tag the head.
+</p>
+<p>On the subject of adding and removing files, the
+<code>cvs rtag</code> command has a ‘<samp>-a</samp>’ option which
+means to clear the tag from removed files that would
+not otherwise be tagged. For example, one might
+specify this option in conjunction with ‘<samp>-F</samp>’ when
+moving a tag. If one moved a tag without ‘<samp>-a</samp>’,
+then the tag in the removed files might still refer to
+the old revision, rather than reflecting the fact that
+the file had been removed. I don’t think this is
+necessary if ‘<samp>-r</samp>’ is specified, as noted above.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sticky-tags.html#Sticky-tags" accesskey="n" rel="next">Sticky
tags</a>, Previous: <a href="Modifying-tags.html#Modifying-tags" accesskey="p"
rel="prev">Modifying tags</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Tagging-by-date_002ftag.html
===================================================================
RCS file: html_node/Tagging-by-date_002ftag.html
diff -N html_node/Tagging-by-date_002ftag.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Tagging-by-date_002ftag.html 28 Dec 2015 15:58:09 -0000
1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Tagging by
date/tag</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Tagging by date/tag">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Tagging by date/tag">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Modifying-tags.html#Modifying-tags" rel="next" title="Modifying
tags">
+<link href="Tagging-the-working-directory.html#Tagging-the-working-directory"
rel="prev" title="Tagging the working directory">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Tagging-by-date_002ftag"></a>
+<div class="header">
+<p>
+Next: <a href="Modifying-tags.html#Modifying-tags" accesskey="n"
rel="next">Modifying tags</a>, Previous: <a
href="Tagging-the-working-directory.html#Tagging-the-working-directory"
accesskey="p" rel="prev">Tagging the working directory</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Specifying-what-to-tag-by-date-or-revision"></a>
+<h3 class="section">4.6 Specifying what to tag by date or revision</h3>
+<a name="index-rtag-_0028subcommand_0029"></a>
+
+<p>The <code>cvs rtag</code> command tags the repository as of a
+certain date or time (or can be used to tag the latest
+revision). <code>rtag</code> works directly on the
+repository contents (it requires no prior checkout and
+does not look for a working directory).
+</p>
+<p>The following options specify which date or revision to
+tag. See <a href="Common-options.html#Common-options">Common options</a>, for
a complete
+description of them.
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Tag the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r <var>tag</var></samp>’
+flags. If no matching revision is found, use the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Only tag those files that contain existing tag <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>The <code>cvs tag</code> command also allows one to specify
+files by revision or date, using the same ‘<samp>-r</samp>’,
+‘<samp>-D</samp>’, and ‘<samp>-f</samp>’ options.
However, this
+feature is probably not what you want. The reason is
+that <code>cvs tag</code> chooses which files to tag based on
+the files that exist in the working directory, rather
+than the files which existed as of the given tag/date.
+Therefore, you are generally better off using <code>cvs
+rtag</code>. The exceptions might be cases like:
+</p>
+<div class="example">
+<pre class="example">cvs tag -r 1.4 backend.c
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Tagging-the-working-directory.html
===================================================================
RCS file: html_node/Tagging-the-working-directory.html
diff -N html_node/Tagging-the-working-directory.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Tagging-the-working-directory.html 28 Dec 2015 15:58:09
-0000 1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Tagging the working
directory</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Tagging the working directory">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Tagging the working directory">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag" rel="next"
title="Tagging by date/tag">
+<link href="Tags.html#Tags" rel="prev" title="Tags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Tagging-the-working-directory"></a>
+<div class="header">
+<p>
+Next: <a href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag"
accesskey="n" rel="next">Tagging by date/tag</a>, Previous: <a
href="Tags.html#Tags" accesskey="p" rel="prev">Tags</a>, Up: <a
href="Revisions.html#Revisions" accesskey="u" rel="up">Revisions</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Specifying-what-to-tag-from-the-working-directory"></a>
+<h3 class="section">4.5 Specifying what to tag from the working directory</h3>
+
+<a name="index-tag-_0028subcommand_0029"></a>
+<p>The example in the previous section demonstrates one of
+the most common ways to choose which revisions to tag.
+Namely, running the <code>cvs tag</code> command without
+arguments causes <small>CVS</small> to select the revisions which
+are checked out in the current working directory. For
+example, if the copy of <samp>backend.c</samp> in working
+directory was checked out from revision 1.4, then
+<small>CVS</small> will tag revision 1.4. Note that the tag is
+applied immediately to revision 1.4 in the repository;
+tagging is not like modifying a file, or other
+operations in which one first modifies the working
+directory and then runs <code>cvs commit</code> to transfer
+that modification to the repository.
+</p>
+<p>One potentially surprising aspect of the fact that
+<code>cvs tag</code> operates on the repository is that you
+are tagging the checked-in revisions, which may differ
+from locally modified files in your working directory.
+If you want to avoid doing this by mistake, specify the
+‘<samp>-c</samp>’ option to <code>cvs tag</code>. If there are any
+locally modified files, <small>CVS</small> will abort with an
+error before it tags any files:
+</p>
+<div class="example">
+<pre class="example">$ cvs tag -c rel-0-4
+cvs tag: backend.c is locally modified
+cvs [tag aborted]: correct the above errors first!
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Tags.html
===================================================================
RCS file: html_node/Tags.html
diff -N html_node/Tags.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Tags.html 28 Dec 2015 15:58:09 -0000 1.1
@@ -0,0 +1,231 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Tags</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Tags">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Tags">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Tagging-the-working-directory.html#Tagging-the-working-directory"
rel="next" title="Tagging the working directory">
+<link href="Assigning-revisions.html#Assigning-revisions" rel="prev"
title="Assigning revisions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Tags"></a>
+<div class="header">
+<p>
+Next: <a
href="Tagging-the-working-directory.html#Tagging-the-working-directory"
accesskey="n" rel="next">Tagging the working directory</a>, Previous: <a
href="Assigning-revisions.html#Assigning-revisions" accesskey="p"
rel="prev">Assigning revisions</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tags_002d_002dSymbolic-revisions"></a>
+<h3 class="section">4.4 Tags–Symbolic revisions</h3>
+<a name="index-Tags"></a>
+
+<p>The revision numbers live a life of their own. They
+need not have anything at all to do with the release
+numbers of your software product. Depending
+on how you use <small>CVS</small> the revision numbers might change several
times
+between two releases. As an example, some of the
+source files that make up <small>RCS</small> 5.6 have the following
+revision numbers:
+<a name="index-RCS-revision-numbers"></a>
+</p>
+<div class="example">
+<pre class="example">ci.c 5.21
+co.c 5.9
+ident.c 5.3
+rcs.c 5.12
+rcsbase.h 5.11
+rcsdiff.c 5.10
+rcsedit.c 5.11
+rcsfcmp.c 5.9
+rcsgen.c 5.10
+rcslex.c 5.11
+rcsmap.c 5.2
+rcsutil.c 5.10
+</pre></div>
+
+<a name="index-tag_002c-command_002c-introduction"></a>
+<a name="index-Tag_002c-symbolic-name"></a>
+<a name="index-Symbolic-name-_0028tag_0029"></a>
+<a name="index-Name_002c-symbolic-_0028tag_0029"></a>
+<a name="index-HEAD_002c-as-reserved-tag-name"></a>
+<a name="index-BASE_002c-as-reserved-tag-name"></a>
+<p>You can use the <code>tag</code> command to give a symbolic name to a
+certain revision of a file. You can use the ‘<samp>-v</samp>’
flag to the
+<code>status</code> command to see all tags that a file has, and
+which revision numbers they represent. Tag names must
+start with an uppercase or lowercase letter and can
+contain uppercase and lowercase letters, digits,
+‘<samp>-</samp>’, and ‘<samp>_</samp>’. The two tag
names <code>BASE</code>
+and <code>HEAD</code> are reserved for use by <small>CVS</small>. It
+is expected that future names which are special to
+<small>CVS</small> will be specially named, for example by
+starting with ‘<samp>.</samp>’, rather than being named
analogously to
+<code>BASE</code> and <code>HEAD</code>, to avoid conflicts with
+actual tag names.
+</p>
+<p>You’ll want to choose some convention for naming tags,
+based on information such as the name of the program
+and the version number of the release. For example,
+one might take the name of the program, immediately
+followed by the version number with ‘<samp>.</samp>’ changed to
+‘<samp>-</samp>’, so that <small>CVS</small> 1.9 would be tagged
with the name
+<code>cvs1-9</code>. If you choose a consistent convention,
+then you won’t constantly be guessing whether a tag is
+<code>cvs-1-9</code> or <code>cvs1_9</code> or what. You might
+even want to consider enforcing your convention in the
+<samp>taginfo</samp> file (see <a href="taginfo.html#taginfo">taginfo</a>).
+</p>
+<a name="index-Adding-a-tag"></a>
+<a name="index-Tag_002c-example"></a>
+<p>The following example shows how you can add a tag to a
+file. The commands must be issued inside your working
+directory. That is, you should issue the
+command in the directory where <samp>backend.c</samp>
+resides.
+</p>
+<div class="example">
+<pre class="example">$ cvs tag rel-0-4 backend.c
+T backend.c
+$ cvs status -v backend.c
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-0-4 (revision: 1.4)
+
+</pre></div>
+
+<p>For a complete summary of the syntax of <code>cvs tag</code>,
+including the various options, see <a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>.
+</p>
+<p>There is seldom reason to tag a file in isolation. A more common use is
+to tag all the files that constitute a module with the same tag at
+strategic points in the development life-cycle, such as when a release
+is made.
+</p>
+<div class="example">
+<pre class="example">$ cvs tag rel-1-0 .
+cvs tag: Tagging .
+T Makefile
+T backend.c
+T driver.c
+T frontend.c
+T parser.c
+</pre></div>
+
+<p>(When you give <small>CVS</small> a directory as argument, it generally
applies the
+operation to all the files in that directory, and (recursively), to any
+subdirectories that it may contain. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.)
+</p>
+<a name="index-Retrieving-an-old-revision-using-tags"></a>
+<a name="index-Tag_002c-retrieving-old-revisions"></a>
+<p>The <code>checkout</code> command has a flag,
‘<samp>-r</samp>’, that lets you check out
+a certain revision of a module. This flag makes it easy to
+retrieve the sources that make up release 1.0 of the module
‘<samp>tc</samp>’ at
+any time in the future:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r rel-1-0 tc
+</pre></div>
+
+<p>This is useful, for instance, if someone claims that there is a bug in
+that release, but you cannot find the bug in the current working copy.
+</p>
+<p>You can also check out a module as it was at any given date.
+See <a href="checkout-options.html#checkout-options">checkout options</a>.
When specifying ‘<samp>-r</samp>’ to
+any of these commands, you will need beware of sticky
+tags; see <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a>.
+</p>
+<p>When you tag more than one file with the same tag you
+can think about the tag as "a curve drawn through a
+matrix of filename vs. revision number." Say we have 5
+files with the following revisions:
+</p>
+<div class="example">
+<pre class="example"> file1 file2 file3 file4 file5
+
+ 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
+ 1.2*- 1.2 1.2 -1.2*-
+ 1.3 \- 1.3*- 1.3 / 1.3
+ 1.4 \ 1.4 / 1.4
+ \-1.5*- 1.5
+ 1.6
+</pre></div>
+
+<p>At some time in the past, the <code>*</code> versions were tagged.
+You can think of the tag as a handle attached to the curve
+drawn through the tagged revisions. When you pull on
+the handle, you get all the tagged revisions. Another
+way to look at it is that you "sight" through a set of
+revisions that is "flat" along the tagged revisions,
+like this:
+</p>
+<div class="example">
+<pre class="example"> file1 file2 file3 file4 file5
+
+ 1.1
+ 1.2
+ 1.1 1.3 _
+ 1.1 1.2 1.4 1.1 /
+ 1.2*----1.3*----1.5*----1.2*----1.1 (--- <--- Look here
+ 1.3 1.6 1.3 \_
+ 1.4 1.4
+ 1.5
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a
href="Tagging-the-working-directory.html#Tagging-the-working-directory"
accesskey="n" rel="next">Tagging the working directory</a>, Previous: <a
href="Assigning-revisions.html#Assigning-revisions" accesskey="p"
rel="prev">Assigning revisions</a>, Up: <a href="Revisions.html#Revisions"
accesskey="u" rel="up">Revisions</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Tracking-sources.html
===================================================================
RCS file: html_node/Tracking-sources.html
diff -N html_node/Tracking-sources.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Tracking-sources.html 28 Dec 2015 15:58:09 -0000 1.1
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Tracking sources</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Tracking sources">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Tracking sources">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="First-import.html#First-import" rel="next" title="First import">
+<link href="Log-keyword.html#Log-keyword" rel="prev" title="Log keyword">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Tracking-sources"></a>
+<div class="header">
+<p>
+Next: <a href="Builds.html#Builds" accesskey="n" rel="next">Builds</a>,
Previous: <a href="Keyword-substitution.html#Keyword-substitution"
accesskey="p" rel="prev">Keyword substitution</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tracking-third_002dparty-sources"></a>
+<h2 class="chapter">13 Tracking third-party sources</h2>
+<a name="index-Third_002dparty-sources"></a>
+<a name="index-Tracking-sources"></a>
+
+<p>If you modify a program to better fit your site, you
+probably want to include your modifications when the next
+release of the program arrives. <small>CVS</small> can help you with
+this task.
+</p>
+<a name="index-Vendor"></a>
+<a name="index-Vendor-branch"></a>
+<a name="index-Branch_002c-vendor_002d"></a>
+<p>In the terminology used in <small>CVS</small>, the supplier of the
+program is called a <em>vendor</em>. The unmodified
+distribution from the vendor is checked in on its own
+branch, the <em>vendor branch</em>. <small>CVS</small> reserves branch
+1.1.1 for this use.
+</p>
+<p>When you modify the source and commit it, your revision
+will end up on the main trunk. When a new release is
+made by the vendor, you commit it on the vendor branch
+and copy the modifications onto the main trunk.
+</p>
+<p>Use the <code>import</code> command to create and update
+the vendor branch. When you import a new file,
+the vendor branch is made the ‘head’ revision, so
+anyone that checks out a copy of the file gets that
+revision. When a local modification is committed it is
+placed on the main trunk, and made the ‘head’
+revision.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="First-import.html#First-import" accesskey="1">First
import</a>:</td><td> </td><td align="left" valign="top">Importing
for the first time
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Update-imports.html#Update-imports" accesskey="2">Update
imports</a>:</td><td> </td><td align="left" valign="top">Updating
with the import command
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Reverting-local-changes.html#Reverting-local-changes"
accesskey="3">Reverting local changes</a>:</td><td> </td><td
align="left" valign="top">Reverting to the latest vendor release
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Binary-files-in-imports.html#Binary-files-in-imports"
accesskey="4">Binary files in imports</a>:</td><td> </td><td
align="left" valign="top">Binary files require special handling
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Keywords-in-imports.html#Keywords-in-imports" accesskey="5">Keywords in
imports</a>:</td><td> </td><td align="left" valign="top">Keyword
substitution might be undesirable
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Multiple-vendor-branches.html#Multiple-vendor-branches"
accesskey="6">Multiple vendor branches</a>:</td><td> </td><td
align="left" valign="top">What if you get sources from several places?
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Builds.html#Builds" accesskey="n" rel="next">Builds</a>,
Previous: <a href="Keyword-substitution.html#Keyword-substitution"
accesskey="p" rel="prev">Keyword substitution</a>, Up: <a href="index.html#Top"
accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Trigger-Script-Security.html
===================================================================
RCS file: html_node/Trigger-Script-Security.html
diff -N html_node/Trigger-Script-Security.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Trigger-Script-Security.html 28 Dec 2015 15:58:09 -0000
1.1
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Trigger Script
Security</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Trigger Script Security">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Trigger Script Security">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Trigger-Scripts.html#Trigger-Scripts" rel="up" title="Trigger
Scripts">
+<link href="commit-files.html#commit-files" rel="next" title="commit files">
+<link href="syntax.html#syntax" rel="prev" title="syntax">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Trigger-Script-Security"></a>
+<div class="header">
+<p>
+Previous: <a href="syntax.html#syntax" accesskey="p" rel="prev">syntax</a>,
Up: <a href="Trigger-Scripts.html#Trigger-Scripts" accesskey="u"
rel="up">Trigger Scripts</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Security-and-the-Trigger-Scripts"></a>
+<h4 class="appendixsubsec">C.3.2 Security and the Trigger Scripts</h4>
+<a name="index-Info-files_002c-security"></a>
+<a name="index-Trigger-scripts_002c-security"></a>
+
+<p>Security is a huge subject, and implementing a secure system is a
non-trivial
+task. This section will barely touch on all the issues involved, but it is
+well to note that, as with any script you will be allowing an untrusted
+user to run on your server, there are measures you can take to help prevent
+your trigger scripts from being abused.
+</p>
+<p>For instance, since the CVS trigger scripts all run in a copy of the
user’s
+sandbox on the server, a naively coded Perl trigger script which attempts to
+use a Perl module that is not installed on the system can be hijacked by any
+user with commit access who is checking in a file with the correct name. Other
+scripting languages may be vulnerable to similar hacks.
+</p>
+<p>One way to make a script more secure, at least with Perl, is to use scripts
+which invoke the <code>-T</code>, or "taint-check" switch on their
<code>#!</code> line.
+In the most basic terms, this causes Perl to avoid running code that may have
+come from an external source. Please run the <code>perldoc perlsec</code>
command
+for more on Perl security. Again, other languages may implement other security
+verification hooks which look more or less like Perl’s
"taint-check" mechanism.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Trigger-Scripts.html
===================================================================
RCS file: html_node/Trigger-Scripts.html
diff -N html_node/Trigger-Scripts.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Trigger-Scripts.html 28 Dec 2015 15:58:10 -0000 1.1
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Trigger Scripts</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Trigger Scripts">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Trigger Scripts">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="syntax.html#syntax" rel="next" title="syntax">
+<link href="Wrappers.html#Wrappers" rel="prev" title="Wrappers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Trigger-Scripts"></a>
+<div class="header">
+<p>
+Next: <a href="commit-files.html#commit-files" accesskey="n" rel="next">commit
files</a>, Previous: <a href="Wrappers.html#Wrappers" accesskey="p"
rel="prev">Wrappers</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Trigger-Scripts"></a>
+<h3 class="appendixsec">C.3 The Trigger Scripts</h3>
+<a name="index-Info-files"></a>
+<a name="index-Trigger-scripts"></a>
+
+<p>Several of the administrative files support triggers, or the launching
external
+scripts or programs at specific times before or after particular events. The
+individual files are discussed in the later sections, <a
href="commit-files.html#commit-files">commit files</a> and
+<a href="taginfo.html#taginfo">taginfo</a>, but some of the common elements
are discussed here.
+</p>
+<p>All the trigger scripts are launched in a copy of the user sandbox being
+committed, on the server, in client-server mode. In local mode, the scripts
+are actually launched directly from the user sandbox directory being committed.
+For most intents and purposes, the same scripts can be run in both locations
+without alteration.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="syntax.html#syntax"
accesskey="1">syntax</a>:</td><td> </td><td align="left"
valign="top">The common syntax
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Trigger-Script-Security.html#Trigger-Script-Security"
accesskey="2">Trigger Script Security</a>:</td><td> </td><td
align="left" valign="top">Trigger script security
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/Troubleshooting.html
===================================================================
RCS file: html_node/Troubleshooting.html
diff -N html_node/Troubleshooting.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Troubleshooting.html 28 Dec 2015 15:58:10 -0000 1.1
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Troubleshooting</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Troubleshooting">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Troubleshooting">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Error-messages.html#Error-messages" rel="next" title="Error
messages">
+<link href="Compatibility.html#Compatibility" rel="prev" title="Compatibility">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Troubleshooting"></a>
+<div class="header">
+<p>
+Next: <a href="Credits.html#Credits" accesskey="n" rel="next">Credits</a>,
Previous: <a href="Compatibility.html#Compatibility" accesskey="p"
rel="prev">Compatibility</a>, Up: <a href="index.html#Top" accesskey="u"
rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Troubleshooting-1"></a>
+<h2 class="appendix">Appendix F Troubleshooting</h2>
+
+<p>If you are having trouble with <small>CVS</small>, this appendix
+may help. If there is a particular error message which
+you are seeing, then you can look up the message
+alphabetically. If not, you can look through the
+section on other problems to see if your problem is
+mentioned there.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Error-messages.html#Error-messages" accesskey="1">Error
messages</a>:</td><td> </td><td align="left" valign="top">Partial
list of CVS errors
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Connection.html#Connection"
accesskey="2">Connection</a>:</td><td> </td><td align="left"
valign="top">Trouble making a connection to a CVS server
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Other-problems.html#Other-problems" accesskey="3">Other
problems</a>:</td><td> </td><td align="left" valign="top">Problems
not readily listed by error message
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
Index: html_node/Update-imports.html
===================================================================
RCS file: html_node/Update-imports.html
diff -N html_node/Update-imports.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Update-imports.html 28 Dec 2015 15:58:10 -0000 1.1
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Update imports</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Update imports">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Update imports">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tracking-sources.html#Tracking-sources" rel="up" title="Tracking
sources">
+<link href="Reverting-local-changes.html#Reverting-local-changes" rel="next"
title="Reverting local changes">
+<link href="First-import.html#First-import" rel="prev" title="First import">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Update-imports"></a>
+<div class="header">
+<p>
+Next: <a href="Reverting-local-changes.html#Reverting-local-changes"
accesskey="n" rel="next">Reverting local changes</a>, Previous: <a
href="First-import.html#First-import" accesskey="p" rel="prev">First
import</a>, Up: <a href="Tracking-sources.html#Tracking-sources" accesskey="u"
rel="up">Tracking sources</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Updating-with-the-import-command"></a>
+<h3 class="section">13.2 Updating with the import command</h3>
+
+<p>When a new release of the source arrives, you import it into the
+repository with the same <code>import</code> command that you used to set up
+the repository in the first place. The only difference is that you
+specify a different release tag this time:
+</p>
+<div class="example">
+<pre class="example">$ tar xfz wdiff-0.05.tar.gz
+$ cd wdiff-0.05
+$ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+</pre></div>
+
+<p><strong>WARNING: If you use a release tag that already exists in one of the
+repository archives, files removed by an import may not be detected.</strong>
+</p>
+<p>For files that have not been modified locally, the newly created
+revision becomes the head revision. If you have made local
+changes, <code>import</code> will warn you that you must merge the changes
+into the main trunk, and tell you to use ‘<samp>checkout
-j</samp>’ to do so:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
+</pre></div>
+
+<p>The above command will check out the latest revision of
+‘<samp>wdiff</samp>’, merging the changes made on the vendor
branch ‘<samp>FSF_DIST</samp>’
+since yesterday into the working copy. If any conflicts arise during
+the merge they should be resolved in the normal way (see <a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a>). Then,
the modified files may be committed.
+</p>
+<p>However, it is much better to use the two release tags rather than using
+a date on the branch as suggested above:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
+</pre></div>
+
+<p>The reason this is better is that
+using a date, as suggested above, assumes that you do
+not import more than one release of a product per day.
+More importantly, using the release tags allows <small>CVS</small> to detect
files
+that were removed between the two vendor releases and mark them for
+removal. Since <code>import</code> has no way to detect removed files, you
+should do a merge like this even if <code>import</code> doesn’t tell you
to.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Reverting-local-changes.html#Reverting-local-changes"
accesskey="n" rel="next">Reverting local changes</a>, Previous: <a
href="First-import.html#First-import" accesskey="p" rel="prev">First
import</a>, Up: <a href="Tracking-sources.html#Tracking-sources" accesskey="u"
rel="up">Tracking sources</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Updating-a-file.html
===================================================================
RCS file: html_node/Updating-a-file.html
diff -N html_node/Updating-a-file.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Updating-a-file.html 28 Dec 2015 15:58:10 -0000 1.1
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Updating a file</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Updating a file">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Updating a file">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Conflicts-example.html#Conflicts-example" rel="next"
title="Conflicts example">
+<link href="File-status.html#File-status" rel="prev" title="File status">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Updating-a-file"></a>
+<div class="header">
+<p>
+Next: <a href="Conflicts-example.html#Conflicts-example" accesskey="n"
rel="next">Conflicts example</a>, Previous: <a
href="File-status.html#File-status" accesskey="p" rel="prev">File status</a>,
Up: <a href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Bringing-a-file-up-to-date"></a>
+<h3 class="section">10.2 Bringing a file up to date</h3>
+<a name="index-Bringing-a-file-up-to-date"></a>
+<a name="index-Updating-a-file"></a>
+<a name="index-Merging-a-file"></a>
+<a name="index-Update_002c-introduction"></a>
+
+<p>When you want to update or merge a file, use the <code>cvs update -d</code>
+command. For files that are not up to date this is roughly equivalent
+to a <code>checkout</code> command: the newest revision of the file is
+extracted from the repository and put in your working directory. The
+<code>-d</code> option, not necessary with <code>checkout</code>, tells
<small>CVS</small>
+that you wish it to create directories added by other developers.
+</p>
+<p>Your modifications to a file are never lost when you
+use <code>update</code>. If no newer revision exists,
+running <code>update</code> has no effect. If you have
+edited the file, and a newer revision is available,
+<small>CVS</small> will merge all changes into your working copy.
+</p>
+<p>For instance, imagine that you checked out revision 1.4 and started
+editing it. In the meantime someone else committed revision 1.5, and
+shortly after that revision 1.6. If you run <code>update</code> on the file
+now, <small>CVS</small> will incorporate all changes between revision 1.4 and
1.6 into
+your file.
+</p>
+<a name="index-Overlap"></a>
+<p>If any of the changes between 1.4 and 1.6 were made too
+close to any of the changes you have made, an
+<em>overlap</em> occurs. In such cases a warning is
+printed, and the resulting file includes both
+versions of the lines that overlap, delimited by
+special markers.
+See <a href="update.html#update">update</a>, for a complete description of the
+<code>update</code> command.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Using-keywords.html
===================================================================
RCS file: html_node/Using-keywords.html
diff -N html_node/Using-keywords.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Using-keywords.html 28 Dec 2015 15:58:11 -0000 1.1
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Using keywords</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Using keywords">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Using keywords">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="up"
title="Keyword substitution">
+<link href="Avoiding-substitution.html#Avoiding-substitution" rel="next"
title="Avoiding substitution">
+<link href="Keyword-list.html#Keyword-list" rel="prev" title="Keyword list">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Using-keywords"></a>
+<div class="header">
+<p>
+Next: <a href="Avoiding-substitution.html#Avoiding-substitution" accesskey="n"
rel="next">Avoiding substitution</a>, Previous: <a
href="Keyword-list.html#Keyword-list" accesskey="p" rel="prev">Keyword
list</a>, Up: <a href="Keyword-substitution.html#Keyword-substitution"
accesskey="u" rel="up">Keyword substitution</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-keywords-1"></a>
+<h3 class="section">12.2 Using keywords</h3>
+
+<p>To include a keyword string you simply include the
+relevant text string, such as <code>$<i></i>Id$</code>, inside the
+file, and commit the file. <small>CVS</small> will automatically (Or,
+more accurately, as part of the update run that
+automatically happens after a commit.)
+expand the string as part of the commit operation.
+</p>
+<p>It is common to embed the <code>$<i></i>Id$</code> string in
+the source files so that it gets passed through to
+generated files. For example, if you are managing
+computer program source code, you might include a
+variable which is initialized to contain that string.
+Or some C compilers may provide a <code>#pragma ident</code>
+directive. Or a document management system might
+provide a way to pass a string through to generated
+files.
+</p>
+
+<a name="index-Ident-_0028shell-command_0029"></a>
+<p>The <code>ident</code> command (which is part of the <small>RCS</small>
+package) can be used to extract keywords and their
+values from a file. This can be handy for text files,
+but it is even more useful for extracting keywords from
+binary files.
+</p>
+<div class="example">
+<pre class="example">$ ident samp.c
+samp.c:
+ $<i></i>Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+$ gcc samp.c
+$ ident a.out
+a.out:
+ $<i></i>Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+</pre></div>
+
+<a name="index-What-_0028shell-command_0029"></a>
+<p>S<small>CCS</small> is another popular revision control system.
+It has a command, <code>what</code>, which is very similar to
+<code>ident</code> and used for the same purpose. Many sites
+without <small>RCS</small> have <small>SCCS</small>. Since <code>what</code>
+looks for the character sequence <code>@(#)</code> it is
+easy to include keywords that are detected by either
+command. Simply prefix the keyword with the
+magic <small>SCCS</small> phrase, like this:
+</p>
+<div class="example">
+<pre class="example">static char *id="@(#) $<i></i>Id: ab.c,v 1.5
1993/10/19 14:57:32 ceder Exp $";
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Avoiding-substitution.html#Avoiding-substitution" accesskey="n"
rel="next">Avoiding substitution</a>, Previous: <a
href="Keyword-list.html#Keyword-list" accesskey="p" rel="prev">Keyword
list</a>, Up: <a href="Keyword-substitution.html#Keyword-substitution"
accesskey="u" rel="up">Keyword substitution</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Variables.html
===================================================================
RCS file: html_node/Variables.html
diff -N html_node/Variables.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Variables.html 28 Dec 2015 15:58:11 -0000 1.1
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Variables</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Variables">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Variables">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="config.html#config" rel="next" title="config">
+<link href="history-file.html#history-file" rel="prev" title="history file">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Variables"></a>
+<div class="header">
+<p>
+Next: <a href="config.html#config" accesskey="n" rel="next">config</a>,
Previous: <a href="history-file.html#history-file" accesskey="p"
rel="prev">history file</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Expansions-in-administrative-files"></a>
+<h3 class="appendixsec">C.10 Expansions in administrative files</h3>
+<a name="index-Internal-variables"></a>
+<a name="index-Variables"></a>
+
+<p>Sometimes in writing an administrative file, you might
+want the file to be able to know various things based
+on environment <small>CVS</small> is running in. There are
+several mechanisms to do that.
+</p>
+<p>To find the home directory of the user running <small>CVS</small>
+(from the <code>HOME</code> environment variable), use
+‘<samp>~</samp>’ followed by ‘<samp>/</samp>’ or the
end of the line.
+Likewise for the home directory of <var>user</var>, use
+‘<samp>~<var>user</var></samp>’. These variables are expanded on
+the server machine, and don’t get any reasonable
+expansion if pserver (see <a
href="Password-authenticated.html#Password-authenticated">Password
authenticated</a>)
+is in use; therefore user variables (see below) may be
+a better choice to customize behavior based on the user
+running <small>CVS</small>.
+</p>
+<p>One may want to know about various pieces of
+information internal to <small>CVS</small>. A <small>CVS</small> internal
+variable has the syntax <code>${<var>variable</var>}</code>,
+where <var>variable</var> starts with a letter and consists
+of alphanumeric characters and ‘<samp>_</samp>’. If the
+character following <var>variable</var> is a
+non-alphanumeric character other than ‘<samp>_</samp>’, the
+‘<samp>{</samp>’ and ‘<samp>}</samp>’ can be omitted.
The <small>CVS</small>
+internal variables are:
+</p>
+<dl compact="compact">
+<dt><code>CVSROOT</code></dt>
+<dd><a name="index-CVSROOT_002c-internal-variable"></a>
+<p>This is the absolute path to the current <small>CVS</small> root directory.
+See <a href="Repository.html#Repository">Repository</a>, for a description of
the various
+ways to specify this, but note that the internal
+variable contains just the directory and not any
+of the access method information.
+</p>
+</dd>
+<dt><code>RCSBIN</code></dt>
+<dd><a name="index-RCSBIN_002c-internal-variable"></a>
+<p>In <small>CVS</small> 1.9.18 and older, this specified the
+directory where <small>CVS</small> was looking for <small>RCS</small>
+programs. Because <small>CVS</small> no longer runs <small>RCS</small>
+programs, specifying this internal variable is now an
+error.
+</p>
+</dd>
+<dt><code>CVSEDITOR</code></dt>
+<dd><a name="index-CVSEDITOR_002c-internal-variable"></a>
+</dd>
+<dt><code>EDITOR</code></dt>
+<dd><a name="index-EDITOR_002c-internal-variable"></a>
+</dd>
+<dt><code>VISUAL</code></dt>
+<dd><a name="index-VISUAL_002c-internal-variable"></a>
+<p>These all expand to the same value, which is the editor
+that <small>CVS</small> is using. See <a
href="Global-options.html#Global-options">Global options</a>, for how
+to specify this.
+</p>
+</dd>
+<dt><code>USER</code></dt>
+<dd><a name="index-USER_002c-internal-variable"></a>
+<p>Username of the user running <small>CVS</small> (on the <small>CVS</small>
+server machine).
+When using pserver, this is the user specified in the repository
+specification which need not be the same as the username the
+server is running as (see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>).
+Do not confuse this with the environment variable of the same name.
+</p></dd>
+</dl>
+
+<p>If you want to pass a value to the administrative files
+which the user who is running <small>CVS</small> can specify,
+use a user variable.
+<a name="index-User-variables"></a>
+To expand a user variable, the
+administrative file contains
+<code>${=<var>variable</var>}</code>. To set a user variable,
+specify the global option ‘<samp>-s</samp>’ to <small>CVS</small>,
with
+argument <code><var>variable</var>=<var>value</var></code>. It may be
+particularly useful to specify this option via
+<samp>.cvsrc</samp> (see <a
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">~/.cvsrc</a>).
+</p>
+<p>For example, if you want the administrative file to
+refer to a test directory you might create a user
+variable <code>TESTDIR</code>. Then if <small>CVS</small> is invoked
+as
+</p>
+<div class="example">
+<pre class="example">cvs -s TESTDIR=/work/local/tests
+</pre></div>
+
+<p>and the
+administrative file contains <code>sh
+${=TESTDIR}/runtests</code>, then that string is expanded
+to <code>sh /work/local/tests/runtests</code>.
+</p>
+<p>All other strings containing ‘<samp>$</samp>’ are reserved;
+there is no way to quote a ‘<samp>$</samp>’ character so that
+‘<samp>$</samp>’ represents itself.
+</p>
+<p>Environment variables passed to administrative files are:
+</p>
+<dl compact="compact">
+<dd><a
name="index-environment-variables_002c-passed-to-administrative-files"></a>
+
+</dd>
+<dt><code>CVS_USER</code></dt>
+<dd><a name="index-CVS_005fUSER_002c-environment-variable"></a>
+<p>The <small>CVS</small>-specific username provided by the user, if it
+can be provided (currently just for the pserver access
+method), and to the empty string otherwise. (<code>CVS_USER</code>
+and <code>USER</code> may differ when <samp>$CVSROOT/CVSROOT/passwd</samp>
+is used to map <small>CVS</small> usernames to system usernames.)
+</p>
+</dd>
+<dt><code>LOGNAME</code></dt>
+<dd><a name="index-LOGNAME_002c-environment-variable"></a>
+<p>The username of the system user.
+</p>
+</dd>
+<dt><code>USER</code></dt>
+<dd><a name="index-USER_002c-environment-variable"></a>
+<p>Same as <code>LOGNAME</code>.
+Do not confuse this with the internal variable of the same name.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="config.html#config" accesskey="n" rel="next">config</a>,
Previous: <a href="history-file.html#history-file" accesskey="p"
rel="prev">history file</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Versions-revisions-releases.html
===================================================================
RCS file: html_node/Versions-revisions-releases.html
diff -N html_node/Versions-revisions-releases.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Versions-revisions-releases.html 28 Dec 2015 15:58:12 -0000
1.1
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Versions revisions
releases</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Versions revisions releases">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Versions revisions releases">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revisions.html#Revisions" rel="up" title="Revisions">
+<link href="Assigning-revisions.html#Assigning-revisions" rel="next"
title="Assigning revisions">
+<link href="Revision-numbers.html#Revision-numbers" rel="prev" title="Revision
numbers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Versions-revisions-releases"></a>
+<div class="header">
+<p>
+Next: <a href="Assigning-revisions.html#Assigning-revisions" accesskey="n"
rel="next">Assigning revisions</a>, Previous: <a
href="Revision-numbers.html#Revision-numbers" accesskey="p" rel="prev">Revision
numbers</a>, Up: <a href="Revisions.html#Revisions" accesskey="u"
rel="up">Revisions</a> [<a href="index.html#SEC_Contents" title="Table
of contents" rel="contents">Contents</a>][<a href="Index.html#Index"
title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Versions_002c-revisions-and-releases"></a>
+<h3 class="section">4.2 Versions, revisions and releases</h3>
+<a name="index-Revisions_002c-versions-and-releases"></a>
+<a name="index-Versions_002c-revisions-and-releases"></a>
+<a name="index-Releases_002c-revisions-and-versions"></a>
+
+<p>A file can have several versions, as described above.
+Likewise, a software product can have several versions.
+A software product is often given a version number such
+as ‘<samp>4.1.1</samp>’.
+</p>
+<p>Versions in the first sense are called <em>revisions</em>
+in this document, and versions in the second sense are
+called <em>releases</em>. To avoid confusion, the word
+<em>version</em> is almost never used in this document.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Viewing-differences.html
===================================================================
RCS file: html_node/Viewing-differences.html
diff -N html_node/Viewing-differences.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Viewing-differences.html 28 Dec 2015 15:58:12 -0000 1.1
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Viewing
differences</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Viewing differences">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Viewing differences">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="A-sample-session.html#A-sample-session" rel="up" title="A sample
session">
+<link href="Repository.html#Repository" rel="next" title="Repository">
+<link href="Cleaning-up.html#Cleaning-up" rel="prev" title="Cleaning up">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Viewing-differences"></a>
+<div class="header">
+<p>
+Previous: <a href="Cleaning-up.html#Cleaning-up" accesskey="p"
rel="prev">Cleaning up</a>, Up: <a
href="A-sample-session.html#A-sample-session" accesskey="u" rel="up">A sample
session</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Viewing-differences-1"></a>
+<h4 class="subsection">1.3.4 Viewing differences</h4>
+<a name="index-Viewing-differences"></a>
+<a name="index-Diff"></a>
+
+<p>You do not remember modifying <samp>driver.c</samp>, so you want to see what
+has happened to that file.
+</p>
+<div class="example">
+<pre class="example">$ cd tc
+$ cvs diff driver.c
+</pre></div>
+
+<p>This command runs <code>diff</code> to compare the version of
<samp>driver.c</samp>
+that you checked out with your working copy. When you see the output
+you remember that you added a command line option that enabled the
+optimization pass. You check it in, and release the module.
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -m "Added an optimization pass"
driver.c
+Checking in driver.c;
+/usr/local/cvsroot/tc/driver.c,v <-- driver.c
+new revision: 1.2; previous revision: 1.1
+done
+$ cd ..
+$ cvs release -d tc
+? tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/Watch-information.html
===================================================================
RCS file: html_node/Watch-information.html
diff -N html_node/Watch-information.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Watch-information.html 28 Dec 2015 15:58:12 -0000 1.1
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Watch information</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Watch information">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Watch information">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Watches.html#Watches" rel="up" title="Watches">
+<link href="Watches-Compatibility.html#Watches-Compatibility" rel="next"
title="Watches Compatibility">
+<link href="Editing-files.html#Editing-files" rel="prev" title="Editing files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Watch-information"></a>
+<div class="header">
+<p>
+Next: <a href="Watches-Compatibility.html#Watches-Compatibility" accesskey="n"
rel="next">Watches Compatibility</a>, Previous: <a
href="Editing-files.html#Editing-files" accesskey="p" rel="prev">Editing
files</a>, Up: <a href="Watches.html#Watches" accesskey="u"
rel="up">Watches</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Information-about-who-is-watching-and-editing"></a>
+<h4 class="subsection">10.6.4 Information about who is watching and
editing</h4>
+
+<a name="index-watchers-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-watchers"></a>Command: <strong>cvs watchers</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>List the users currently watching changes to <var>files</var>. The report
+includes the files being watched, and the mail address of each watcher.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+</dd></dl>
+
+
+<a name="index-editors-_0028subcommand_0029"></a>
+<dl>
+<dt><a name="index-cvs-editors"></a>Command: <strong>cvs editors</strong>
<em>[<code>-lR</code>] [<var>files</var>]…</em></dt>
+<dd>
+<p>List the users currently working on <var>files</var>. The report
+includes the mail address of each user, the time when the user began
+working with the file, and the host and path of the working directory
+containing the file.
+</p>
+<p>The <var>files</var> and options are processed as for the
+<code>cvs watch</code> commands.
+</p>
+</dd></dl>
+
+
+
+
+</body>
+</html>
Index: html_node/Watches-Compatibility.html
===================================================================
RCS file: html_node/Watches-Compatibility.html
diff -N html_node/Watches-Compatibility.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Watches-Compatibility.html 28 Dec 2015 15:58:12 -0000
1.1
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Watches
Compatibility</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Watches Compatibility">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Watches Compatibility">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Watches.html#Watches" rel="up" title="Watches">
+<link href="Choosing-a-model.html#Choosing-a-model" rel="next" title="Choosing
a model">
+<link href="Watch-information.html#Watch-information" rel="prev" title="Watch
information">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Watches-Compatibility"></a>
+<div class="header">
+<p>
+Previous: <a href="Watch-information.html#Watch-information" accesskey="p"
rel="prev">Watch information</a>, Up: <a href="Watches.html#Watches"
accesskey="u" rel="up">Watches</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-watches-with-old-versions-of-CVS"></a>
+<h4 class="subsection">10.6.5 Using watches with old versions of CVS</h4>
+
+<a name="index-CVS-1_002e6_002c-and-watches"></a>
+<p>If you use the watch features on a repository, it
+creates <samp>CVS</samp> directories in the repository and
+stores the information about watches in that directory.
+If you attempt to use <small>CVS</small> 1.6 or earlier with the
+repository, you get an error message such as the
+following (all on one line):
+</p>
+<div class="example">
+<pre class="example">cvs update: cannot open CVS/Entries for reading:
+No such file or directory
+</pre></div>
+
+<p>and your operation will likely be aborted. To use the
+watch features, you must upgrade all copies of <small>CVS</small>
+which use that repository in local or server mode. If
+you cannot upgrade, use the <code>watch off</code> and
+<code>watch remove</code> commands to remove all watches, and
+that will restore the repository to a state which
+<small>CVS</small> 1.6 can cope with.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Watches.html
===================================================================
RCS file: html_node/Watches.html
diff -N html_node/Watches.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Watches.html 28 Dec 2015 15:58:12 -0000 1.1
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Watches</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Watches">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Watches">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Multiple-developers.html#Multiple-developers" rel="up"
title="Multiple developers">
+<link href="Setting-a-watch.html#Setting-a-watch" rel="next" title="Setting a
watch">
+<link href="Concurrency.html#Concurrency" rel="prev" title="Concurrency">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Watches"></a>
+<div class="header">
+<p>
+Next: <a href="Choosing-a-model.html#Choosing-a-model" accesskey="n"
rel="next">Choosing a model</a>, Previous: <a
href="Concurrency.html#Concurrency" accesskey="p" rel="prev">Concurrency</a>,
Up: <a href="Multiple-developers.html#Multiple-developers" accesskey="u"
rel="up">Multiple developers</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Mechanisms-to-track-who-is-editing-files"></a>
+<h3 class="section">10.6 Mechanisms to track who is editing files</h3>
+<a name="index-Watches"></a>
+
+<p>For many groups, use of <small>CVS</small> in its default mode is
+perfectly satisfactory. Users may sometimes go to
+check in a modification only to find that another
+modification has intervened, but they deal with it and
+proceed with their check in. Other groups prefer to be
+able to know who is editing what files, so that if two
+people try to edit the same file they can choose to
+talk about who is doing what when rather than be
+surprised at check in time. The features in this
+section allow such coordination, while retaining the
+ability of two developers to edit the same file at the
+same time.
+</p>
+<p>For maximum benefit developers should use <code>cvs
+edit</code> (not <code>chmod</code>) to make files read-write to
+edit them, and <code>cvs release</code> (not <code>rm</code>) to
+discard a working directory which is no longer in use,
+but <small>CVS</small> is not able to enforce this behavior.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Setting-a-watch.html#Setting-a-watch" accesskey="1">Setting a
watch</a>:</td><td> </td><td align="left" valign="top">Telling CVS
to watch certain files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Getting-Notified.html#Getting-Notified" accesskey="2">Getting
Notified</a>:</td><td> </td><td align="left" valign="top">Telling
CVS to notify you
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Editing-files.html#Editing-files" accesskey="3">Editing
files</a>:</td><td> </td><td align="left" valign="top">How to edit a
file which is being watched
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Watch-information.html#Watch-information" accesskey="4">Watch
information</a>:</td><td> </td><td align="left"
valign="top">Information about who is watching and editing
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Watches-Compatibility.html#Watches-Compatibility" accesskey="5">Watches
Compatibility</a>:</td><td> </td><td align="left"
valign="top">Watches interact poorly with CVS 1.6 or earlier
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/What-is-CVS-not_003f.html
===================================================================
RCS file: html_node/What-is-CVS-not_003f.html
diff -N html_node/What-is-CVS-not_003f.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/What-is-CVS-not_003f.html 28 Dec 2015 15:58:13 -0000 1.1
@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: What is CVS not?</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: What is CVS not?">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
What is CVS not?">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Overview.html#Overview" rel="up" title="Overview">
+<link href="A-sample-session.html#A-sample-session" rel="next" title="A sample
session">
+<link href="What-is-CVS_003f.html#What-is-CVS_003f" rel="prev" title="What is
CVS?">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="What-is-CVS-not_003f"></a>
+<div class="header">
+<p>
+Next: <a href="A-sample-session.html#A-sample-session" accesskey="n"
rel="next">A sample session</a>, Previous: <a
href="What-is-CVS_003f.html#What-is-CVS_003f" accesskey="p" rel="prev">What is
CVS?</a>, Up: <a href="Overview.html#Overview" accesskey="u"
rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="What-is-CVS-not_003f-1"></a>
+<h3 class="section">1.2 What is CVS not?</h3>
+<a name="index-What-is-CVS-not_003f"></a>
+
+<p><small>CVS</small> can do a lot of things for you, but it does
+not try to be everything for everyone.
+</p>
+<dl compact="compact">
+<dt><small>CVS</small> is not a build system.</dt>
+<dd>
+<p>Though the structure of your repository and modules
+file interact with your build system
+(e.g. <samp>Makefile</samp>s), they are essentially
+independent.
+</p>
+<p><small>CVS</small> does not dictate how you build anything. It
+merely stores files for retrieval in a tree structure
+you devise.
+</p>
+<p><small>CVS</small> does not dictate how to use disk space in the
+checked out working directories. If you write your
+<samp>Makefile</samp>s or scripts in every directory so they
+have to know the relative positions of everything else,
+you wind up requiring the entire repository to be
+checked out.
+</p>
+<p>If you modularize your work, and construct a build
+system that will share files (via links, mounts,
+<code>VPATH</code> in <samp>Makefile</samp>s, etc.), you can
+arrange your disk usage however you like.
+</p>
+<p>But you have to remember that <em>any</em> such system is
+a lot of work to construct and maintain. <small>CVS</small> does
+not address the issues involved.
+</p>
+<p>Of course, you should place the tools created to
+support such a build system (scripts, <samp>Makefile</samp>s,
+etc.) under <small>CVS</small>.
+</p>
+<p>Figuring out what files need to be rebuilt when
+something changes is, again, something to be handled
+outside the scope of <small>CVS</small>. One traditional
+approach is to use <code>make</code> for building, and use
+some automated tool for generating the dependencies which
+<code>make</code> uses.
+</p>
+<p>See <a href="Builds.html#Builds">Builds</a>, for more information on doing
builds
+in conjunction with <small>CVS</small>.
+</p>
+</dd>
+<dt><small>CVS</small> is not a substitute for management.</dt>
+<dd>
+<p>Your managers and project leaders are expected to talk
+to you frequently enough to make certain you are aware
+of schedules, merge points, branch names and release
+dates. If they don’t, <small>CVS</small> can’t help.
+</p>
+<p><small>CVS</small> is an instrument for making sources dance to
+your tune. But you are the piper and the composer. No
+instrument plays itself or writes its own music.
+</p>
+</dd>
+<dt><small>CVS</small> is not a substitute for developer communication.</dt>
+<dd>
+<p>When faced with conflicts within a single file, most
+developers manage to resolve them without too much
+effort. But a more general definition of “conflict”
+includes problems too difficult to solve without
+communication between developers.
+</p>
+<p><small>CVS</small> cannot determine when simultaneous changes
+within a single file, or across a whole collection of
+files, will logically conflict with one another. Its
+concept of a <em>conflict</em> is purely textual, arising
+when two changes to the same base file are near enough
+to spook the merge (i.e., <code>diff3</code>) command.
+</p>
+<p><small>CVS</small> does not claim to help at all in figuring out
+non-textual or distributed conflicts in program logic.
+</p>
+<p>For example: Say you change the arguments to function
+<code>X</code> defined in file <samp>A</samp>. At the same time,
+someone edits file <samp>B</samp>, adding new calls to
+function <code>X</code> using the old arguments. You are
+outside the realm of <small>CVS</small>’s competence.
+</p>
+<p>Acquire the habit of reading specs and talking to your
+peers.
+</p>
+
+</dd>
+<dt><small>CVS</small> does not have change control</dt>
+<dd>
+<p>Change control refers to a number of things. First of
+all it can mean <em>bug-tracking</em>, that is being able
+to keep a database of reported bugs and the status of
+each one (Is it fixed? In what release? Has the bug
+submitter agreed that it is fixed?). For interfacing
+<small>CVS</small> to an external bug-tracking system, see the
+<samp>rcsinfo</samp> and <samp>verifymsg</samp> files
+(see <a href="Administrative-files.html#Administrative-files">Administrative
files</a>).
+</p>
+<p>Another aspect of change control is keeping track of
+the fact that changes to several files were in fact
+changed together as one logical change. If you check
+in several files in a single <code>cvs commit</code>
+operation, <small>CVS</small> then forgets that those files were
+checked in together, and the fact that they have the
+same log message is the only thing tying them
+together. Keeping a <small>GNU</small> style <samp>ChangeLog</samp>
+can help somewhat.
+</p>
+<p>Another aspect of change control, in some systems, is
+the ability to keep track of the status of each
+change. Some changes have been written by a developer,
+others have been reviewed by a second developer, and so
+on. Generally, the way to do this with <small>CVS</small> is to
+generate a diff (using <code>cvs diff</code> or <code>diff</code>)
+and email it to someone who can then apply it using the
+<code>patch</code> utility. This is very flexible, but
+depends on mechanisms outside <small>CVS</small> to make sure
+nothing falls through the cracks.
+</p>
+</dd>
+<dt><small>CVS</small> is not an automated testing program</dt>
+<dd>
+<p>It should be possible to enforce mandatory use of a
+test suite using the <code>commitinfo</code> file. I haven’t
+heard a lot about projects trying to do that or whether
+there are subtle gotchas, however.
+</p>
+</dd>
+<dt><small>CVS</small> does not have a built-in process model</dt>
+<dd>
+<p>Some systems provide ways to ensure that changes or
+releases go through various steps, with various
+approvals as needed. Generally, one can accomplish
+this with <small>CVS</small> but it might be a little more work.
+In some cases you’ll want to use the <samp>commitinfo</samp>,
+<samp>loginfo</samp>, <samp>rcsinfo</samp>, or <samp>verifymsg</samp>
+files, to require that certain steps be performed
+before cvs will allow a checkin. Also consider whether
+features such as branches and tags can be used to
+perform tasks such as doing work in a development tree
+and then merging certain changes over to a stable tree
+only once they have been proven.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="A-sample-session.html#A-sample-session" accesskey="n"
rel="next">A sample session</a>, Previous: <a
href="What-is-CVS_003f.html#What-is-CVS_003f" accesskey="p" rel="prev">What is
CVS?</a>, Up: <a href="Overview.html#Overview" accesskey="u"
rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/What-is-CVS_003f.html
===================================================================
RCS file: html_node/What-is-CVS_003f.html
diff -N html_node/What-is-CVS_003f.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/What-is-CVS_003f.html 28 Dec 2015 15:58:13 -0000 1.1
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: What is CVS?</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: What is CVS?">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
What is CVS?">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Overview.html#Overview" rel="up" title="Overview">
+<link href="What-is-CVS-not_003f.html#What-is-CVS-not_003f" rel="next"
title="What is CVS not?">
+<link href="Overview.html#Overview" rel="prev" title="Overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="What-is-CVS_003f"></a>
+<div class="header">
+<p>
+Next: <a href="What-is-CVS-not_003f.html#What-is-CVS-not_003f" accesskey="n"
rel="next">What is CVS not?</a>, Up: <a href="Overview.html#Overview"
accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="What-is-CVS_003f-1"></a>
+<h3 class="section">1.1 What is CVS?</h3>
+<a name="index-What-is-CVS_003f"></a>
+<a name="index-Introduction-to-CVS"></a>
+<a name="index-CVS_002c-introduction-to"></a>
+
+<p><small>CVS</small> is a version control system. Using it, you can
+record the history of your source files.
+</p>
+
+<p>For example, bugs sometimes creep in when
+software is modified, and you might not detect the bug
+until a long time after you make the modification.
+With <small>CVS</small>, you can easily retrieve old versions to see
+exactly which change caused the bug. This can
+sometimes be a big help.
+</p>
+<p>You could of course save every version of every file
+you have ever created. This would
+however waste an enormous amount of disk space. <small>CVS</small>
+stores all the versions of a file in a single file in a
+clever way that only stores the differences between
+versions.
+</p>
+<p><small>CVS</small> also helps you if you are part of a group of people
working
+on the same project. It is all too easy to overwrite
+each others’ changes unless you are extremely careful.
+Some editors, like <small>GNU</small> Emacs, try to make sure that
+two people never modify the same file at the
+same time. Unfortunately, if someone is using another
+editor, that safeguard will not work. <small>CVS</small> solves this problem
+by insulating the different developers from each other. Every
+developer works in his own directory, and <small>CVS</small> merges
+the work when each developer is done.
+</p>
+<a name="index-History-of-CVS"></a>
+<a name="index-CVS_002c-history-of"></a>
+<a name="index-Credits-_0028CVS-program_0029"></a>
+<a name="index-Contributors-_0028CVS-program_0029"></a>
+<p><small>CVS</small> started out as a bunch of shell scripts written by
+Dick Grune, posted to the newsgroup
+<code>comp.sources.unix</code> in the volume 6
+release of July, 1986. While no actual code from
+these shell scripts is present in the current version
+of <small>CVS</small> much of the <small>CVS</small> conflict resolution
algorithms
+come from them.
+</p>
+<p>In April, 1989, Brian Berliner designed and coded <small>CVS</small>.
+Jeff Polk later helped Brian with the design of the <small>CVS</small>
+module and vendor branch support.
+</p>
+<a name="index-Source_002c-getting-CVS-source"></a>
+<p>You can get <small>CVS</small> in a variety of ways, including
+free download from the Internet. For more information
+on downloading <small>CVS</small> and other <small>CVS</small> topics, see:
+</p>
+<div class="example">
+<pre class="example"><a
href="http://cvs.nongnu.org/">http://cvs.nongnu.org/</a>
+</pre></div>
+
+<a name="index-Mailing-list"></a>
+<a name="index-List_002c-mailing-list"></a>
+<a name="index-Newsgroups"></a>
+<p>There is a mailing list, known as <a
href="mailto:address@hidden">address@hidden</a>,
+devoted to <small>CVS</small>. To subscribe or
+unsubscribe
+write to
+<a href="mailto:address@hidden">address@hidden</a>.
+If you prefer a Usenet group, there is a one-way mirror (posts to the email
+list are usually sent to the news group, but not vice versa) of
+<a href="mailto:address@hidden">address@hidden</a> at <a
href="news:gnu.cvs.help">news:gnu.cvs.help</a>. The right
+Usenet group for posts is <a
href="news:comp.software.config-mgmt">news:comp.software.config-mgmt</a> which
is for
+<small>CVS</small> discussions (along with other configuration
+management systems). In the future, it might be
+possible to create a
+<code>comp.software.config-mgmt.cvs</code>, but probably only
+if there is sufficient <small>CVS</small> traffic on
+<a href="news:comp.software.config-mgmt">news:comp.software.config-mgmt</a>.
+</p>
+<p>You can also subscribe to the <a
href="mailto:address@hidden">address@hidden</a> mailing list,
+described in more detail in <a href="BUGS.html#BUGS">BUGS</a>. To subscribe
+send mail to <a href="mailto:address@hidden">address@hidden</a>. There is a
two-way
+Usenet mirror (posts to the Usenet group are usually sent to the email list and
+vice versa) of <a href="mailto:address@hidden">address@hidden</a> named <a
href="news:gnu.cvs.bug">news:gnu.cvs.bug</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="What-is-CVS-not_003f.html#What-is-CVS-not_003f" accesskey="n"
rel="next">What is CVS not?</a>, Up: <a href="Overview.html#Overview"
accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/When-to-commit.html
===================================================================
RCS file: html_node/When-to-commit.html
diff -N html_node/When-to-commit.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/When-to-commit.html 28 Dec 2015 15:58:13 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: When to commit</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: When to commit">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
When to commit">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Revision-management.html#Revision-management" rel="up"
title="Revision management">
+<link href="Keyword-substitution.html#Keyword-substitution" rel="next"
title="Keyword substitution">
+<link href="Revision-management.html#Revision-management" rel="prev"
title="Revision management">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="When-to-commit"></a>
+<div class="header">
+<p>
+Up: <a href="Revision-management.html#Revision-management" accesskey="u"
rel="up">Revision management</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="When-to-commit_003f"></a>
+<h3 class="section">11.1 When to commit?</h3>
+<a name="index-When-to-commit"></a>
+<a name="index-Committing_002c-when-to"></a>
+<a name="index-Policy"></a>
+
+<p>Your group should decide which policy to use regarding
+commits. Several policies are possible, and as your
+experience with <small>CVS</small> grows you will probably find
+out what works for you.
+</p>
+<p>If you commit files too quickly you might commit files
+that do not even compile. If your partner updates his
+working sources to include your buggy file, he will be
+unable to compile the code. On the other hand, other
+persons will not be able to benefit from the
+improvements you make to the code if you commit very
+seldom, and conflicts will probably be more common.
+</p>
+<p>It is common to only commit files after making sure
+that they can be compiled. Some sites require that the
+files pass a test suite. Policies like this can be
+enforced using the commitinfo file
+(see <a href="commitinfo.html#commitinfo">commitinfo</a>), but you should
think twice before
+you enforce such a convention. By making the
+development environment too controlled it might become
+too regimented and thus counter-productive to the real
+goal, which is to get software written.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Windows-permissions.html
===================================================================
RCS file: html_node/Windows-permissions.html
diff -N html_node/Windows-permissions.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Windows-permissions.html 28 Dec 2015 15:58:13 -0000 1.1
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Windows
permissions</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Windows permissions">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Windows permissions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository-storage.html#Repository-storage" rel="up"
title="Repository storage">
+<link href="Attic.html#Attic" rel="next" title="Attic">
+<link href="File-permissions.html#File-permissions" rel="prev" title="File
permissions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Windows-permissions"></a>
+<div class="header">
+<p>
+Next: <a href="Attic.html#Attic" accesskey="n" rel="next">Attic</a>, Previous:
<a href="File-permissions.html#File-permissions" accesskey="p" rel="prev">File
permissions</a>, Up: <a href="Repository-storage.html#Repository-storage"
accesskey="u" rel="up">Repository storage</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="File-Permission-issues-specific-to-Windows"></a>
+<h4 class="subsection">2.2.3 File Permission issues specific to Windows</h4>
+<a name="index-Windows_002c-and-permissions"></a>
+<a name="index-File-permissions_002c-Windows_002dspecific"></a>
+<a name="index-Permissions_002c-Windows_002dspecific"></a>
+
+<p>Some file permission issues are specific to Windows
+operating systems (Windows 95, Windows NT, and
+presumably future operating systems in this family.
+Some of the following might apply to OS/2 but I’m not
+sure).
+</p>
+<p>If you are using local <small>CVS</small> and the repository is on a
+networked file system which is served by the Samba SMB
+server, some people have reported problems with
+permissions. Enabling WRITE=YES in the samba
+configuration is said to fix/workaround it.
+Disclaimer: I haven’t investigated enough to know the
+implications of enabling that option, nor do I know
+whether there is something which <small>CVS</small> could be doing
+differently in order to avoid the problem. If you find
+something out, please let us know as described in
+<a href="BUGS.html#BUGS">BUGS</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/Working-directory-storage.html
===================================================================
RCS file: html_node/Working-directory-storage.html
diff -N html_node/Working-directory-storage.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Working-directory-storage.html 28 Dec 2015 15:58:13 -0000
1.1
@@ -0,0 +1,364 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Working directory
storage</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Working directory storage">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Working directory storage">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Repository.html#Repository" rel="up" title="Repository">
+<link href="Intro-administrative-files.html#Intro-administrative-files"
rel="next" title="Intro administrative files">
+<link href="CVSROOT-storage.html#CVSROOT-storage" rel="prev" title="CVSROOT
storage">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Working-directory-storage"></a>
+<div class="header">
+<p>
+Next: <a href="Intro-administrative-files.html#Intro-administrative-files"
accesskey="n" rel="next">Intro administrative files</a>, Previous: <a
href="Repository-storage.html#Repository-storage" accesskey="p"
rel="prev">Repository storage</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-data-is-stored-in-the-working-directory"></a>
+<h3 class="section">2.3 How data is stored in the working directory</h3>
+
+
+<a name="index-CVS-directory_002c-in-working-directory"></a>
+<p>While we are discussing <small>CVS</small> internals which may
+become visible from time to time, we might as well talk
+about what <small>CVS</small> puts in the <samp>CVS</samp> directories
+in the working directories. As with the repository,
+<small>CVS</small> handles this information and one can usually
+access it via <small>CVS</small> commands. But in some cases it
+may be useful to look at it, and other programs, such
+as the <code>jCVS</code> graphical user interface or the
+<code>VC</code> package for emacs, may need to look at it.
+Such programs should follow the recommendations in this
+section if they hope to be able to work with other
+programs which use those files, including future
+versions of the programs just mentioned and the
+command-line <small>CVS</small> client.
+</p>
+<p>The <samp>CVS</samp> directory contains several files.
+Programs which are reading this directory should
+silently ignore files which are in the directory but
+which are not documented here, to allow for future
+expansion.
+</p>
+<p>The files are stored according to the text file
+convention for the system in question. This means that
+working directories are not portable between systems
+with differing conventions for storing text files.
+This is intentional, on the theory that the files being
+managed by <small>CVS</small> probably will not be portable between
+such systems either.
+</p>
+<dl compact="compact">
+<dt><samp>Root</samp></dt>
+<dd><p>This file contains the current <small>CVS</small> root, as
+described in <a
href="Specifying-a-repository.html#Specifying-a-repository">Specifying a
repository</a>.
+</p>
+<a name="index-Repository-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fRepository-file"></a>
+</dd>
+<dt><samp>Repository</samp></dt>
+<dd><p>This file contains the directory within the repository
+which the current directory corresponds with. It can
+be either an absolute pathname or a relative pathname;
+<small>CVS</small> has had the ability to read either format
+since at least version 1.3 or so. The relative
+pathname is relative to the root, and is the more
+sensible approach, but the absolute pathname is quite
+common and implementations should accept either. For
+example, after the command
+</p>
+<div class="example">
+<pre class="example">cvs -d :local:/usr/local/cvsroot checkout yoyodyne/tc
+</pre></div>
+
+<p><samp>Root</samp> will contain
+</p>
+<div class="example">
+<pre class="example">:local:/usr/local/cvsroot
+</pre></div>
+
+<p>and <samp>Repository</samp> will contain either
+</p>
+<div class="example">
+<pre class="example">/usr/local/cvsroot/yoyodyne/tc
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">yoyodyne/tc
+</pre></div>
+
+<p>If the particular working directory does not correspond
+to a directory in the repository, then <samp>Repository</samp>
+should contain <samp>CVSROOT/Emptydir</samp>.
+<a name="index-Emptydir_002c-in-CVSROOT-directory"></a>
+<a name="index-CVSROOT_002fEmptydir-directory"></a>
+</p>
+<a name="index-Entries-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries-file"></a>
+</dd>
+<dt><samp>Entries</samp></dt>
+<dd><p>This file lists the files and directories in the
+working directory.
+The first character of each line indicates what sort of
+line it is. If the character is unrecognized, programs
+reading the file should silently skip that line, to
+allow for future expansion.
+</p>
+<p>If the first character is ‘<samp>/</samp>’, then the format is:
+</p>
+<div class="example">
+<pre
class="example">/<var>name</var>/<var>revision</var>/<var>timestamp</var>[+<var>conflict</var>]/<var>options</var>/<var>tagdate</var>
+</pre></div>
+
+<p>where ‘<samp>[</samp>’ and ‘<samp>]</samp>’ are not
part of the entry,
+but instead indicate that the ‘<samp>+</samp>’ and conflict
+marker are optional. <var>name</var> is the name of the
+file within the directory. <var>revision</var> is the
+revision that the file in the working derives from, or
+‘<samp>0</samp>’ for an added file, or
‘<samp>-</samp>’ followed by a
+revision for a removed file. <var>timestamp</var> is the
+timestamp of the file at the time that <small>CVS</small> created
+it; if the timestamp differs with the actual
+modification time of the file it means the file has
+been modified. It is stored in
+the format used by the ISO C asctime() function (for
+example, ‘<samp>Sun Apr 7 01:29:26 1996</samp>’). One may
+write a string which is not in that format, for
+example, ‘<samp>Result of merge</samp>’, to indicate that the
+file should always be considered to be modified. This
+is not a special case; to see whether a file is
+modified a program should take the timestamp of the file
+and simply do a string compare with <var>timestamp</var>.
+If there was a conflict, <var>conflict</var> can be set to
+the modification time of the file after the file has been
+written with conflict markers (see <a
href="Conflicts-example.html#Conflicts-example">Conflicts example</a>).
+Thus if <var>conflict</var> is subsequently the same as the actual
+modification time of the file it means that the user
+has obviously not resolved the conflict. <var>options</var>
+contains sticky options (for example ‘<samp>-kb</samp>’ for a
+binary file). <var>tagdate</var> contains ‘<samp>T</samp>’
followed
+by a tag name, or ‘<samp>D</samp>’ for a date, followed by a
+sticky tag or date. Note that if <var>timestamp</var>
+contains a pair of timestamps separated by a space,
+rather than a single timestamp, you are dealing with a
+version of <small>CVS</small> earlier than <small>CVS</small> 1.5 (not
+documented here).
+</p>
+<p>The timezone on the timestamp in CVS/Entries (local or
+universal) should be the same as the operating system
+stores for the timestamp of the file itself. For
+example, on Unix the file’s timestamp is in universal
+time (UT), so the timestamp in CVS/Entries should be
+too. On <small>VMS</small>, the file’s timestamp is in local
+time, so <small>CVS</small> on <small>VMS</small> should use local time.
+This rule is so that files do not appear to be modified
+merely because the timezone changed (for example, to or
+from summer time).
+</p>
+<p>If the first character of a line in <samp>Entries</samp> is
+‘<samp>D</samp>’, then it indicates a subdirectory.
‘<samp>D</samp>’
+on a line all by itself indicates that the program
+which wrote the <samp>Entries</samp> file does record
+subdirectories (therefore, if there is such a line and
+no other lines beginning with ‘<samp>D</samp>’, one knows there
+are no subdirectories). Otherwise, the line looks
+like:
+</p>
+<div class="example">
+<pre
class="example">D/<var>name</var>/<var>filler1</var>/<var>filler2</var>/<var>filler3</var>/<var>filler4</var>
+</pre></div>
+
+<p>where <var>name</var> is the name of the subdirectory, and
+all the <var>filler</var> fields should be silently ignored,
+for future expansion. Programs which modify
+<code>Entries</code> files should preserve these fields.
+</p>
+<p>The lines in the <samp>Entries</samp> file can be in any order.
+</p>
+<a name="index-Entries_002eLog-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eLog-file"></a>
+</dd>
+<dt><samp>Entries.Log</samp></dt>
+<dd><p>This file does not record any information beyond that
+in <samp>Entries</samp>, but it does provide a way to update
+the information without having to rewrite the entire
+<samp>Entries</samp> file, including the ability to preserve
+the information even if the program writing
+<samp>Entries</samp> and <samp>Entries.Log</samp> abruptly aborts.
+Programs which are reading the <samp>Entries</samp> file
+should also check for <samp>Entries.Log</samp>. If the latter
+exists, they should read <samp>Entries</samp> and then apply
+the changes mentioned in <samp>Entries.Log</samp>. After
+applying the changes, the recommended practice is to
+rewrite <samp>Entries</samp> and then delete <samp>Entries.Log</samp>.
+The format of a line in <samp>Entries.Log</samp> is a single
+character command followed by a space followed by a
+line in the format specified for a line in
+<samp>Entries</samp>. The single character command is
+‘<samp>A</samp>’ to indicate that the entry is being added,
+‘<samp>R</samp>’ to indicate that the entry is being removed,
+or any other character to indicate that the entire line
+in <samp>Entries.Log</samp> should be silently ignored (for
+future expansion). If the second character of the line
+in <samp>Entries.Log</samp> is not a space, then it was
+written by an older version of <small>CVS</small> (not documented
+here).
+</p>
+<p>Programs which are writing rather than reading can
+safely ignore <samp>Entries.Log</samp> if they so choose.
+</p>
+<a name="index-Entries_002eBackup-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eBackup-file"></a>
+</dd>
+<dt><samp>Entries.Backup</samp></dt>
+<dd><p>This is a temporary file. Recommended usage is to
+write a new entries file to <samp>Entries.Backup</samp>, and
+then to rename it (atomically, where possible) to <samp>Entries</samp>.
+</p>
+<a name="index-Entries_002eStatic-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fEntries_002eStatic-file"></a>
+</dd>
+<dt><samp>Entries.Static</samp></dt>
+<dd><p>The only relevant thing about this file is whether it
+exists or not. If it exists, then it means that only
+part of a directory was gotten and <small>CVS</small> will
+not create additional files in that directory. To
+clear it, use the <code>update</code> command with the
+‘<samp>-d</samp>’ option, which will get the additional files
+and remove <samp>Entries.Static</samp>.
+</p>
+<a name="index-Tag-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fTag-file"></a>
+<a name="index-Sticky-tags_002fdates_002c-per_002ddirectory"></a>
+<a name="index-Per_002ddirectory-sticky-tags_002fdates"></a>
+</dd>
+<dt><samp>Tag</samp></dt>
+<dd><p>This file contains per-directory sticky tags or dates.
+The first character is ‘<samp>T</samp>’ for a branch tag,
+‘<samp>N</samp>’ for a non-branch tag, or
‘<samp>D</samp>’ for a date,
+or another character to mean the file should be
+silently ignored, for future expansion. This character
+is followed by the tag or date. Note that
+per-directory sticky tags or dates are used for things
+like applying to files which are newly added; they
+might not be the same as the sticky tags or dates on
+individual files. For general information on sticky
+tags and dates, see <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a>.
+</p>
+<a name="index-Notify-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fNotify-file"></a>
+</dd>
+<dt><samp>Notify</samp></dt>
+<dd><p>This file stores notifications (for example, for
+<code>edit</code> or <code>unedit</code>) which have not yet been
+sent to the server. Its format is not yet documented
+here.
+</p>
+<a name="index-Notify_002etmp-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fNotify_002etmp-file"></a>
+</dd>
+<dt><samp>Notify.tmp</samp></dt>
+<dd><p>This file is to <samp>Notify</samp> as <samp>Entries.Backup</samp>
+is to <samp>Entries</samp>. That is, to write <samp>Notify</samp>,
+first write the new contents to <samp>Notify.tmp</samp> and
+then (atomically where possible), rename it to
+<samp>Notify</samp>.
+</p>
+<a name="index-Base-directory_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBase-directory"></a>
+</dd>
+<dt><samp>Base</samp></dt>
+<dd><p>If watches are in use, then an <code>edit</code> command
+stores the original copy of the file in the <samp>Base</samp>
+directory. This allows the <code>unedit</code> command to
+operate even if it is unable to communicate with the
+server.
+</p>
+<a name="index-Baserev-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBaserev-file"></a>
+</dd>
+<dt><samp>Baserev</samp></dt>
+<dd><p>The file lists the revision for each of the files in
+the <samp>Base</samp> directory. The format is:
+</p>
+<div class="example">
+<pre class="example">B<var>name</var>/<var>rev</var>/<var>expansion</var>
+</pre></div>
+
+<p>where <var>expansion</var> should be ignored, to allow for
+future expansion.
+</p>
+<a name="index-Baserev_002etmp-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fBaserev_002etmp-file"></a>
+</dd>
+<dt><samp>Baserev.tmp</samp></dt>
+<dd><p>This file is to <samp>Baserev</samp> as <samp>Entries.Backup</samp>
+is to <samp>Entries</samp>. That is, to write <samp>Baserev</samp>,
+first write the new contents to <samp>Baserev.tmp</samp> and
+then (atomically where possible), rename it to
+<samp>Baserev</samp>.
+</p>
+<a name="index-Template-file_002c-in-CVS-directory"></a>
+<a name="index-CVS_002fTemplate-file"></a>
+</dd>
+<dt><samp>Template</samp></dt>
+<dd><p>This file contains the template specified by the
+<samp>rcsinfo</samp> file (see <a href="rcsinfo.html#rcsinfo">rcsinfo</a>).
It is only used
+by the client; the non-client/server <small>CVS</small> consults
+<samp>rcsinfo</samp> directly.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Intro-administrative-files.html#Intro-administrative-files"
accesskey="n" rel="next">Intro administrative files</a>, Previous: <a
href="Repository-storage.html#Repository-storage" accesskey="p"
rel="prev">Repository storage</a>, Up: <a href="Repository.html#Repository"
accesskey="u" rel="up">Repository</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/Wrappers.html
===================================================================
RCS file: html_node/Wrappers.html
diff -N html_node/Wrappers.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/Wrappers.html 28 Dec 2015 15:58:14 -0000 1.1
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Wrappers</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Wrappers">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Wrappers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="Trigger-Scripts.html#Trigger-Scripts" rel="next" title="Trigger
Scripts">
+<link href="Module-program-options.html#Module-program-options" rel="prev"
title="Module program options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="Wrappers"></a>
+<div class="header">
+<p>
+Next: <a href="Trigger-Scripts.html#Trigger-Scripts" accesskey="n"
rel="next">Trigger Scripts</a>, Previous: <a href="modules.html#modules"
accesskey="p" rel="prev">modules</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-cvswrappers-file"></a>
+<h3 class="appendixsec">C.2 The cvswrappers file</h3>
+<a name="index-cvswrappers-_0028admin-file_0029"></a>
+<a name="index-CVSWRAPPERS_002c-environment-variable"></a>
+<a name="index-Wrappers"></a>
+
+
+<p>Wrappers refers to a <small>CVS</small> feature which lets you
+control certain settings based on the name of the file
+which is being operated on. The settings are ‘<samp>-k</samp>’
+for binary files, and ‘<samp>-m</samp>’ for nonmergeable text
+files.
+</p>
+<p>The ‘<samp>-m</samp>’ option
+specifies the merge methodology that should be used when
+a non-binary file is updated. <code>MERGE</code> means the usual
+<small>CVS</small> behavior: try to merge the files. <code>COPY</code>
+means that <code>cvs update</code> will refuse to merge
+files, as it also does for files specified as binary
+with ‘<samp>-kb</samp>’ (but if the file is specified as
+binary, there is no need to specify ‘<samp>-m 'COPY'</samp>’).
+<small>CVS</small> will provide the user with the
+two versions of the files, and require the user using
+mechanisms outside <small>CVS</small>, to insert any necessary
+changes.
+</p>
+<p><strong>WARNING: Do not use <code>COPY</code> with
+<small>CVS</small> 1.9 or earlier - such versions of <small>CVS</small> will
+copy one version of your file over the other, wiping
+out the previous contents.</strong>
+The ‘<samp>-m</samp>’ wrapper option only affects behavior when
+merging is done on update; it does not affect how files
+are stored. See <a href="Binary-files.html#Binary-files">Binary files</a>,
for more on
+binary files.
+</p>
+<p>The basic format of the file <samp>cvswrappers</samp> is:
+</p>
+<div class="example">
+<pre class="example">wildcard [option value][option value]...
+
+where option is one of
+-m update methodology value: MERGE or COPY
+-k keyword expansion value: expansion mode
+
+and value is a single-quote delimited value.
+</pre></div>
+
+
+<p>For example, the following command imports a
+directory, treating files whose name ends in
+‘<samp>.exe</samp>’ as binary:
+</p>
+<div class="example">
+<pre class="example">cvs import -I ! -W "*.exe -k 'b'" first-dir
vendortag reltag
+</pre></div>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Trigger-Scripts.html#Trigger-Scripts" accesskey="n"
rel="next">Trigger Scripts</a>, Previous: <a href="modules.html#modules"
accesskey="p" rel="prev">modules</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/_007e_002f_002ecvsrc.html
===================================================================
RCS file: html_node/_007e_002f_002ecvsrc.html
diff -N html_node/_007e_002f_002ecvsrc.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/_007e_002f_002ecvsrc.html 28 Dec 2015 15:58:14 -0000 1.1
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: ~/.cvsrc</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: ~/.cvsrc">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
~/.cvsrc">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="Global-options.html#Global-options" rel="next" title="Global
options">
+<link href="Exit-status.html#Exit-status" rel="prev" title="Exit status">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="g_t_007e_002f_002ecvsrc"></a>
+<div class="header">
+<p>
+Next: <a href="Global-options.html#Global-options" accesskey="n"
rel="next">Global options</a>, Previous: <a href="Exit-status.html#Exit-status"
accesskey="p" rel="prev">Exit status</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Default-options-and-the-_007e_002f_002ecvsrc-file"></a>
+<h3 class="appendixsec">A.3 Default options and the ~/.cvsrc file</h3>
+<a name="index-_002ecvsrc-file"></a>
+<a name="index-Option-defaults"></a>
+
+<p>There are some <code>command_options</code> that are used so
+often that you might have set up an alias or some other
+means to make sure you always specify that option. One
+example (the one that drove the implementation of the
+<samp>.cvsrc</samp> support, actually) is that many people find the
+default output of the ‘<samp>diff</samp>’ command to be very
+hard to read, and that either context diffs or unidiffs
+are much easier to understand.
+</p>
+<p>The <samp>~/.cvsrc</samp> file is a way that you can add
+default options to <code>cvs_commands</code> within cvs,
+instead of relying on aliases or other shell scripts.
+</p>
+<p>The format of the <samp>~/.cvsrc</samp> file is simple. The
+file is searched for a line that begins with the same
+name as the <code>cvs_command</code> being executed. If a
+match is found, then the remainder of the line is split
+up (at whitespace characters) into separate options and
+added to the command arguments <em>before</em> any
+options from the command line.
+</p>
+<p>If a command has two names (e.g., <code>checkout</code> and
+<code>co</code>), the official name, not necessarily the one
+used on the command line, will be used to match against
+the file. So if this is the contents of the user’s
+<samp>~/.cvsrc</samp> file:
+</p>
+<div class="example">
+<pre class="example">log -N
+diff -uN
+rdiff -u
+update -Pd
+checkout -P
+release -d
+</pre></div>
+
+<p>the command ‘<samp>cvs checkout foo</samp>’ would have the
+‘<samp>-P</samp>’ option added to the arguments, as well as
+‘<samp>cvs co foo</samp>’.
+</p>
+<p>With the example file above, the output from ‘<samp>cvs
+diff foobar</samp>’ will be in unidiff format. ‘<samp>cvs diff
+-c foobar</samp>’ will provide context diffs, as usual.
+Getting "old" format diffs would be slightly more
+complicated, because <code>diff</code> doesn’t have an option
+to specify use of the "old" format, so you would need
+‘<samp>cvs -f diff foobar</samp>’.
+</p>
+<p>In place of the command name you can use <code>cvs</code> to
+specify global options (see <a
href="Global-options.html#Global-options">Global options</a>). For
+example the following line in <samp>.cvsrc</samp>
+</p>
+<div class="example">
+<pre class="example">cvs -z6
+</pre></div>
+
+<p>causes <small>CVS</small> to use compression level 6.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Global-options.html#Global-options" accesskey="n"
rel="next">Global options</a>, Previous: <a href="Exit-status.html#Exit-status"
accesskey="p" rel="prev">Exit status</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/add-examples.html
===================================================================
RCS file: html_node/add-examples.html
diff -N html_node/add-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/add-examples.html 28 Dec 2015 15:58:14 -0000 1.1
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: add examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: add examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
add examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="add.html#add" rel="up" title="add">
+<link href="admin.html#admin" rel="next" title="admin">
+<link href="add-options.html#add-options" rel="prev" title="add options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="add-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="add-options.html#add-options" accesskey="p" rel="prev">add
options</a>, Up: <a href="add.html#add" accesskey="u" rel="up">add</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="add-examples-1"></a>
+<h4 class="appendixsubsec">A.6.2 add examples</h4>
+
+<a name="Adding-a-directory"></a>
+<h4 class="appendixsubsubsec">A.6.2.1 Adding a directory</h4>
+
+<div class="example">
+<pre class="example">$ mkdir doc
+$ cvs add doc
+Directory /path/to/repository/doc added to the repository
+</pre></div>
+
+<a name="Adding-a-file"></a>
+<h4 class="appendixsubsubsec">A.6.2.2 Adding a file</h4>
+
+<div class="example">
+<pre class="example">
+$ >TODO
+$ cvs add TODO
+cvs add: scheduling file `TODO' for addition
+cvs add: use 'cvs commit' to add this file permanently
+</pre></div>
+
+<a name="Undoing-a-remove-command"></a>
+<h4 class="appendixsubsubsec">A.6.2.3 Undoing a <code>remove</code>
command</h4>
+
+<div class="example">
+<pre class="example">$ rm -f makefile
+$ cvs remove makefile
+cvs remove: scheduling `makefile' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+$ cvs add makefile
+U makefile
+cvs add: makefile, version 1.2, resurrected
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/add-options.html
===================================================================
RCS file: html_node/add-options.html
diff -N html_node/add-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/add-options.html 28 Dec 2015 15:58:14 -0000 1.1
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: add options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: add options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
add options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="add.html#add" rel="up" title="add">
+<link href="add-examples.html#add-examples" rel="next" title="add examples">
+<link href="add.html#add" rel="prev" title="add">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="add-options"></a>
+<div class="header">
+<p>
+Next: <a href="add-examples.html#add-examples" accesskey="n" rel="next">add
examples</a>, Up: <a href="add.html#add" accesskey="u" rel="up">add</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="add-options-1"></a>
+<h4 class="appendixsubsec">A.6.1 add options</h4>
+
+<p>These standard options are supported by <code>add</code>
+(see <a href="Common-options.html#Common-options">Common options</a>, for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. For more information on
+the <code>status</code> command, See <a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>.
+</p>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as the log message, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/add.html
===================================================================
RCS file: html_node/add.html
diff -N html_node/add.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/add.html 28 Dec 2015 15:58:14 -0000 1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: add</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: add">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
add">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="add-options.html#add-options" rel="next" title="add options">
+<link href="Common-options.html#Common-options" rel="prev" title="Common
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="add"></a>
+<div class="header">
+<p>
+Next: <a href="admin.html#admin" accesskey="n" rel="next">admin</a>, Previous:
<a href="Common-options.html#Common-options" accesskey="p" rel="prev">Common
options</a>, Up: <a href="CVS-commands.html#CVS-commands" accesskey="u"
rel="up">CVS commands</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="add_002d_002d_002dAdd-files-and-directories-to-the-repository"></a>
+<h3 class="appendixsec">A.6 add—Add files and directories to the
repository</h3>
+<a name="index-add-_0028subcommand_0029-1"></a>
+
+<ul>
+<li> Synopsis: add [-k rcs-kflag] [-m message] files...
+</li><li> Requires: repository, working directory.
+</li><li> Changes: repository, working directory.
+</li></ul>
+
+<p>The <code>add</code> command is used to present new files
+and directories for addition into the <small>CVS</small>
+repository. When <code>add</code> is used on a directory,
+a new directory is created in the repository
+immediately. When used on a file, only the working
+directory is updated. Changes to the repository are
+not made until the <code>commit</code> command is used on
+the newly added file.
+</p>
+<p>The <code>add</code> command also resurrects files that
+have been previously removed. This can be done
+before or after the <code>commit</code> command is used
+to finalize the removal of files. Resurrected files
+are restored into the working directory at the time
+the <code>add</code> command is executed.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="add-options.html#add-options" accesskey="1">add
options</a>:</td><td> </td><td align="left" valign="top">add options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="add-examples.html#add-examples" accesskey="2">add
examples</a>:</td><td> </td><td align="left" valign="top">add
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/admin-options.html
===================================================================
RCS file: html_node/admin-options.html
diff -N html_node/admin-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/admin-options.html 28 Dec 2015 15:58:15 -0000 1.1
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: admin options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: admin options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
admin options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="admin.html#admin" rel="up" title="admin">
+<link href="annotate.html#annotate" rel="next" title="annotate">
+<link href="admin.html#admin" rel="prev" title="admin">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="admin-options"></a>
+<div class="header">
+<p>
+Up: <a href="admin.html#admin" accesskey="u" rel="up">admin</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="admin-options-1"></a>
+<h4 class="appendixsubsec">A.7.1 admin options</h4>
+
+<p>Some of these options have questionable usefulness for
+<small>CVS</small> but exist for historical purposes. Some even
+make it impossible to use <small>CVS</small> until you undo the
+effect!
+</p>
+<dl compact="compact">
+<dt><code>-A<var>oldfile</var></code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Append the
+access list of <var>oldfile</var> to the access list of the
+<small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-a<var>logins</var></code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Append the
+login names appearing in the comma-separated list
+<var>logins</var> to the access list of the <small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-b[<var>rev</var>]</code></dt>
+<dd><p>Set the default branch to <var>rev</var>. In <small>CVS</small>, you
+normally do not manipulate default branches; sticky
+tags (see <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a>) are a better
way to decide
+which branch you want to work on. There is one reason
+to run <code>cvs admin -b</code>: to revert to the vendor’s
+version when using vendor branches (see <a
href="Reverting-local-changes.html#Reverting-local-changes">Reverting local
changes</a>).
+There can be no space between ‘<samp>-b</samp>’ and its argument.
+</p>
+<a name="index-Comment-leader"></a>
+</dd>
+<dt><code>-c<var>string</var></code></dt>
+<dd><p>Sets the comment leader to <var>string</var>. The comment
+leader is not used by current versions of <small>CVS</small> or
+<small>RCS</small> 5.7. Therefore, you can almost surely not
+worry about it. See <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>.
+</p>
+</dd>
+<dt><code>-e[<var>logins</var>]</code></dt>
+<dd><p>Might not work together with <small>CVS</small>. Erase the login
+names appearing in the comma-separated list
+<var>logins</var> from the access list of the RCS file. If
+<var>logins</var> is omitted, erase the entire access list.
+There can be no space between ‘<samp>-e</samp>’ and its argument.
+</p>
+</dd>
+<dt><code>-I</code></dt>
+<dd><p>Run interactively, even if the standard input is not a
+terminal. This option does not work with the
+client/server <small>CVS</small> and is likely to disappear in
+a future release of <small>CVS</small>.
+</p>
+</dd>
+<dt><code>-i</code></dt>
+<dd><p>Useless with <small>CVS</small>. This creates and initializes a
+new <small>RCS</small> file, without depositing a revision. With
+<small>CVS</small>, add files with the <code>cvs add</code> command
+(see <a href="Adding-files.html#Adding-files">Adding files</a>).
+</p>
+</dd>
+<dt><code>-k<var>subst</var></code></dt>
+<dd><p>Set the default keyword
+substitution to <var>subst</var>. See <a
href="Keyword-substitution.html#Keyword-substitution">Keyword substitution</a>.
Giving an explicit ‘<samp>-k</samp>’ option to
+<code>cvs update</code>, <code>cvs export</code>, or <code>cvs
+checkout</code> overrides this default.
+</p>
+</dd>
+<dt><code>-l[<var>rev</var>]</code></dt>
+<dd><p>Lock the revision with number <var>rev</var>. If a branch
+is given, lock the latest revision on that branch. If
+<var>rev</var> is omitted, lock the latest revision on the
+default branch. There can be no space between
+‘<samp>-l</samp>’ and its argument.
+</p>
+<p>This can be used in conjunction with the
+<samp>rcslock.pl</samp> script in the <samp>contrib</samp>
+directory of the <small>CVS</small> source distribution to
+provide reserved checkouts (where only one user can be
+editing a given file at a time). See the comments in
+that file for details (and see the <samp>README</samp> file
+in that directory for disclaimers about the unsupported
+nature of contrib). According to comments in that
+file, locking must set to strict (which is the default).
+</p>
+</dd>
+<dt><code>-L</code></dt>
+<dd><p>Set locking to strict. Strict locking means that the
+owner of an RCS file is not exempt from locking for
+checkin. For use with <small>CVS</small>, strict locking must be
+set; see the discussion under the ‘<samp>-l</samp>’ option above.
+</p>
+<a name="index-Changing-a-log-message"></a>
+<a name="index-Replacing-a-log-message"></a>
+<a name="index-Correcting-a-log-message"></a>
+<a name="index-Fixing-a-log-message"></a>
+<a name="index-Log-message_002c-correcting"></a>
+</dd>
+<dt><code>-m<var>rev</var>:<var>msg</var></code></dt>
+<dd><p>Replace the log message of revision <var>rev</var> with
+<var>msg</var>.
+</p>
+
+</dd>
+<dt><code>-N<var>name</var>[:[<var>rev</var>]]</code></dt>
+<dd><p>Act like ‘<samp>-n</samp>’, except override any previous
+assignment of <var>name</var>. For use with magic branches,
+see <a href="Magic-branch-numbers.html#Magic-branch-numbers">Magic branch
numbers</a>.
+</p>
+</dd>
+<dt><code>-n<var>name</var>[:[<var>rev</var>]]</code></dt>
+<dd><p>Associate the symbolic name <var>name</var> with the branch
+or revision <var>rev</var>. It is normally better to use
+‘<samp>cvs tag</samp>’ or ‘<samp>cvs rtag</samp>’
instead. Delete the
+symbolic name if both ‘<samp>:</samp>’ and <var>rev</var> are
+omitted; otherwise, print an error message if
+<var>name</var> is already associated with another number.
+If <var>rev</var> is symbolic, it is expanded before
+association. A <var>rev</var> consisting of a branch number
+followed by a ‘<samp>.</samp>’ stands for the current latest
+revision in the branch. A ‘<samp>:</samp>’ with an empty
+<var>rev</var> stands for the current latest revision on the
+default branch, normally the trunk. For example,
+‘<samp>cvs admin -n<var>name</var>:</samp>’ associates
<var>name</var> with the
+current latest revision of all the RCS files;
+this contrasts with ‘<samp>cvs admin -n<var>name</var>:$</samp>’
which
+associates <var>name</var> with the revision numbers
+extracted from keyword strings in the corresponding
+working files.
+</p>
+<a name="index-Deleting-revisions"></a>
+<a name="index-Outdating-revisions"></a>
+<a name="index-Saving-space"></a>
+</dd>
+<dt><code>-o<var>range</var></code></dt>
+<dd><p>Deletes (<em>outdates</em>) the revisions given by
+<var>range</var>.
+</p>
+<p>Note that this command can be quite dangerous unless
+you know <em>exactly</em> what you are doing (for example
+see the warnings below about how the
+<var>rev1</var>:<var>rev2</var> syntax is confusing).
+</p>
+<p>If you are short on disc this option might help you.
+But think twice before using it—there is no way short
+of restoring the latest backup to undo this command!
+If you delete different revisions than you planned,
+either due to carelessness or (heaven forbid) a <small>CVS</small>
+bug, there is no opportunity to correct the error
+before the revisions are deleted. It probably would be
+a good idea to experiment on a copy of the repository
+first.
+</p>
+<p>Specify <var>range</var> in one of the following ways:
+</p>
+<dl compact="compact">
+<dt><code><var>rev1</var>::<var>rev2</var></code></dt>
+<dd><p>Collapse all revisions between rev1 and rev2, so that
+<small>CVS</small> only stores the differences associated with going
+from rev1 to rev2, not intermediate steps. For
+example, after ‘<samp>-o 1.3::1.5</samp>’ one can retrieve
+revision 1.3, revision 1.5, or the differences to get
+from 1.3 to 1.5, but not the revision 1.4, or the
+differences between 1.3 and 1.4. Other examples:
+‘<samp>-o 1.3::1.4</samp>’ and ‘<samp>-o
1.3::1.3</samp>’ have no
+effect, because there are no intermediate revisions to
+remove.
+</p>
+</dd>
+<dt><code>::<var>rev</var></code></dt>
+<dd><p>Collapse revisions between the beginning of the branch
+containing <var>rev</var> and <var>rev</var> itself. The
+branchpoint and <var>rev</var> are left intact. For
+example, ‘<samp>-o ::1.3.2.6</samp>’ deletes revision 1.3.2.1,
+revision 1.3.2.5, and everything in between, but leaves
+1.3 and 1.3.2.6 intact.
+</p>
+</dd>
+<dt><code><var>rev</var>::</code></dt>
+<dd><p>Collapse revisions between <var>rev</var> and the end of the
+branch containing <var>rev</var>. Revision <var>rev</var> is
+left intact but the head revision is deleted.
+</p>
+</dd>
+<dt><code><var>rev</var></code></dt>
+<dd><p>Delete the revision <var>rev</var>. For example, ‘<samp>-o
+1.3</samp>’ is equivalent to ‘<samp>-o 1.2::1.4</samp>’.
+</p>
+</dd>
+<dt><code><var>rev1</var>:<var>rev2</var></code></dt>
+<dd><p>Delete the revisions from <var>rev1</var> to <var>rev2</var>,
+inclusive, on the same branch. One will not be able to
+retrieve <var>rev1</var> or <var>rev2</var> or any of the
+revisions in between. For example, the command
+‘<samp>cvs admin -oR_1_01:R_1_02 .</samp>’ is rarely useful.
+It means to delete revisions up to, and including, the
+tag R_1_02. But beware! If there are files that have not
+changed between R_1_02 and R_1_03 the file will have
+<em>the same</em> numerical revision number assigned to
+the tags R_1_02 and R_1_03. So not only will it be
+impossible to retrieve R_1_02; R_1_03 will also have to
+be restored from the tapes! In most cases you want to
+specify <var>rev1</var>::<var>rev2</var> instead.
+</p>
+</dd>
+<dt><code>:<var>rev</var></code></dt>
+<dd><p>Delete revisions from the beginning of the
+branch containing <var>rev</var> up to and including
+<var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>:</code></dt>
+<dd><p>Delete revisions from revision <var>rev</var>, including
+<var>rev</var> itself, to the end of the branch containing
+<var>rev</var>.
+</p></dd>
+</dl>
+
+<p>None of the revisions to be deleted may have
+branches or locks.
+</p>
+<p>If any of the revisions to be deleted have symbolic
+names, and one specifies one of the ‘<samp>::</samp>’ syntaxes,
+then <small>CVS</small> will give an error and not delete any
+revisions. If you really want to delete both the
+symbolic names and the revisions, first delete the
+symbolic names with <code>cvs tag -d</code>, then run
+<code>cvs admin -o</code>. If one specifies the
+non-‘<samp>::</samp>’ syntaxes, then <small>CVS</small> will
delete the
+revisions but leave the symbolic names pointing to
+nonexistent revisions. This behavior is preserved for
+compatibility with previous versions of <small>CVS</small>, but
+because it isn’t very useful, in the future it may
+change to be like the ‘<samp>::</samp>’ case.
+</p>
+<p>Due to the way <small>CVS</small> handles branches <var>rev</var>
+cannot be specified symbolically if it is a branch.
+See <a href="Magic-branch-numbers.html#Magic-branch-numbers">Magic branch
numbers</a> for an explanation.
+</p>
+<p>Make sure that no-one has checked out a copy of the
+revision you outdate. Strange things will happen if he
+starts to edit it and tries to check it back in. For
+this reason, this option is not a good way to take back
+a bogus commit; commit a new revision undoing the bogus
+change instead (see <a
href="Merging-two-revisions.html#Merging-two-revisions">Merging two
revisions</a>).
+</p>
+</dd>
+<dt><code>-q</code></dt>
+<dd><p>Run quietly; do not print diagnostics.
+</p>
+</dd>
+<dt><code>-s<var>state</var>[:<var>rev</var>]</code></dt>
+<dd><p>Useful with <small>CVS</small>. Set the state attribute of the
+revision <var>rev</var> to <var>state</var>. If <var>rev</var> is a
+branch number, assume the latest revision on that
+branch. If <var>rev</var> is omitted, assume the latest
+revision on the default branch. Any identifier is
+acceptable for <var>state</var>. A useful set of states is
+‘<samp>Exp</samp>’ (for experimental),
‘<samp>Stab</samp>’ (for
+stable), and ‘<samp>Rel</samp>’ (for released). By default,
+the state of a new revision is set to ‘<samp>Exp</samp>’ when
+it is created. The state is visible in the output from
+<var>cvs log</var> (see <a href="log.html#log">log</a>), and in the
+‘<samp>$<i></i>Log$</samp>’ and
‘<samp>$<i></i>State$</samp>’ keywords
+(see <a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>). Note that <small>CVS</small>
+uses the <code>dead</code> state for its own purposes (see <a
href="Attic.html#Attic">Attic</a>); to
+take a file to or from the <code>dead</code> state use
+commands like <code>cvs remove</code> and <code>cvs add</code>
+(see <a href="Adding-and-removing.html#Adding-and-removing">Adding and
removing</a>), not <code>cvs admin -s</code>.
+</p>
+</dd>
+<dt><code>-t[<var>file</var>]</code></dt>
+<dd><p>Useful with <small>CVS</small>. Write descriptive text from the
+contents of the named <var>file</var> into the RCS file,
+deleting the existing text. The <var>file</var> pathname
+may not begin with ‘<samp>-</samp>’. The descriptive text can be
seen in the
+output from ‘<samp>cvs log</samp>’ (see <a
href="log.html#log">log</a>).
+There can be no space between ‘<samp>-t</samp>’ and its argument.
+</p>
+<p>If <var>file</var> is omitted,
+obtain the text from standard input, terminated by
+end-of-file or by a line containing ‘<samp>.</samp>’ by itself.
+Prompt for the text if interaction is possible; see
+‘<samp>-I</samp>’.
+</p>
+</dd>
+<dt><code>-t-<var>string</var></code></dt>
+<dd><p>Similar to ‘<samp>-t<var>file</var></samp>’. Write
descriptive text
+from the <var>string</var> into the <small>RCS</small> file, deleting
+the existing text.
+There can be no space between ‘<samp>-t</samp>’ and its argument.
+</p>
+
+</dd>
+<dt><code>-U</code></dt>
+<dd><p>Set locking to non-strict. Non-strict locking means
+that the owner of a file need not lock a revision for
+checkin. For use with <small>CVS</small>, strict locking must be
+set; see the discussion under the ‘<samp>-l</samp>’ option
+above.
+</p>
+</dd>
+<dt><code>-u[<var>rev</var>]</code></dt>
+<dd><p>See the option ‘<samp>-l</samp>’ above, for a discussion of
+using this option with <small>CVS</small>. Unlock the revision
+with number <var>rev</var>. If a branch is given, unlock
+the latest revision on that branch. If <var>rev</var> is
+omitted, remove the latest lock held by the caller.
+Normally, only the locker of a revision may unlock it;
+somebody else unlocking a revision breaks the lock.
+This causes the original locker to be sent a <code>commit</code>
+notification (see <a href="Getting-Notified.html#Getting-Notified">Getting
Notified</a>).
+There can be no space between ‘<samp>-u</samp>’ and its argument.
+</p>
+</dd>
+<dt><code>-V<var>n</var></code></dt>
+<dd><p>In previous versions of <small>CVS</small>, this option meant to
+write an <small>RCS</small> file which would be acceptable to
+<small>RCS</small> version <var>n</var>, but it is now obsolete and
+specifying it will produce an error.
+</p>
+</dd>
+<dt><code>-x<var>suffixes</var></code></dt>
+<dd><p>In previous versions of <small>CVS</small>, this was documented
+as a way of specifying the names of the <small>RCS</small>
+files. However, <small>CVS</small> has always required that the
+<small>RCS</small> files used by <small>CVS</small> end in
‘<samp>,v</samp>’, so
+this option has never done anything useful.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Up: <a href="admin.html#admin" accesskey="u" rel="up">admin</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/admin.html
===================================================================
RCS file: html_node/admin.html
diff -N html_node/admin.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/admin.html 28 Dec 2015 15:58:15 -0000 1.1
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: admin</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: admin">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
admin">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="admin-options.html#admin-options" rel="next" title="admin options">
+<link href="add-examples.html#add-examples" rel="prev" title="add examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="admin"></a>
+<div class="header">
+<p>
+Next: <a href="annotate.html#annotate" accesskey="n" rel="next">annotate</a>,
Previous: <a href="add.html#add" accesskey="p" rel="prev">add</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="admin_002d_002d_002dAdministration"></a>
+<h3 class="appendixsec">A.7 admin—Administration</h3>
+<a name="index-Admin-_0028subcommand_0029"></a>
+
+<ul>
+<li> Requires: repository, working directory.
+</li><li> Changes: repository.
+</li><li> Synonym: rcs
+</li></ul>
+
+<p>This is the <small>CVS</small> interface to assorted
+administrative facilities. Some of them have
+questionable usefulness for <small>CVS</small> but exist for
+historical purposes. Some of the questionable options
+are likely to disappear in the future. This command
+<em>does</em> work recursively, so extreme care should be
+used.
+</p>
+<a name="index-cvsadmin"></a>
+<p>On unix, if there is a group named <code>cvsadmin</code>,
+only members of that group can run <code>cvs admin</code>
+(except for the <code>cvs admin -k</code> command, which can
+be run by anybody). This group should exist on the
+server, or any system running the non-client/server
+<small>CVS</small>. To disallow <code>cvs admin</code> for all users,
+create a group with no users in it. On NT, the
+<code>cvsadmin</code> feature does not exist and all users
+can run <code>cvs admin</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="admin-options.html#admin-options" accesskey="1">admin
options</a>:</td><td> </td><td align="left" valign="top">admin
options
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/annotate-example.html
===================================================================
RCS file: html_node/annotate-example.html
diff -N html_node/annotate-example.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/annotate-example.html 28 Dec 2015 15:58:15 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: annotate example</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: annotate example">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
annotate example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="annotate.html#annotate" rel="up" title="annotate">
+<link href="checkout.html#checkout" rel="next" title="checkout">
+<link href="annotate-options.html#annotate-options" rel="prev" title="annotate
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="annotate-example"></a>
+<div class="header">
+<p>
+Previous: <a href="annotate-options.html#annotate-options" accesskey="p"
rel="prev">annotate options</a>, Up: <a href="annotate.html#annotate"
accesskey="u" rel="up">annotate</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="annotate-example-1"></a>
+<h4 class="appendixsubsec">A.8.2 annotate example</h4>
+
+<p>For example:
+</p>
+<div class="example">
+<pre class="example">$ cvs annotate ssfile
+Annotations for ssfile
+***************
+1.1 (mary 27-Mar-96): ssfile line 1
+1.2 (joe 28-Mar-96): ssfile line 2
+</pre></div>
+
+<p>The file <samp>ssfile</samp> currently contains two lines.
+The <code>ssfile line 1</code> line was checked in by
+<code>mary</code> on March 27. Then, on March 28, <code>joe</code>
+added a line <code>ssfile line 2</code>, without modifying
+the <code>ssfile line 1</code> line. This report doesn’t
+tell you anything about lines which have been deleted
+or replaced; you need to use <code>cvs diff</code> for that
+(see <a href="diff.html#diff">diff</a>).
+</p>
+<p>The options to <code>cvs annotate</code> are listed in
+<a href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a>, and can be used to
select the files
+and revisions to annotate. The options are described
+in more detail there and in <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+
+
+
+
+
+</body>
+</html>
Index: html_node/annotate-options.html
===================================================================
RCS file: html_node/annotate-options.html
diff -N html_node/annotate-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/annotate-options.html 28 Dec 2015 15:58:15 -0000 1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: annotate options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: annotate options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
annotate options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="annotate.html#annotate" rel="up" title="annotate">
+<link href="annotate-example.html#annotate-example" rel="next" title="annotate
example">
+<link href="annotate.html#annotate" rel="prev" title="annotate">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="annotate-options"></a>
+<div class="header">
+<p>
+Next: <a href="annotate-example.html#annotate-example" accesskey="n"
rel="next">annotate example</a>, Up: <a href="annotate.html#annotate"
accesskey="u" rel="up">annotate</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="annotate-options-1"></a>
+<h4 class="appendixsubsec">A.8.1 annotate options</h4>
+
+<p>These standard options are supported by <code>annotate</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local directory only, no recursion.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Use head revision if tag/date not found.
+</p>
+</dd>
+<dt><code>-F</code></dt>
+<dd><p>Annotate binary files.
+</p>
+</dd>
+<dt><code>-r <var>revision</var></code></dt>
+<dd><p>Annotate file as of specified revision/tag.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Annotate file as of specified date.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/annotate.html
===================================================================
RCS file: html_node/annotate.html
diff -N html_node/annotate.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/annotate.html 28 Dec 2015 15:58:16 -0000 1.1
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: annotate</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: annotate">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
annotate">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="annotate-options.html#annotate-options" rel="next" title="annotate
options">
+<link href="admin-options.html#admin-options" rel="prev" title="admin options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="annotate"></a>
+<div class="header">
+<p>
+Next: <a href="checkout.html#checkout" accesskey="n" rel="next">checkout</a>,
Previous: <a href="admin.html#admin" accesskey="p" rel="prev">admin</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a
name="annotate_002d_002d_002dWhat-revision-modified-each-line-of-a-file_003f"></a>
+<h3 class="appendixsec">A.8 annotate—What revision modified each line of
a file?</h3>
+<a name="index-annotate-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: annotate [options] files…
+</li><li> Requires: repository.
+</li><li> Synonym: blame
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>For each file in <var>files</var>, print the head revision
+of the trunk, together with information on the last
+modification for each line.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="annotate-options.html#annotate-options" accesskey="1">annotate
options</a>:</td><td> </td><td align="left" valign="top">annotate
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="annotate-example.html#annotate-example" accesskey="2">annotate
example</a>:</td><td> </td><td align="left" valign="top">annotate
example
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/checkout-examples.html
===================================================================
RCS file: html_node/checkout-examples.html
diff -N html_node/checkout-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/checkout-examples.html 28 Dec 2015 15:58:16 -0000 1.1
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: checkout examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: checkout examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
checkout examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="checkout.html#checkout" rel="up" title="checkout">
+<link href="commit.html#commit" rel="next" title="commit">
+<link href="checkout-options.html#checkout-options" rel="prev" title="checkout
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="checkout-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="checkout-options.html#checkout-options" accesskey="p"
rel="prev">checkout options</a>, Up: <a href="checkout.html#checkout"
accesskey="u" rel="up">checkout</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="checkout-examples-1"></a>
+<h4 class="appendixsubsec">A.9.2 checkout examples</h4>
+
+<p>Get a copy of the module ‘<samp>tc</samp>’:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout tc
+</pre></div>
+
+<p>Get a copy of the module ‘<samp>tc</samp>’ as it looked one day
+ago:
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -D yesterday tc
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/checkout-options.html
===================================================================
RCS file: html_node/checkout-options.html
diff -N html_node/checkout-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/checkout-options.html 28 Dec 2015 15:58:16 -0000 1.1
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: checkout options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: checkout options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
checkout options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="checkout.html#checkout" rel="up" title="checkout">
+<link href="checkout-examples.html#checkout-examples" rel="next"
title="checkout examples">
+<link href="checkout.html#checkout" rel="prev" title="checkout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="checkout-options"></a>
+<div class="header">
+<p>
+Next: <a href="checkout-examples.html#checkout-examples" accesskey="n"
rel="next">checkout examples</a>, Up: <a href="checkout.html#checkout"
accesskey="u" rel="up">checkout</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="checkout-options-1"></a>
+<h4 class="appendixsubsec">A.9.1 checkout options</h4>
+
+<p>These standard options are supported by <code>checkout</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+This option is sticky, and implies ‘<samp>-P</samp>’. See
+<a href="Sticky-tags.html#Sticky-tags">Sticky tags</a> for more information on
sticky tags/dates.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r
+<var>tag</var></samp>’ flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. See <a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a> for
+more information on the <code>status</code> command.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any checkout program (as specified
+with the ‘<samp>-o</samp>’ option in the modules file;
+see <a href="modules.html#modules">modules</a>).
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a
href="Moving-directories.html#Moving-directories">Moving directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe files to the standard output.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Checkout directories recursively. This option is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>. This option is sticky, and implies
‘<samp>-P</samp>’.
+See <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a>, for more
information on sticky tags/dates.
+</p></dd>
+</dl>
+
+<p>In addition to those, you can use these special command
+options with <code>checkout</code>:
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags, dates, or ‘<samp>-k</samp>’ options.
+Does not reset sticky ‘<samp>-k</samp>’ options on modified files.
+See <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a> for more
information on sticky tags/dates.
+</p>
+</dd>
+<dt><code>-c</code></dt>
+<dd><p>Copy the module file, sorted, to the standard output,
+instead of creating or modifying any files or
+directories in your working directory.
+</p>
+</dd>
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Create a directory called <var>dir</var> for the working
+files, instead of using the module name. In general,
+using this flag is equivalent to using ‘<samp>mkdir
+<var>dir</var>; cd <var>dir</var></samp>’ followed by the checkout
+command without the ‘<samp>-d</samp>’ flag.
+</p>
+<p>There is an important exception, however. It is very
+convenient when checking out a single item to have the
+output appear in a directory that doesn’t contain empty
+intermediate directories. In this case <em>only</em>,
+<small>CVS</small> tries to “shorten” pathnames to avoid those
empty
+directories.
+</p>
+<p>For example, given a module ‘<samp>foo</samp>’ that contains
+the file ‘<samp>bar.c</samp>’, the command ‘<samp>cvs co -d
dir
+foo</samp>’ will create directory ‘<samp>dir</samp>’ and
place
+‘<samp>bar.c</samp>’ inside. Similarly, given a module
+‘<samp>bar</samp>’ which has subdirectory
‘<samp>baz</samp>’ wherein
+there is a file ‘<samp>quux.c</samp>’, the command
‘<samp>cvs co
+-d dir bar/baz</samp>’ will create directory
‘<samp>dir</samp>’ and
+place ‘<samp>quux.c</samp>’ inside.
+</p>
+<p>Using the ‘<samp>-N</samp>’ flag will defeat this behavior.
+Given the same module definitions above, ‘<samp>cvs co
+-N -d dir foo</samp>’ will create directories
‘<samp>dir/foo</samp>’
+and place ‘<samp>bar.c</samp>’ inside, while ‘<samp>cvs co
-N -d
+dir bar/baz</samp>’ will create directories
‘<samp>dir/bar/baz</samp>’
+and place ‘<samp>quux.c</samp>’ inside.
+</p>
+</dd>
+<dt><code>-j <var>tag</var></code></dt>
+<dd><p>With two ‘<samp>-j</samp>’ options, merge changes from the
+revision specified with the first ‘<samp>-j</samp>’ option to
+the revision specified with the second ‘<samp>j</samp>’ option,
+into the working directory.
+</p>
+<p>With one ‘<samp>-j</samp>’ option, merge changes from the
+ancestor revision to the revision specified with the
+‘<samp>-j</samp>’ option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the ‘<samp>-j</samp>’ option.
+</p>
+<p>In addition, each -j option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+‘<samp>-j<var>Symbolic_Tag</var>:<var>Date_Specifier</var></samp>’.
+</p>
+<p>See <a href="Branching-and-merging.html#Branching-and-merging">Branching
and merging</a>.
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Only useful together with ‘<samp>-d <var>dir</var></samp>’.
With
+this option, <small>CVS</small> will not “shorten” module paths
+in your working directory when you check out a single
+module. See the ‘<samp>-d</samp>’ flag for examples and a
+discussion.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Like ‘<samp>-c</samp>’, but include the status of all
modules,
+and sort it by the status string. See <a
href="modules.html#modules">modules</a>, for
+info about the ‘<samp>-s</samp>’ option that is used inside the
+modules file to set the module status.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="checkout-examples.html#checkout-examples" accesskey="n"
rel="next">checkout examples</a>, Up: <a href="checkout.html#checkout"
accesskey="u" rel="up">checkout</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/checkout.html
===================================================================
RCS file: html_node/checkout.html
diff -N html_node/checkout.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/checkout.html 28 Dec 2015 15:58:16 -0000 1.1
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: checkout</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: checkout">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
checkout">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="checkout-options.html#checkout-options" rel="next" title="checkout
options">
+<link href="annotate-example.html#annotate-example" rel="prev" title="annotate
example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="checkout"></a>
+<div class="header">
+<p>
+Next: <a href="commit.html#commit" accesskey="n" rel="next">commit</a>,
Previous: <a href="annotate.html#annotate" accesskey="p"
rel="prev">annotate</a>, Up: <a href="CVS-commands.html#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="checkout_002d_002d_002dCheck-out-sources-for-editing"></a>
+<h3 class="appendixsec">A.9 checkout—Check out sources for editing</h3>
+<a name="index-checkout-_0028subcommand_0029"></a>
+<a name="index-co-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: checkout [options] modules…
+</li><li> Requires: repository.
+</li><li> Changes: working directory.
+</li><li> Synonyms: co, get
+</li></ul>
+
+<p>Create or update a working directory containing copies of the
+source files specified by <var>modules</var>. You must execute
+<code>checkout</code> before using most of the other <small>CVS</small>
+commands, since most of them operate on your working
+directory.
+</p>
+<p>The <var>modules</var> are either
+symbolic names for some
+collection of source directories and files, or paths to
+directories or files in the repository. The symbolic
+names are defined in the ‘<samp>modules</samp>’ file.
+See <a href="modules.html#modules">modules</a>.
+</p>
+<p>Depending on the modules you specify, <code>checkout</code> may
+recursively create directories and populate them with
+the appropriate source files. You can then edit these
+source files at any time (regardless of whether other
+software developers are editing their own copies of the
+sources); update them to include new changes applied by
+others to the source repository; or commit your work as
+a permanent change to the source repository.
+</p>
+<p>Note that <code>checkout</code> is used to create
+directories. The top-level directory created is always
+added to the directory where <code>checkout</code> is
+invoked, and usually has the same name as the specified
+module. In the case of a module alias, the created
+sub-directory may have a different name, but you can be
+sure that it will be a sub-directory, and that
+<code>checkout</code> will show the relative path leading to
+each file as it is extracted into your private work
+area (unless you specify the ‘<samp>-Q</samp>’ global option).
+</p>
+<p>The files created by <code>checkout</code> are created
+read-write, unless the ‘<samp>-r</samp>’ option to
<small>CVS</small>
+(see <a href="Global-options.html#Global-options">Global options</a>) is
specified, the
+<code>CVSREAD</code> environment variable is specified
+(see <a href="Environment-variables.html#Environment-variables">Environment
variables</a>), or a watch is in
+effect for that file (see <a href="Watches.html#Watches">Watches</a>).
+</p>
+<p>Note that running <code>checkout</code> on a directory that was already
+built by a prior <code>checkout</code> is also permitted.
+This is similar to specifying the ‘<samp>-d</samp>’ option
+to the <code>update</code> command in the sense that new
+directories that have been created in the repository
+will appear in your work area.
+However, <code>checkout</code> takes a module name whereas
+<code>update</code> takes a directory name. Also
+to use <code>checkout</code> this way it must be run from the
+top level directory (where you originally ran
+<code>checkout</code> from), so before you run
+<code>checkout</code> to update an existing directory, don’t
+forget to change your directory to the top level
+directory.
+</p>
+<p>For the output produced by the <code>checkout</code> command,
+See <a href="update-output.html#update-output">update output</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="checkout-options.html#checkout-options" accesskey="1">checkout
options</a>:</td><td> </td><td align="left" valign="top">checkout
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="checkout-examples.html#checkout-examples" accesskey="2">checkout
examples</a>:</td><td> </td><td align="left" valign="top">checkout
examples
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="commit.html#commit" accesskey="n" rel="next">commit</a>,
Previous: <a href="annotate.html#annotate" accesskey="p"
rel="prev">annotate</a>, Up: <a href="CVS-commands.html#CVS-commands"
accesskey="u" rel="up">CVS commands</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/checkoutlist.html
===================================================================
RCS file: html_node/checkoutlist.html
diff -N html_node/checkoutlist.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/checkoutlist.html 28 Dec 2015 15:58:17 -0000 1.1
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: checkoutlist</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: checkoutlist">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
checkoutlist">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="history-file.html#history-file" rel="next" title="history file">
+<link href="cvsignore.html#cvsignore" rel="prev" title="cvsignore">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="checkoutlist"></a>
+<div class="header">
+<p>
+Next: <a href="history-file.html#history-file" accesskey="n"
rel="next">history file</a>, Previous: <a href="cvsignore.html#cvsignore"
accesskey="p" rel="prev">cvsignore</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-checkoutlist-file"></a>
+<h3 class="appendixsec">C.8 The checkoutlist file</h3>
+<a name="index-checkoutlist"></a>
+
+<p>It may be helpful to use <small>CVS</small> to maintain your own
+files in the <samp>CVSROOT</samp> directory. For example,
+suppose that you have a script <samp>logcommit.pl</samp>
+which you run by including the following line in the
+<samp>commitinfo</samp> administrative file:
+</p>
+<div class="example">
+<pre class="example">ALL $CVSROOT/CVSROOT/logcommit.pl
+</pre></div>
+
+<p>To maintain <samp>logcommit.pl</samp> with <small>CVS</small> you would
+add the following line to the <samp>checkoutlist</samp>
+administrative file:
+</p>
+<div class="example">
+<pre class="example">logcommit.pl
+</pre></div>
+
+<p>The format of <samp>checkoutlist</samp> is one line for each
+file that you want to maintain using <small>CVS</small>, giving
+the name of the file, followed optionally by more whitespace
+and any error message that should print if the file cannot be
+checked out into CVSROOT after a commit:
+</p>
+<div class="example">
+<pre class="example">logcommit.pl Could not update CVSROOT/logcommit.pl.
+</pre></div>
+
+<p>After setting up <samp>checkoutlist</samp> in this fashion,
+the files listed there will function just like
+<small>CVS</small>’s built-in administrative files. For example,
+when checking in one of the files you should get a
+message such as:
+</p>
+<div class="example">
+<pre class="example">cvs commit: Rebuilding administrative file database
+</pre></div>
+
+<p>and the checked out copy in the <samp>CVSROOT</samp>
+directory should be updated.
+</p>
+<p>Note that listing <samp>passwd</samp> (see <a
href="Password-authentication-server.html#Password-authentication-server">Password
authentication server</a>) in <samp>checkoutlist</samp> is not
+recommended for security reasons.
+</p>
+<p>For information about keeping a checkout out copy in a
+more general context than the one provided by
+<samp>checkoutlist</samp>, see <a
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy">Keeping a
checked out copy</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/commit-examples.html
===================================================================
RCS file: html_node/commit-examples.html
diff -N html_node/commit-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/commit-examples.html 28 Dec 2015 15:58:17 -0000 1.1
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: commit examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: commit examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
commit examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit.html#commit" rel="up" title="commit">
+<link href="diff.html#diff" rel="next" title="diff">
+<link href="commit-options.html#commit-options" rel="prev" title="commit
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="commit-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="commit-options.html#commit-options" accesskey="p"
rel="prev">commit options</a>, Up: <a href="commit.html#commit" accesskey="u"
rel="up">commit</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="commit-examples-1"></a>
+<h4 class="appendixsubsec">A.10.2 commit examples</h4>
+
+
+<a name="Committing-to-a-branch"></a>
+<h4 class="appendixsubsubsec">A.10.2.1 Committing to a branch</h4>
+
+<p>You can commit to a branch revision (one that has an
+even number of dots) with the ‘<samp>-r</samp>’ option. To
+create a branch revision, use the ‘<samp>-b</samp>’ option
+of the <code>rtag</code> or <code>tag</code> commands
+(see <a href="Branching-and-merging.html#Branching-and-merging">Branching and
merging</a>). Then, either <code>checkout</code> or
+<code>update</code> can be used to base your sources on the
+newly created branch. From that point on, all
+<code>commit</code> changes made within these working sources
+will be automatically added to a branch revision,
+thereby not disturbing main-line development in any
+way. For example, if you had to create a patch to the
+1.2 version of the product, even though the 2.0 version
+is already under development, you might do:
+</p>
+<div class="example">
+<pre class="example">$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
+$ cvs checkout -r FCS1_2_Patch product_module
+$ cd product_module
+[[ hack away ]]
+$ cvs commit
+</pre></div>
+
+<p>This works automatically since the ‘<samp>-r</samp>’ option is
+sticky.
+</p>
+<a name="Creating-the-branch-after-editing"></a>
+<h4 class="appendixsubsubsec">A.10.2.2 Creating the branch after editing</h4>
+
+<p>Say you have been working on some extremely
+experimental software, based on whatever revision you
+happened to checkout last week. If others in your
+group would like to work on this software with you, but
+without disturbing main-line development, you could
+commit your change to a new branch. Others can then
+checkout your experimental stuff and utilize the full
+benefit of <small>CVS</small> conflict resolution. The scenario might
+look like:
+</p>
+<div class="example">
+<pre class="example">[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs update -r EXPR1
+$ cvs commit
+</pre></div>
+
+<p>The <code>update</code> command will make the ‘<samp>-r
+EXPR1</samp>’ option sticky on all files. Note that your
+changes to the files will never be removed by the
+<code>update</code> command. The <code>commit</code> will
+automatically commit to the correct branch, because the
+‘<samp>-r</samp>’ is sticky. You could also do like this:
+</p>
+<div class="example">
+<pre class="example">[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs commit -r EXPR1
+</pre></div>
+
+<p>but then, only those files that were changed by you
+will have the ‘<samp>-r EXPR1</samp>’ sticky flag. If you hack
+away, and commit without specifying the ‘<samp>-r EXPR1</samp>’
+flag, some files may accidentally end up on the main
+trunk.
+</p>
+<p>To work with you on the experimental change, others
+would simply do
+</p>
+<div class="example">
+<pre class="example">$ cvs checkout -r EXPR1 whatever_module
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="commit-options.html#commit-options" accesskey="p"
rel="prev">commit options</a>, Up: <a href="commit.html#commit" accesskey="u"
rel="up">commit</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/commit-files.html
===================================================================
RCS file: html_node/commit-files.html
diff -N html_node/commit-files.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/commit-files.html 28 Dec 2015 15:58:17 -0000 1.1
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: commit files</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: commit files">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
commit files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="commitinfo.html#commitinfo" rel="next" title="commitinfo">
+<link href="Trigger-Script-Security.html#Trigger-Script-Security" rel="prev"
title="Trigger Script Security">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="commit-files"></a>
+<div class="header">
+<p>
+Next: <a href="rcsinfo.html#rcsinfo" accesskey="n" rel="next">rcsinfo</a>,
Previous: <a href="Trigger-Scripts.html#Trigger-Scripts" accesskey="p"
rel="prev">Trigger Scripts</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-commit-support-files"></a>
+<h3 class="appendixsec">C.4 The commit support files</h3>
+<a name="index-Committing_002c-administrative-support-files"></a>
+
+<p>There are three kinds of trigger scripts (see <a
href="Trigger-Scripts.html#Trigger-Scripts">Trigger Scripts</a>) that can be
+run at various times during a commit. They are specified in files in the
+repository, as described below. The following table summarizes the
+file names and the purpose of the corresponding programs.
+</p>
+<dl compact="compact">
+<dt><samp>commitinfo</samp></dt>
+<dd><p>The program is responsible for checking that the commit
+is allowed. If it exits with a non-zero exit status
+the commit will be aborted.
+</p>
+</dd>
+<dt><samp>verifymsg</samp></dt>
+<dd><p>The specified program is used to evaluate the log message,
+and possibly verify that it contains all required
+fields. This is most useful in combination with the
+<samp>rcsinfo</samp> file, which can hold a log message
+template (see <a href="rcsinfo.html#rcsinfo">rcsinfo</a>).
+</p>
+</dd>
+<dt><samp>editinfo</samp></dt>
+<dd><p>The specified program is used to edit the log message,
+and possibly verify that it contains all required
+fields. This is most useful in combination with the
+<samp>rcsinfo</samp> file, which can hold a log message
+template (see <a href="rcsinfo.html#rcsinfo">rcsinfo</a>). (obsolete)
+</p>
+</dd>
+<dt><samp>loginfo</samp></dt>
+<dd><p>The specified program is called when the commit is
+complete. It receives the log message and some
+additional information and can store the log message in
+a file, or mail it to appropriate persons, or maybe
+post it to a local newsgroup, or… Your
+imagination is the limit!
+</p></dd>
+</dl>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="commitinfo.html#commitinfo"
accesskey="1">commitinfo</a>:</td><td> </td><td align="left"
valign="top">Pre-commit checking
+</td></tr>
+<tr><td align="left" valign="top">• <a href="verifymsg.html#verifymsg"
accesskey="2">verifymsg</a>:</td><td> </td><td align="left"
valign="top">How are log messages evaluated?
+</td></tr>
+<tr><td align="left" valign="top">• <a href="editinfo.html#editinfo"
accesskey="3">editinfo</a>:</td><td> </td><td align="left"
valign="top">Specifying how log messages are created
+ (obsolete)
+</td></tr>
+<tr><td align="left" valign="top">• <a href="loginfo.html#loginfo"
accesskey="4">loginfo</a>:</td><td> </td><td align="left"
valign="top">Where should log messages be sent?
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="rcsinfo.html#rcsinfo" accesskey="n" rel="next">rcsinfo</a>,
Previous: <a href="Trigger-Scripts.html#Trigger-Scripts" accesskey="p"
rel="prev">Trigger Scripts</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/commit-options.html
===================================================================
RCS file: html_node/commit-options.html
diff -N html_node/commit-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/commit-options.html 28 Dec 2015 15:58:17 -0000 1.1
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: commit options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: commit options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
commit options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit.html#commit" rel="up" title="commit">
+<link href="commit-examples.html#commit-examples" rel="next" title="commit
examples">
+<link href="commit.html#commit" rel="prev" title="commit">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="commit-options"></a>
+<div class="header">
+<p>
+Next: <a href="commit-examples.html#commit-examples" accesskey="n"
rel="next">commit examples</a>, Up: <a href="commit.html#commit" accesskey="u"
rel="up">commit</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="commit-options-1"></a>
+<h4 class="appendixsubsec">A.10.1 commit options</h4>
+
+<p>These standard options are supported by <code>commit</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Commit directories recursively. This is on by default.
+</p>
+</dd>
+<dt><code>-r <var>revision</var></code></dt>
+<dd><p>Commit to <var>revision</var>. <var>revision</var> must be
+either a branch, or a revision on the main trunk that
+is higher than any existing revision number
+(see <a href="Assigning-revisions.html#Assigning-revisions">Assigning
revisions</a>). You
+cannot commit to a specific revision on a branch.
+</p></dd>
+</dl>
+
+<p><code>commit</code> also supports these options:
+</p>
+<dl compact="compact">
+<dt><code>-F <var>file</var></code></dt>
+<dd><p>Read the log message from <var>file</var>, instead
+of invoking an editor.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Note that this is not the standard behavior of
+the ‘<samp>-f</samp>’ option as defined in <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+<p>Force <small>CVS</small> to commit a new revision even if you haven’t
+made any changes to the file. If the current revision
+of <var>file</var> is 1.7, then the following two commands
+are equivalent:
+</p>
+<div class="example">
+<pre class="example">$ cvs commit -f <var>file</var>
+$ cvs commit -r 1.8 <var>file</var>
+</pre></div>
+
+<p>The ‘<samp>-f</samp>’ option disables recursion (i.e., it
+implies ‘<samp>-l</samp>’). To force <small>CVS</small> to commit
a new
+revision for all files in all subdirectories, you must
+use ‘<samp>-f -R</samp>’.
+</p>
+</dd>
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as the log message, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/commit.html
===================================================================
RCS file: html_node/commit.html
diff -N html_node/commit.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/commit.html 28 Dec 2015 15:58:17 -0000 1.1
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: commit</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: commit">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
commit">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="commit-options.html#commit-options" rel="next" title="commit
options">
+<link href="checkout-examples.html#checkout-examples" rel="prev"
title="checkout examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="commit"></a>
+<div class="header">
+<p>
+Next: <a href="diff.html#diff" accesskey="n" rel="next">diff</a>, Previous: <a
href="checkout.html#checkout" accesskey="p" rel="prev">checkout</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="commit_002d_002d_002dCheck-files-into-the-repository"></a>
+<h3 class="appendixsec">A.10 commit—Check files into the repository</h3>
+<a name="index-commit-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: commit [-lRf] [-m ’log_message’ |
+-F file] [-r revision] [files…]
+</li><li> Requires: working directory, repository.
+</li><li> Changes: repository.
+</li><li> Synonym: ci
+</li></ul>
+
+<p>Use <code>commit</code> when you want to incorporate changes
+from your working source files into the source
+repository.
+</p>
+<p>If you don’t specify particular files to commit, all of
+the files in your working current directory are
+examined. <code>commit</code> is careful to change in the
+repository only those files that you have really
+changed. By default (or if you explicitly specify the
+‘<samp>-R</samp>’ option), files in subdirectories are also
+examined and committed if they have changed; you can
+use the ‘<samp>-l</samp>’ option to limit <code>commit</code> to
the
+current directory only.
+</p>
+<p><code>commit</code> verifies that the selected files are up
+to date with the current revisions in the source
+repository; it will notify you, and exit without
+committing, if any of the specified files must be made
+current first with <code>update</code> (see <a
href="update.html#update">update</a>).
+<code>commit</code> does not call the <code>update</code> command
+for you, but rather leaves that for you to do when the
+time is right.
+</p>
+<p>When all is well, an editor is invoked to allow you to
+enter a log message that will be written to one or more
+logging programs (see <a href="modules.html#modules">modules</a>, and see <a
href="loginfo.html#loginfo">loginfo</a>)
+and placed in the <small>RCS</small> file inside the
+repository. This log message can be retrieved with the
+<code>log</code> command; See <a href="log.html#log">log</a>. You can specify
the
+log message on the command line with the ‘<samp>-m
+<var>message</var></samp>’ option, and thus avoid the editor invocation,
+or use the ‘<samp>-F <var>file</var></samp>’ option to specify
+that the argument file contains the log message.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="commit-options.html#commit-options" accesskey="1">commit
options</a>:</td><td> </td><td align="left" valign="top">commit
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="commit-examples.html#commit-examples" accesskey="2">commit
examples</a>:</td><td> </td><td align="left" valign="top">commit
examples
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="diff.html#diff" accesskey="n" rel="next">diff</a>, Previous: <a
href="checkout.html#checkout" accesskey="p" rel="prev">checkout</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/commitinfo.html
===================================================================
RCS file: html_node/commitinfo.html
diff -N html_node/commitinfo.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/commitinfo.html 28 Dec 2015 15:58:18 -0000 1.1
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: commitinfo</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: commitinfo">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
commitinfo">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit-files.html#commit-files" rel="up" title="commit files">
+<link href="verifymsg.html#verifymsg" rel="next" title="verifymsg">
+<link href="commit-files.html#commit-files" rel="prev" title="commit files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="commitinfo"></a>
+<div class="header">
+<p>
+Next: <a href="verifymsg.html#verifymsg" accesskey="n"
rel="next">verifymsg</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Commitinfo"></a>
+<h4 class="appendixsubsec">C.4.1 Commitinfo</h4>
+<a name="index-commitinfo"></a>
+<a name="index-Commits_002c-precommit-verification-of"></a>
+<a name="index-Precommit-checking"></a>
+
+<p>The <samp>commitinfo</samp> file defines programs to execute
+whenever ‘<samp>cvs commit</samp>’ is about to execute. These
+programs are used for pre-commit checking to verify
+that the modified, added and removed files are really
+ready to be committed. This could be used, for
+instance, to verify that the changed files conform to
+to your site’s standards for coding practice.
+</p>
+<p>As mentioned earlier, each line in the
+<samp>commitinfo</samp> file consists of a regular expression
+and a command-line template. The template can include
+a program name and any number of arguments you wish to
+supply to it. The full path to the current source
+repository is appended to the template, followed by the
+file names of any files involved in the commit (added,
+removed, and modified files).
+</p>
+<a name="index-Exit-status_002c-of-commitinfo"></a>
+<p>The first line with a regular expression matching the
+directory within the repository will be used. If the
+command returns a non-zero exit status the commit will
+be aborted.
+</p>
+<a name="index-DEFAULT-in-commitinfo"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<a name="index-ALL-in-commitinfo"></a>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or the name ‘<samp>DEFAULT</samp>’.
+</p>
+<a name="index-commitinfo_002c-working-directory"></a>
+<a name="index-commitinfo_002c-command-environment"></a>
+<p>The command will be run in the root of the workspace
+containing the new versions of any files the user would like
+to modify (commit), <em>or in a copy of the workspace on
+the server (see <a href="Remote-repositories.html#Remote-repositories">Remote
repositories</a>)</em>. If a file is
+being removed, there will be no copy of the file under the
+current directory. If a file is being added, there will be
+no corresponding archive file in the repository unless the
+file is being resurrected.
+</p>
+<p>Note that both the repository directory and the corresponding
+Attic (see <a href="Attic.html#Attic">Attic</a>) directory may need to be
checked to
+locate the archive file corresponding to any given file being
+committed. Much of the information about the specific commit
+request being made, including the destination branch, commit
+message, and command line options specified, is not available
+to the command.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="verifymsg.html#verifymsg" accesskey="n"
rel="next">verifymsg</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/config.html
===================================================================
RCS file: html_node/config.html
diff -N html_node/config.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/config.html 28 Dec 2015 15:58:18 -0000 1.1
@@ -0,0 +1,197 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: config</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: config">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
config">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="Environment-variables.html#Environment-variables" rel="next"
title="Environment variables">
+<link href="Variables.html#Variables" rel="prev" title="Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="config"></a>
+<div class="header">
+<p>
+Previous: <a href="Variables.html#Variables" accesskey="p"
rel="prev">Variables</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-CVSROOT_002fconfig-configuration-file"></a>
+<h3 class="appendixsec">C.11 The CVSROOT/config configuration file</h3>
+
+<a name="index-config_002c-in-CVSROOT"></a>
+<a name="index-CVSROOT_002fconfig"></a>
+
+<p>The administrative file <samp>config</samp> contains various
+miscellaneous settings which affect the behavior of
+<small>CVS</small>. The syntax is slightly different from the
+other administrative files. Variables are not
+expanded. Lines which start with ‘<samp>#</samp>’ are
+considered comments.
+Other lines consist of a keyword, ‘<samp>=</samp>’, and a
+value. Note that this syntax is very strict.
+Extraneous spaces or tabs are not permitted.
+</p>
+<p>Currently defined keywords are:
+</p>
+<dl compact="compact">
+<dd><a name="index-RCSBIN_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>RCSBIN=<var>bindir</var></code></dt>
+<dd><p>For <small>CVS</small> 1.9.12 through 1.9.18, this setting told
+<small>CVS</small> to look for <small>RCS</small> programs in the
+<var>bindir</var> directory. Current versions of <small>CVS</small>
+do not run <small>RCS</small> programs; for compatibility this
+setting is accepted, but it does nothing.
+</p>
+<a name="index-SystemAuth_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>SystemAuth=<var>value</var></code></dt>
+<dd><p>If <var>value</var> is ‘<samp>yes</samp>’, then pserver
should check
+for users in the system’s user database if not found in
+<samp>CVSROOT/passwd</samp>. If it is ‘<samp>no</samp>’, then all
+pserver users must exist in <samp>CVSROOT/passwd</samp>.
+The default is ‘<samp>yes</samp>’. For more on pserver, see
+<a href="Password-authenticated.html#Password-authenticated">Password
authenticated</a>.
+</p>
+
+<a name="index-TopLevelAdmin_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>TopLevelAdmin=<var>value</var></code></dt>
+<dd><p>Modify the ‘<samp>checkout</samp>’ command to create a
+‘<samp>CVS</samp>’ directory at the top level of the new
+working directory, in addition to ‘<samp>CVS</samp>’
+directories created within checked-out directories.
+The default value is ‘<samp>no</samp>’.
+</p>
+<p>This option is useful if you find yourself performing
+many commands at the top level of your working
+directory, rather than in one of the checked out
+subdirectories. The <samp>CVS</samp> directory created there
+will mean you don’t have to specify <code>CVSROOT</code> for
+each command. It also provides a place for the
+<samp>CVS/Template</samp> file (see <a
href="Working-directory-storage.html#Working-directory-storage">Working
directory storage</a>).
+</p>
+<a name="index-LockDir_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>LockDir=<var>directory</var></code></dt>
+<dd><p>Put <small>CVS</small> lock files in <var>directory</var> rather than
+directly in the repository. This is useful if you want
+to let users read from the repository while giving them
+write access only to <var>directory</var>, not to the
+repository.
+It can also be used to put the locks on a very fast
+in-memory file system to speed up locking and unlocking
+the repository.
+You need to create <var>directory</var>, but
+<small>CVS</small> will create subdirectories of <var>directory</var> as it
+needs them. For information on <small>CVS</small> locks, see
+<a href="Concurrency.html#Concurrency">Concurrency</a>.
+</p>
+<p>Before enabling the LockDir option, make sure that you
+have tracked down and removed any copies of <small>CVS</small> 1.9 or
+older. Such versions neither support LockDir, nor will
+give an error indicating that they don’t support it.
+The result, if this is allowed to happen, is that some
+<small>CVS</small> users will put the locks one place, and others will
+put them another place, and therefore the repository
+could become corrupted. <small>CVS</small> 1.10 does not support
+LockDir but it will print a warning if run on a
+repository with LockDir enabled.
+</p>
+<a name="index-LogHistory_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>LogHistory=<var>value</var></code></dt>
+<dd><p>Control what is logged to the <samp>CVSROOT/history</samp> file (see <a
href="history.html#history">history</a>).
+Default of ‘<samp>TOEFWUPCGMAR</samp>’ (or simply
‘<samp>all</samp>’) will log
+all transactions. Any subset of the default is
+legal. (For example, to only log transactions that modify the
+<samp>*,v</samp> files, use ‘<samp>LogHistory=TMAR</samp>’.)
+</p>
+<a name="index-RereadLogAfterVerify_002c-in-CVSROOT_002fconfig"></a>
+<a name="index-verifymsg_002c-changing-the-log-message-1"></a>
+</dd>
+<dt><code>RereadLogAfterVerify=<var>value</var></code></dt>
+<dd><p>Modify the ‘<samp>commit</samp>’ command such that CVS will
reread the
+log message after running the program specified by <samp>verifymsg</samp>.
+<var>value</var> may be one of ‘<samp>yes</samp>’ or
‘<samp>always</samp>’, indicating that
+the log message should always be reread; ‘<samp>no</samp>’
+or ‘<samp>never</samp>’, indicating that it should never be
+reread; or <var>value</var> may be ‘<samp>stat</samp>’, indicating
+that the file should be checked with the file system
+‘<samp>stat()</samp>’ function to see if it has changed (see
warning below)
+before rereading. The default value is ‘<samp>always</samp>’.
+</p>
+<p><strong>The ‘stat’ mode can cause CVS to pause for up to
+one extra second per directory committed. This can be less IO and
+CPU intensive but is not recommended for use with large repositories</strong>
+</p>
+<p>See <a href="verifymsg.html#verifymsg">verifymsg</a>, for more information
on how verifymsg
+may be used.
+</p>
+<a name="index-IgnoreUnknownConfigKeys_002c-in-CVSROOT_002fconfig"></a>
+</dd>
+<dt><code>IgnoreUnknownConfigKeys=<var>value</var></code></dt>
+<dd><p>If <var>value</var> is ‘<samp>yes</samp>’, then
<small>CVS</small> should
+ignore any keywords in <samp>CVSROOT/config</samp> which it
+does not recognize. This option is intended primarily
+for transitions between versions of <small>CVS</small> which
+support more configuration options in an environment
+where a read-only mirror of the current <small>CVS</small> server
+may be maintained by someone else who is not yet ready
+to upgrade to the same version. It is recommended that
+this option be used only for a short time so that
+problems with the <samp>CVSROOT/config</samp> file will be
+found quickly. The default is ‘<samp>no</samp>’.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Variables.html#Variables" accesskey="p"
rel="prev">Variables</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/cvsignore.html
===================================================================
RCS file: html_node/cvsignore.html
diff -N html_node/cvsignore.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/cvsignore.html 28 Dec 2015 15:58:18 -0000 1.1
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: cvsignore</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: cvsignore">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
cvsignore">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="checkoutlist.html#checkoutlist" rel="next" title="checkoutlist">
+<link href="taginfo.html#taginfo" rel="prev" title="taginfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="cvsignore"></a>
+<div class="header">
+<p>
+Next: <a href="checkoutlist.html#checkoutlist" accesskey="n"
rel="next">checkoutlist</a>, Previous: <a href="taginfo.html#taginfo"
accesskey="p" rel="prev">taginfo</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Ignoring-files-via-cvsignore"></a>
+<h3 class="appendixsec">C.7 Ignoring files via cvsignore</h3>
+<a name="index-cvsignore-_0028admin-file_0029_002c-global"></a>
+<a name="index-Global-cvsignore"></a>
+<a name="index-Ignoring-files"></a>
+
+<p>There are certain file names that frequently occur
+inside your working copy, but that you don’t want to
+put under <small>CVS</small> control. Examples are all the object
+files that you get while you compile your sources.
+Normally, when you run ‘<samp>cvs update</samp>’, it prints a
+line for each file it encounters that it doesn’t know
+about (see <a href="update-output.html#update-output">update output</a>).
+</p>
+<p><small>CVS</small> has a list of files (or sh(1) file name patterns)
+that it should ignore while running <code>update</code>,
+<code>import</code> and <code>release</code>.
+This list is constructed in the following way.
+</p>
+<ul>
+<li> The list is initialized to include certain file name
+patterns: names associated with <small>CVS</small>
+administration, or with other common source control
+systems; common names for patch files, object files,
+archive files, and editor backup files; and other names
+that are usually artifacts of assorted utilities.
+Currently, the default list of ignored file name
+patterns is:
+
+<a name="index-Ignored-files"></a>
+<a name="index-Automatically-ignored-files"></a>
+<div class="example">
+<pre class="example"> RCS SCCS CVS CVS.adm
+ RCSLOG cvslog.*
+ tags TAGS
+ .make.state .nse_depinfo
+ *~ #* .#* ,* _$* *$
+ *.old *.bak *.BAK *.orig *.rej .del-*
+ *.a *.olb *.o *.obj *.so *.exe
+ *.Z *.elc *.ln
+ core
+</pre></div>
+
+</li><li> The per-repository list in
+<samp>$CVSROOT/CVSROOT/cvsignore</samp> is appended to
+the list, if that file exists.
+
+</li><li> The per-user list in <samp>.cvsignore</samp> in your home
+directory is appended to the list, if it exists.
+
+</li><li> Any entries in the environment variable
+<code>$CVSIGNORE</code> is appended to the list.
+
+</li><li> Any ‘<samp>-I</samp>’ options given to
<small>CVS</small> is appended.
+
+</li><li> As <small>CVS</small> traverses through your directories, the
contents
+of any <samp>.cvsignore</samp> will be appended to the list.
+The patterns found in <samp>.cvsignore</samp> are only valid
+for the directory that contains them, not for
+any sub-directories.
+</li></ul>
+
+<p>In any of the 5 places listed above, a single
+exclamation mark (‘<samp>!</samp>’) clears the ignore list.
+This can be used if you want to store any file which
+normally is ignored by <small>CVS</small>.
+</p>
+<p>Specifying ‘<samp>-I !</samp>’ to <code>cvs import</code> will
import
+everything, which is generally what you want to do if
+you are importing files from a pristine distribution or
+any other source which is known to not contain any
+extraneous files. However, looking at the rules above
+you will see there is a fly in the ointment; if the
+distribution contains any <samp>.cvsignore</samp> files, then
+the patterns from those files will be processed even if
+‘<samp>-I !</samp>’ is specified. The only workaround is to
+remove the <samp>.cvsignore</samp> files in order to do the
+import. Because this is awkward, in the future
+‘<samp>-I !</samp>’ might be modified to override
+<samp>.cvsignore</samp> files in each directory.
+</p>
+<p>Note that the syntax of the ignore files consists of a
+series of lines, each of which contains a space
+separated list of filenames. This offers no clean way
+to specify filenames which contain spaces, but you can
+use a workaround like <samp>foo?bar</samp> to match a file
+named <samp>foo bar</samp> (it also matches <samp>fooxbar</samp>
+and the like). Also note that there is currently no
+way to specify comments.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="checkoutlist.html#checkoutlist" accesskey="n"
rel="next">checkoutlist</a>, Previous: <a href="taginfo.html#taginfo"
accesskey="p" rel="prev">taginfo</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/diff-examples.html
===================================================================
RCS file: html_node/diff-examples.html
diff -N html_node/diff-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/diff-examples.html 28 Dec 2015 15:58:19 -0000 1.1
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: diff examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: diff examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
diff examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="diff.html#diff" rel="up" title="diff">
+<link href="export.html#export" rel="next" title="export">
+<link href="Line-formats.html#Line-formats" rel="prev" title="Line formats">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="diff-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="diff-options.html#diff-options" accesskey="p"
rel="prev">diff options</a>, Up: <a href="diff.html#diff" accesskey="u"
rel="up">diff</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="diff-examples-1"></a>
+<h4 class="appendixsubsec">A.11.2 diff examples</h4>
+
+<p>The following line produces a Unidiff (‘<samp>-u</samp>’ flag)
+between revision 1.14 and 1.19 of
+<samp>backend.c</samp>. Due to the ‘<samp>-kk</samp>’ flag no
+keywords are substituted, so differences that only depend
+on keyword substitution are ignored.
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+</pre></div>
+
+<p>Suppose the experimental branch EXPR1 was based on a
+set of files tagged RELEASE_1_0. To see what has
+happened on that branch, the following can be used:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -r RELEASE_1_0 -r EXPR1
+</pre></div>
+
+<p>A command like this can be used to produce a context
+diff between two releases:
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+</pre></div>
+
+<p>If you are maintaining ChangeLogs, a command like the following
+just before you commit your changes may help you write
+the ChangeLog entry. All local modifications that have
+not yet been committed will be printed.
+</p>
+<div class="example">
+<pre class="example">$ cvs diff -u | less
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/diff-options.html
===================================================================
RCS file: html_node/diff-options.html
diff -N html_node/diff-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/diff-options.html 28 Dec 2015 15:58:19 -0000 1.1
@@ -0,0 +1,393 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: diff options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: diff options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
diff options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="diff.html#diff" rel="up" title="diff">
+<link href="Line-group-formats.html#Line-group-formats" rel="next" title="Line
group formats">
+<link href="diff.html#diff" rel="prev" title="diff">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="diff-options"></a>
+<div class="header">
+<p>
+Next: <a href="diff-examples.html#diff-examples" accesskey="n" rel="next">diff
examples</a>, Up: <a href="diff.html#diff" accesskey="u" rel="up">diff</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="diff-options-1"></a>
+<h4 class="appendixsubsec">A.11.1 diff options</h4>
+
+<p>These standard options are supported by <code>diff</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+See ‘<samp>-r</samp>’ for how this affects the comparison.
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Examine directories recursively. This option is on by
+default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Compare with revision <var>tag</var>. Zero, one or two
+‘<samp>-r</samp>’ options can be present. With no
‘<samp>-r</samp>’
+option, the working file will be compared with the
+revision it was based on. With one ‘<samp>-r</samp>’, that
+revision will be compared to your current working file.
+With two ‘<samp>-r</samp>’ options those two revisions will be
+compared (and your working file will not affect the
+outcome in any way).
+</p>
+<p>One or both ‘<samp>-r</samp>’ options can be replaced by a
+‘<samp>-D <var>date</var></samp>’ option, described above.
+</p></dd>
+</dl>
+
+<p>The following options specify the format of the
+output. They have the same meaning as in GNU diff.
+Most options have two equivalent names, one of which is a single letter
+preceded by ‘<samp>-</samp>’, and the other of which is a long
name preceded by
+‘<samp>--</samp>’.
+</p>
+<dl compact="compact">
+<dt>‘<samp>-<var>lines</var></samp>’</dt>
+<dd><p>Show <var>lines</var> (an integer) lines of context. This option does
not
+specify an output format by itself; it has no effect unless it is
+combined with ‘<samp>-c</samp>’ or ‘<samp>-u</samp>’.
This option is obsolete. For proper
+operation, <code>patch</code> typically needs at least two lines of context.
+</p>
+</dd>
+<dt>‘<samp>-a</samp>’</dt>
+<dd><p>Treat all files as text and compare them line-by-line, even if they
+do not seem to be text.
+</p>
+</dd>
+<dt>‘<samp>-b</samp>’</dt>
+<dd><p>Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+</p>
+</dd>
+<dt>‘<samp>-B</samp>’</dt>
+<dd><p>Ignore changes that just insert or delete blank lines.
+</p>
+</dd>
+<dt>‘<samp>--binary</samp>’</dt>
+<dd><p>Read and write data in binary mode.
+</p>
+</dd>
+<dt>‘<samp>--brief</samp>’</dt>
+<dd><p>Report only whether the files differ, not the details of the
+differences.
+</p>
+</dd>
+<dt>‘<samp>-c</samp>’</dt>
+<dd><p>Use the context output format.
+</p>
+</dd>
+<dt>‘<samp>-C <var>lines</var></samp>’</dt>
+<dt>‘<samp>--context<span class="roman">[</span>=<var>lines</var><span
class="roman">]</span></samp>’</dt>
+<dd><p>Use the context output format, showing <var>lines</var> (an integer)
lines of
+context, or three if <var>lines</var> is not given.
+For proper operation, <code>patch</code> typically needs at least two lines of
+context.
+</p>
+</dd>
+<dt>‘<samp>--changed-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line group containing differing lines
from
+both files in if-then-else format. See <a
href="Line-group-formats.html#Line-group-formats">Line group formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-d</samp>’</dt>
+<dd><p>Change the algorithm to perhaps find a smaller set of changes. This
makes
+<code>diff</code> slower (sometimes much slower).
+</p>
+</dd>
+<dt>‘<samp>-e</samp>’</dt>
+<dt>‘<samp>--ed</samp>’</dt>
+<dd><p>Make output that is a valid <code>ed</code> script.
+</p>
+</dd>
+<dt>‘<samp>--expand-tabs</samp>’</dt>
+<dd><p>Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+</p>
+</dd>
+<dt>‘<samp>-f</samp>’</dt>
+<dd><p>Make output that looks vaguely like an <code>ed</code> script but has
changes
+in the order they appear in the file.
+</p>
+</dd>
+<dt>‘<samp>-F <var>regexp</var></samp>’</dt>
+<dd><p>In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches <var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--forward-ed</samp>’</dt>
+<dd><p>Make output that looks vaguely like an <code>ed</code> script but has
changes
+in the order they appear in the file.
+</p>
+</dd>
+<dt>‘<samp>-H</samp>’</dt>
+<dd><p>Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+</p>
+</dd>
+<dt>‘<samp>--horizon-lines=<var>lines</var></samp>’</dt>
+<dd><p>Do not discard the last <var>lines</var> lines of the common prefix
+and the first <var>lines</var> lines of the common suffix.
+</p>
+</dd>
+<dt>‘<samp>-i</samp>’</dt>
+<dd><p>Ignore changes in case; consider upper- and lower-case letters
+equivalent.
+</p>
+</dd>
+<dt>‘<samp>-I <var>regexp</var></samp>’</dt>
+<dd><p>Ignore changes that just insert or delete lines that match
<var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--ifdef=<var>name</var></samp>’</dt>
+<dd><p>Make merged if-then-else output using <var>name</var>.
+</p>
+</dd>
+<dt>‘<samp>--ignore-all-space</samp>’</dt>
+<dd><p>Ignore white space when comparing lines.
+</p>
+</dd>
+<dt>‘<samp>--ignore-blank-lines</samp>’</dt>
+<dd><p>Ignore changes that just insert or delete blank lines.
+</p>
+</dd>
+<dt>‘<samp>--ignore-case</samp>’</dt>
+<dd><p>Ignore changes in case; consider upper- and lower-case to be the same.
+</p>
+</dd>
+<dt>‘<samp>--ignore-matching-lines=<var>regexp</var></samp>’</dt>
+<dd><p>Ignore changes that just insert or delete lines that match
<var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--ignore-space-change</samp>’</dt>
+<dd><p>Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+</p>
+</dd>
+<dt>‘<samp>--initial-tab</samp>’</dt>
+<dd><p>Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+</p>
+</dd>
+<dt>‘<samp>-L <var>label</var></samp>’</dt>
+<dd><p>Use <var>label</var> instead of the file name in the context format
+and unified format headers.
+</p>
+</dd>
+<dt>‘<samp>--label=<var>label</var></samp>’</dt>
+<dd><p>Use <var>label</var> instead of the file name in the context format
+and unified format headers.
+</p>
+</dd>
+<dt>‘<samp>--left-column</samp>’</dt>
+<dd><p>Print only the left column of two common lines in side by side format.
+</p>
+</dd>
+<dt>‘<samp>--line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output all input lines in if-then-else format.
+See <a href="Line-formats.html#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--minimal</samp>’</dt>
+<dd><p>Change the algorithm to perhaps find a smaller set of changes. This
+makes <code>diff</code> slower (sometimes much slower).
+</p>
+</dd>
+<dt>‘<samp>-n</samp>’</dt>
+<dd><p>Output RCS-format diffs; like ‘<samp>-f</samp>’ except that
each command
+specifies the number of lines affected.
+</p>
+</dd>
+<dt>‘<samp>-N</samp>’</dt>
+<dt>‘<samp>--new-file</samp>’</dt>
+<dd><p>In directory comparison, if a file is found in only one directory,
+treat it as present but empty in the other directory.
+</p>
+</dd>
+<dt>‘<samp>--new-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of lines taken from just the
second
+file in if-then-else format. See <a
href="Line-group-formats.html#Line-group-formats">Line group formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--new-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line taken from just the second file
in
+if-then-else format. See <a href="Line-formats.html#Line-formats">Line
formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--old-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of lines taken from just the
first
+file in if-then-else format. See <a
href="Line-group-formats.html#Line-group-formats">Line group formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--old-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line taken from just the first file in
+if-then-else format. See <a href="Line-formats.html#Line-formats">Line
formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-p</samp>’</dt>
+<dd><p>Show which C function each change is in.
+</p>
+</dd>
+<dt>‘<samp>--rcs</samp>’</dt>
+<dd><p>Output RCS-format diffs; like ‘<samp>-f</samp>’ except that
each command
+specifies the number of lines affected.
+</p>
+</dd>
+<dt>‘<samp>--report-identical-files</samp>’</dt>
+<dt>‘<samp>-s</samp>’</dt>
+<dd><p>Report when two files are the same.
+</p>
+</dd>
+<dt>‘<samp>--show-c-function</samp>’</dt>
+<dd><p>Show which C function each change is in.
+</p>
+</dd>
+<dt>‘<samp>--show-function-line=<var>regexp</var></samp>’</dt>
+<dd><p>In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches <var>regexp</var>.
+</p>
+</dd>
+<dt>‘<samp>--side-by-side</samp>’</dt>
+<dd><p>Use the side by side output format.
+</p>
+</dd>
+<dt>‘<samp>--speed-large-files</samp>’</dt>
+<dd><p>Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+</p>
+</dd>
+<dt>‘<samp>--suppress-common-lines</samp>’</dt>
+<dd><p>Do not print common lines in side by side format.
+</p>
+</dd>
+<dt>‘<samp>-t</samp>’</dt>
+<dd><p>Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+</p>
+</dd>
+<dt>‘<samp>-T</samp>’</dt>
+<dd><p>Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+</p>
+</dd>
+<dt>‘<samp>--text</samp>’</dt>
+<dd><p>Treat all files as text and compare them line-by-line, even if they
+do not appear to be text.
+</p>
+</dd>
+<dt>‘<samp>-u</samp>’</dt>
+<dd><p>Use the unified output format.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-group-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a group of common lines taken from both
files
+in if-then-else format. See <a
href="Line-group-formats.html#Line-group-formats">Line group formats</a>.
+</p>
+</dd>
+<dt>‘<samp>--unchanged-line-format=<var>format</var></samp>’</dt>
+<dd><p>Use <var>format</var> to output a line common to both files in
if-then-else
+format. See <a href="Line-formats.html#Line-formats">Line formats</a>.
+</p>
+</dd>
+<dt>‘<samp>-U <var>lines</var></samp>’</dt>
+<dt>‘<samp>--unified<span class="roman">[</span>=<var>lines</var><span
class="roman">]</span></samp>’</dt>
+<dd><p>Use the unified output format, showing <var>lines</var> (an integer)
lines of
+context, or three if <var>lines</var> is not given.
+For proper operation, <code>patch</code> typically needs at least two lines of
+context.
+</p>
+</dd>
+<dt>‘<samp>-w</samp>’</dt>
+<dd><p>Ignore white space when comparing lines.
+</p>
+</dd>
+<dt>‘<samp>-W <var>columns</var></samp>’</dt>
+<dt>‘<samp>--width=<var>columns</var></samp>’</dt>
+<dd><p>Use an output width of <var>columns</var> in side by side format.
+</p>
+</dd>
+<dt>‘<samp>-y</samp>’</dt>
+<dd><p>Use the side by side output format.
+</p></dd>
+</dl>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Line-group-formats.html#Line-group-formats" accesskey="1">Line group
formats</a>:</td><td> </td><td align="left" valign="top">Line group
formats
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Line-formats.html#Line-formats" accesskey="2">Line
formats</a>:</td><td> </td><td align="left" valign="top">Line formats
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="diff-examples.html#diff-examples" accesskey="n" rel="next">diff
examples</a>, Up: <a href="diff.html#diff" accesskey="u" rel="up">diff</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/diff.html
===================================================================
RCS file: html_node/diff.html
diff -N html_node/diff.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/diff.html 28 Dec 2015 15:58:20 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: diff</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: diff">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
diff">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="diff-options.html#diff-options" rel="next" title="diff options">
+<link href="commit-examples.html#commit-examples" rel="prev" title="commit
examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="diff"></a>
+<div class="header">
+<p>
+Next: <a href="export.html#export" accesskey="n" rel="next">export</a>,
Previous: <a href="commit.html#commit" accesskey="p" rel="prev">commit</a>, Up:
<a href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS
commands</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="diff_002d_002d_002dShow-differences-between-revisions"></a>
+<h3 class="appendixsec">A.11 diff—Show differences between revisions</h3>
+<a name="index-diff-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D date1]
[-r rev2 | -D date2]] [files…]
+</li><li> Requires: working directory, repository.
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>The <code>diff</code> command is used to compare different
+revisions of files. The default action is to compare
+your working files with the revisions they were based
+on, and report any differences that are found.
+</p>
+<p>If any file names are given, only those files are
+compared. If any directories are given, all files
+under them will be compared.
+</p>
+<p>The exit status for diff is different than for other
+<small>CVS</small> commands; for details See <a
href="Exit-status.html#Exit-status">Exit status</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="diff-options.html#diff-options" accesskey="1">diff
options</a>:</td><td> </td><td align="left" valign="top">diff options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="diff-examples.html#diff-examples" accesskey="2">diff
examples</a>:</td><td> </td><td align="left" valign="top">diff
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/editinfo-example.html
===================================================================
RCS file: html_node/editinfo-example.html
diff -N html_node/editinfo-example.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/editinfo-example.html 28 Dec 2015 15:58:20 -0000 1.1
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: editinfo example</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: editinfo example">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
editinfo example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="editinfo.html#editinfo" rel="up" title="editinfo">
+<link href="loginfo.html#loginfo" rel="next" title="loginfo">
+<link href="editinfo.html#editinfo" rel="prev" title="editinfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="editinfo-example"></a>
+<div class="header">
+<p>
+Up: <a href="editinfo.html#editinfo" accesskey="u" rel="up">editinfo</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Editinfo-example"></a>
+<h4 class="appendixsubsubsec">C.4.3.1 Editinfo example</h4>
+
+<p>The following is a little silly example of a
+<samp>editinfo</samp> file, together with the corresponding
+<samp>rcsinfo</samp> file, the log message template and an
+editor script. We begin with the log message template.
+We want to always record a bug-id number on the first
+line of the log message. The rest of log message is
+free text. The following template is found in the file
+<samp>/usr/cvssupport/tc.template</samp>.
+</p>
+<div class="example">
+<pre class="example">BugId:
+</pre></div>
+
+<p>The script <samp>/usr/cvssupport/bugid.edit</samp> is used to
+edit the log message.
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+#
+# bugid.edit filename
+#
+# Call $EDITOR on FILENAME, and verify that the
+# resulting file contains a valid bugid on the first
+# line.
+if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
+if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
+$CVSEDITOR $1
+until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
+do echo -n "No BugId found. Edit again? ([y]/n)"
+ read ans
+ case ${ans} in
+ n*) exit 1;;
+ esac
+ $CVSEDITOR $1
+done
+</pre></div>
+
+<p>The <samp>editinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/bugid.edit
+</pre></div>
+
+<p>The <samp>rcsinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/tc.template
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/editinfo.html
===================================================================
RCS file: html_node/editinfo.html
diff -N html_node/editinfo.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/editinfo.html 28 Dec 2015 15:58:21 -0000 1.1
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: editinfo</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: editinfo">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
editinfo">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit-files.html#commit-files" rel="up" title="commit files">
+<link href="editinfo-example.html#editinfo-example" rel="next" title="editinfo
example">
+<link href="verifymsg.html#verifymsg" rel="prev" title="verifymsg">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="editinfo"></a>
+<div class="header">
+<p>
+Next: <a href="loginfo.html#loginfo" accesskey="n" rel="next">loginfo</a>,
Previous: <a href="verifymsg.html#verifymsg" accesskey="p"
rel="prev">verifymsg</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Editinfo"></a>
+<h4 class="appendixsubsec">C.4.3 Editinfo</h4>
+<a name="index-editinfo-_0028admin-file_0029"></a>
+<a name="index-Editor_002c-specifying-per-module"></a>
+<a name="index-Per_002dmodule-editor"></a>
+<a name="index-Log-messages_002c-editing"></a>
+
+<p><strong>The <samp>editinfo</samp> feature has been
+rendered obsolete. To set a default editor for log
+messages use the <code>CVSEDITOR</code>, <code>EDITOR</code> environment
variables
+(see <a href="Environment-variables.html#Environment-variables">Environment
variables</a>) or the ‘<samp>-e</samp>’ global
+option (see <a href="Global-options.html#Global-options">Global options</a>).
See <a href="verifymsg.html#verifymsg">verifymsg</a>,
+for information on the use of the <samp>verifymsg</samp>
+feature for evaluating log messages.</strong>
+</p>
+<p>If you want to make sure that all log messages look the
+same way, you can use the <samp>editinfo</samp> file to
+specify a program that is used to edit the log message.
+This program could be a custom-made editor that always
+enforces a certain style of the log message, or maybe a
+simple shell script that calls an editor, and checks
+that the entered message contains the required fields.
+</p>
+<p>If no matching line is found in the <samp>editinfo</samp>
+file, the editor specified in the environment variable
+<code>$CVSEDITOR</code> is used instead. If that variable is
+not set, then the environment variable <code>$EDITOR</code>
+is used instead. If that variable is not
+set a default will be used. See <a
href="Committing-your-changes.html#Committing-your-changes">Committing your
changes</a>.
+</p>
+<p>The <samp>editinfo</samp> file is often most useful together
+with the <samp>rcsinfo</samp> file, which can be used to
+specify a log message template.
+</p>
+<p>Each line in the <samp>editinfo</samp> file consists of a
+regular expression and a command-line template. The
+template must include a program name, and can include
+any number of arguments. The full path to the current
+log message template file is appended to the template.
+</p>
+<p>One thing that should be noted is that the ‘<samp>ALL</samp>’
+keyword is not supported. If more than one matching
+line is found, the first one is used. This can be
+useful for specifying a default edit script in a
+module, and then overriding it in a subdirectory.
+</p>
+<a name="index-DEFAULT-in-editinfo"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>If the edit script exits with a non-zero exit status,
+the commit is aborted.
+</p>
+<p>Note: when <small>CVS</small> is accessing a remote repository,
+or when the ‘<samp>-m</samp>’ or ‘<samp>-F</samp>’
options to <code>cvs
+commit</code> are used, <samp>editinfo</samp> will not be consulted.
+There is no good workaround for this; use
+<samp>verifymsg</samp> instead.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="editinfo-example.html#editinfo-example" accesskey="1">editinfo
example</a>:</td><td> </td><td align="left" valign="top">Editinfo
example
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="loginfo.html#loginfo" accesskey="n" rel="next">loginfo</a>,
Previous: <a href="verifymsg.html#verifymsg" accesskey="p"
rel="prev">verifymsg</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/export-options.html
===================================================================
RCS file: html_node/export-options.html
diff -N html_node/export-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/export-options.html 28 Dec 2015 15:58:21 -0000 1.1
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: export options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: export options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
export options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="export.html#export" rel="up" title="export">
+<link href="history.html#history" rel="next" title="history">
+<link href="export.html#export" rel="prev" title="export">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="export-options"></a>
+<div class="header">
+<p>
+Up: <a href="export.html#export" accesskey="u" rel="up">export</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="export-options-1"></a>
+<h4 class="appendixsubsec">A.12.1 export options</h4>
+
+<p>These standard options are supported by <code>export</code>
+(see <a href="Common-options.html#Common-options">Common options</a>, for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Do not run any checkout program.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Export directories recursively. This is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>In addition, these options (that are common to
+<code>checkout</code> and <code>export</code>) are also supported:
+</p>
+<dl compact="compact">
+<dt><code>-d <var>dir</var></code></dt>
+<dd><p>Create a directory called <var>dir</var> for the working
+files, instead of using the module name.
+See <a href="checkout-options.html#checkout-options">checkout options</a> for
complete details on how
+<small>CVS</small> handles this flag.
+</p>
+</dd>
+<dt><code>-k <var>subst</var></code></dt>
+<dd><p>Set keyword expansion mode (see <a
href="Substitution-modes.html#Substitution-modes">Substitution modes</a>).
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Only useful together with ‘<samp>-d <var>dir</var></samp>’.
+See <a href="checkout-options.html#checkout-options">checkout options</a> for
complete details on how
+<small>CVS</small> handles this flag.
+</p></dd>
+</dl>
+
+
+
+
+
+</body>
+</html>
Index: html_node/export.html
===================================================================
RCS file: html_node/export.html
diff -N html_node/export.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/export.html 28 Dec 2015 15:58:22 -0000 1.1
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: export</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: export">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
export">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="export-options.html#export-options" rel="next" title="export
options">
+<link href="diff-examples.html#diff-examples" rel="prev" title="diff examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="export"></a>
+<div class="header">
+<p>
+Next: <a href="history.html#history" accesskey="n" rel="next">history</a>,
Previous: <a href="diff.html#diff" accesskey="p" rel="prev">diff</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a
name="export_002d_002d_002dExport-sources-from-CVS_002c-similar-to-checkout"></a>
+<h3 class="appendixsec">A.12 export—Export sources from CVS, similar to
checkout</h3>
+<a name="index-export-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir]
module…
+</li><li> Requires: repository.
+</li><li> Changes: current directory.
+</li></ul>
+
+<p>This command is a variant of <code>checkout</code>; use it
+when you want a copy of the source for module without
+the <small>CVS</small> administrative directories. For example, you
+might use <code>export</code> to prepare source for shipment
+off-site. This command requires that you specify a
+date or tag (with ‘<samp>-D</samp>’ or
‘<samp>-r</samp>’), so that you
+can count on reproducing the source you ship to others
+(and thus it always prunes empty directories).
+</p>
+<p>One often would like to use ‘<samp>-kv</samp>’ with <code>cvs
+export</code>. This causes any keywords to be
+expanded such that an import done at some other site
+will not lose the keyword revision information. But be
+aware that doesn’t handle an export containing binary
+files correctly. Also be aware that after having used
+‘<samp>-kv</samp>’, one can no longer use the <code>ident</code>
+command (which is part of the <small>RCS</small> suite—see
+ident(1)) which looks for keyword strings. If
+you want to be able to use <code>ident</code> you must not
+use ‘<samp>-kv</samp>’.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="export-options.html#export-options" accesskey="1">export
options</a>:</td><td> </td><td align="left" valign="top">export
options
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/history-database.html
===================================================================
RCS file: html_node/history-database.html
diff -N html_node/history-database.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/history-database.html 28 Dec 2015 15:58:22 -0000 1.1
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: history database</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: history database">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
history database">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="History-browsing.html#History-browsing" rel="up" title="History
browsing">
+<link href="user_002ddefined-logging.html#user_002ddefined-logging" rel="next"
title="user-defined logging">
+<link href="log-messages.html#log-messages" rel="prev" title="log messages">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="history-database"></a>
+<div class="header">
+<p>
+Next: <a href="user_002ddefined-logging.html#user_002ddefined-logging"
accesskey="n" rel="next">user-defined logging</a>, Previous: <a
href="log-messages.html#log-messages" accesskey="p" rel="prev">log
messages</a>, Up: <a href="History-browsing.html#History-browsing"
accesskey="u" rel="up">History browsing</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-history-database"></a>
+<h3 class="section">8.2 The history database</h3>
+
+<p>You can use the history file (see <a
href="history-file.html#history-file">history file</a>) to
+log various <small>CVS</small> actions. To retrieve the
+information from the history file, use the <code>cvs
+history</code> command (see <a href="history.html#history">history</a>).
+</p>
+<p>Note: you can control what is logged to this file by using the
+‘<samp>LogHistory</samp>’ keyword in the
<samp>CVSROOT/config</samp> file
+(see <a href="config.html#config">config</a>).
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/history-file.html
===================================================================
RCS file: html_node/history-file.html
diff -N html_node/history-file.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/history-file.html 28 Dec 2015 15:58:22 -0000 1.1
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: history file</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: history file">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
history file">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="Variables.html#Variables" rel="next" title="Variables">
+<link href="checkoutlist.html#checkoutlist" rel="prev" title="checkoutlist">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="history-file"></a>
+<div class="header">
+<p>
+Next: <a href="Variables.html#Variables" accesskey="n"
rel="next">Variables</a>, Previous: <a href="checkoutlist.html#checkoutlist"
accesskey="p" rel="prev">checkoutlist</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-history-file"></a>
+<h3 class="appendixsec">C.9 The history file</h3>
+<a name="index-History-file"></a>
+<a name="index-Log-information_002c-saving"></a>
+
+<p>The file <samp>$CVSROOT/CVSROOT/history</samp> is used
+to log information for the <code>history</code> command
+(see <a href="history.html#history">history</a>). This file must be created
to turn
+on logging. This is done automatically if the
+<code>cvs init</code> command is used to set up the
+repository (see <a
href="Creating-a-repository.html#Creating-a-repository">Creating a
repository</a>).
+</p>
+<p>The file format of the <samp>history</samp> file is
+documented only in comments in the <small>CVS</small> source
+code, but generally programs should use the <code>cvs
+history</code> command to access it anyway, in case the
+format changes with future releases of <small>CVS</small>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/history-options.html
===================================================================
RCS file: html_node/history-options.html
diff -N html_node/history-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/history-options.html 28 Dec 2015 15:58:23 -0000 1.1
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: history options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: history options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
history options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="history.html#history" rel="up" title="history">
+<link href="import.html#import" rel="next" title="import">
+<link href="history.html#history" rel="prev" title="history">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="history-options"></a>
+<div class="header">
+<p>
+Up: <a href="history.html#history" accesskey="u" rel="up">history</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="history-options-1"></a>
+<h4 class="appendixsubsec">A.13.1 history options</h4>
+
+<p>Several options (shown above as ‘<samp>-report</samp>’)
control what
+kind of report is generated:
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Report on each time commit was used (i.e., each time
+the repository was modified).
+</p>
+</dd>
+<dt><code>-e</code></dt>
+<dd><p>Everything (all record types). Equivalent to
+specifying ‘<samp>-x</samp>’ with all record types. Of course,
+‘<samp>-e</samp>’ will also include record types which are
+added in a future version of <small>CVS</small>; if you are
+writing a script which can only handle certain record
+types, you’ll want to specify ‘<samp>-x</samp>’.
+</p>
+</dd>
+<dt><code>-m <var>module</var></code></dt>
+<dd><p>Report on a particular module. (You can meaningfully
+use ‘<samp>-m</samp>’ more than once on the command line.)
+</p>
+</dd>
+<dt><code>-o</code></dt>
+<dd><p>Report on checked-out modules. This is the default report type.
+</p>
+</dd>
+<dt><code>-T</code></dt>
+<dd><p>Report on all tags.
+</p>
+</dd>
+<dt><code>-x <var>type</var></code></dt>
+<dd><p>Extract a particular set of record types <var>type</var> from the
<small>CVS</small>
+history. The types are indicated by single letters,
+which you may specify in combination.
+</p>
+<p>Certain commands have a single record type:
+</p>
+<dl compact="compact">
+<dt><code>F</code></dt>
+<dd><p>release
+</p></dd>
+<dt><code>O</code></dt>
+<dd><p>checkout
+</p></dd>
+<dt><code>E</code></dt>
+<dd><p>export
+</p></dd>
+<dt><code>T</code></dt>
+<dd><p>rtag
+</p></dd>
+</dl>
+
+<p>One of five record types may result from an update:
+</p>
+<dl compact="compact">
+<dt><code>C</code></dt>
+<dd><p>A merge was necessary but collisions were
+detected (requiring manual merging).
+</p></dd>
+<dt><code>G</code></dt>
+<dd><p>A merge was necessary and it succeeded.
+</p></dd>
+<dt><code>U</code></dt>
+<dd><p>A working file was copied from the repository.
+</p></dd>
+<dt><code>P</code></dt>
+<dd><p>A working file was patched to match the repository.
+</p></dd>
+<dt><code>W</code></dt>
+<dd><p>The working copy of a file was deleted during
+update (because it was gone from the repository).
+</p></dd>
+</dl>
+
+<p>One of three record types results from commit:
+</p>
+<dl compact="compact">
+<dt><code>A</code></dt>
+<dd><p>A file was added for the first time.
+</p></dd>
+<dt><code>M</code></dt>
+<dd><p>A file was modified.
+</p></dd>
+<dt><code>R</code></dt>
+<dd><p>A file was removed.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The options shown as ‘<samp>-flags</samp>’ constrain or expand
+the report without requiring option arguments:
+</p>
+<dl compact="compact">
+<dt><code>-a</code></dt>
+<dd><p>Show data for all users (the default is to show data
+only for the user executing <code>history</code>).
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Show last modification only.
+</p>
+</dd>
+<dt><code>-w</code></dt>
+<dd><p>Show only the records for modifications done from the
+same working directory where <code>history</code> is
+executing.
+</p></dd>
+</dl>
+
+<p>The options shown as ‘<samp>-options <var>args</var></samp>’
constrain the report
+based on an argument:
+</p>
+<dl compact="compact">
+<dt><code>-b <var>str</var></code></dt>
+<dd><p>Show data back to a record containing the string
+<var>str</var> in either the module name, the file name, or
+the repository path.
+</p>
+</dd>
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Show data since <var>date</var>. This is slightly different
+from the normal use of ‘<samp>-D <var>date</var></samp>’, which
+selects the newest revision older than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f <var>file</var></code></dt>
+<dd><p>Show data for a particular file
+(you can specify several ‘<samp>-f</samp>’ options on the same
command line).
+This is equivalent to specifying the file on the command line.
+</p>
+</dd>
+<dt><code>-n <var>module</var></code></dt>
+<dd><p>Show data for a particular module
+(you can specify several ‘<samp>-n</samp>’ options on the same
command line).
+</p>
+</dd>
+<dt><code>-p <var>repository</var></code></dt>
+<dd><p>Show data for a particular source repository (you
+can specify several ‘<samp>-p</samp>’ options on the same command
+line).
+</p>
+</dd>
+<dt><code>-r <var>rev</var></code></dt>
+<dd><p>Show records referring to revisions since the revision
+or tag named <var>rev</var> appears in individual <small>RCS</small>
+files. Each <small>RCS</small> file is searched for the revision or
+tag.
+</p>
+</dd>
+<dt><code>-t <var>tag</var></code></dt>
+<dd><p>Show records since tag <var>tag</var> was last added to the
+history file. This differs from the ‘<samp>-r</samp>’ flag
+above in that it reads only the history file, not the
+<small>RCS</small> files, and is much faster.
+</p>
+</dd>
+<dt><code>-u <var>name</var></code></dt>
+<dd><p>Show records for user <var>name</var>.
+</p>
+</dd>
+<dt><code>-z <var>timezone</var></code></dt>
+<dd><p>Show times in the selected records using the specified
+time zone instead of UTC.
+</p></dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Up: <a href="history.html#history" accesskey="u" rel="up">history</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/history.html
===================================================================
RCS file: html_node/history.html
diff -N html_node/history.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/history.html 28 Dec 2015 15:58:23 -0000 1.1
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: history</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: history">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
history">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="history-options.html#history-options" rel="next" title="history
options">
+<link href="export-options.html#export-options" rel="prev" title="export
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="history"></a>
+<div class="header">
+<p>
+Next: <a href="import.html#import" accesskey="n" rel="next">import</a>,
Previous: <a href="export.html#export" accesskey="p" rel="prev">export</a>, Up:
<a href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS
commands</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="history_002d_002d_002dShow-status-of-files-and-users"></a>
+<h3 class="appendixsec">A.13 history—Show status of files and users</h3>
+<a name="index-history-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: history [-report] [-flags] [-options args] [files…]
+</li><li> Requires: the file <samp>$CVSROOT/CVSROOT/history</samp>
+</li><li> Changes: nothing.
+</li></ul>
+
+<p><small>CVS</small> can keep a history file that tracks each use of the
+<code>checkout</code>, <code>commit</code>, <code>rtag</code>,
+<code>update</code>, and <code>release</code> commands. You can
+use <code>history</code> to display this information in
+various formats.
+</p>
+<p>Logging must be enabled by creating the file
+<samp>$CVSROOT/CVSROOT/history</samp>.
+</p>
+<p><strong><code>history</code> uses ‘<samp>-f</samp>’,
‘<samp>-l</samp>’,
+‘<samp>-n</samp>’, and ‘<samp>-p</samp>’ in ways that
conflict with the
+normal use inside <small>CVS</small> (see <a
href="Common-options.html#Common-options">Common options</a>).</strong>
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="history-options.html#history-options" accesskey="1">history
options</a>:</td><td> </td><td align="left" valign="top">history
options
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/import-examples.html
===================================================================
RCS file: html_node/import-examples.html
diff -N html_node/import-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/import-examples.html 28 Dec 2015 15:58:23 -0000 1.1
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: import examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: import examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
import examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="import.html#import" rel="up" title="import">
+<link href="log.html#log" rel="next" title="log">
+<link href="import-output.html#import-output" rel="prev" title="import output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="import-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="import-output.html#import-output" accesskey="p"
rel="prev">import output</a>, Up: <a href="import.html#import" accesskey="u"
rel="up">import</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="import-examples-1"></a>
+<h4 class="appendixsubsec">A.14.3 import examples</h4>
+
+<p>See <a href="Tracking-sources.html#Tracking-sources">Tracking sources</a>,
and <a href="From-files.html#From-files">From files</a>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/import-options.html
===================================================================
RCS file: html_node/import-options.html
diff -N html_node/import-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/import-options.html 28 Dec 2015 15:58:24 -0000 1.1
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: import options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: import options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
import options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="import.html#import" rel="up" title="import">
+<link href="import-output.html#import-output" rel="next" title="import output">
+<link href="import.html#import" rel="prev" title="import">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="import-options"></a>
+<div class="header">
+<p>
+Next: <a href="import-output.html#import-output" accesskey="n"
rel="next">import output</a>, Up: <a href="import.html#import" accesskey="u"
rel="up">import</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="import-options-1"></a>
+<h4 class="appendixsubsec">A.14.1 import options</h4>
+
+<p>This standard option is supported by <code>import</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description):
+</p>
+<dl compact="compact">
+<dt><code>-m <var>message</var></code></dt>
+<dd><p>Use <var>message</var> as log information, instead of
+invoking an editor.
+</p></dd>
+</dl>
+
+<p>There are the following additional special options.
+</p>
+<dl compact="compact">
+<dt><code>-b <var>branch</var></code></dt>
+<dd><p>See <a
href="Multiple-vendor-branches.html#Multiple-vendor-branches">Multiple vendor
branches</a>.
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Use each file’s modification time as the time of import
+rather than the current time.
+</p>
+</dd>
+<dt><code>-k <var>subst</var></code></dt>
+<dd><p>Indicate the keyword expansion mode desired. This
+setting will apply to all files created during the
+import, but not to any files that previously existed in
+the repository. See <a
href="Substitution-modes.html#Substitution-modes">Substitution modes</a> for a
+list of valid ‘<samp>-k</samp>’ settings.
+</p>
+</dd>
+<dt><code>-I <var>name</var></code></dt>
+<dd><p>Specify file names that should be ignored during
+import. You can use this option repeatedly. To avoid
+ignoring any files at all (even those ignored by
+default), specify ‘-I !’.
+</p>
+<p><var>name</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvsignore</samp> file.
+See <a href="cvsignore.html#cvsignore">cvsignore</a>.
+</p>
+</dd>
+<dt><code>-W <var>spec</var></code></dt>
+<dd><p>Specify file names that should be filtered during
+import. You can use this option repeatedly.
+</p>
+<p><var>spec</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvswrappers</samp>
+file. See <a href="Wrappers.html#Wrappers">Wrappers</a>.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/import-output.html
===================================================================
RCS file: html_node/import-output.html
diff -N html_node/import-output.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/import-output.html 28 Dec 2015 15:58:24 -0000 1.1
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: import output</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: import output">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
import output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="import.html#import" rel="up" title="import">
+<link href="import-examples.html#import-examples" rel="next" title="import
examples">
+<link href="import-options.html#import-options" rel="prev" title="import
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="import-output"></a>
+<div class="header">
+<p>
+Next: <a href="import-examples.html#import-examples" accesskey="n"
rel="next">import examples</a>, Previous: <a
href="import-options.html#import-options" accesskey="p" rel="prev">import
options</a>, Up: <a href="import.html#import" accesskey="u" rel="up">import</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="import-output-1"></a>
+<h4 class="appendixsubsec">A.14.2 import output</h4>
+
+<p><code>import</code> keeps you informed of its progress by printing a line
+for each file, preceded by one character indicating the status of the file:
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dd><p>The file already exists in the repository and has not been locally
+modified; a new revision has been created (if necessary).
+</p>
+</dd>
+<dt><code>N <var>file</var></code></dt>
+<dd><p>The file is a new file which has been added to the repository.
+</p>
+</dd>
+<dt><code>C <var>file</var></code></dt>
+<dd><p>The file already exists in the repository but has been locally modified;
+you will have to merge the changes.
+</p>
+</dd>
+<dt><code>I <var>file</var></code></dt>
+<dd><p>The file is being ignored (see <a
href="cvsignore.html#cvsignore">cvsignore</a>).
+</p>
+<a name="index-Symbolic-link_002c-importing"></a>
+<a name="index-Link_002c-symbolic_002c-importing"></a>
+</dd>
+<dt><code>L <var>file</var></code></dt>
+<dd><p>The file is a symbolic link; <code>cvs import</code> ignores symbolic
links.
+People periodically suggest that this behavior should
+be changed, but if there is a consensus on what it
+should be changed to, it doesn’t seem to be apparent.
+(Various options in the <samp>modules</samp> file can be used
+to recreate symbolic links on checkout, update, etc.;
+see <a href="modules.html#modules">modules</a>.)
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/import.html
===================================================================
RCS file: html_node/import.html
diff -N html_node/import.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/import.html 28 Dec 2015 15:58:24 -0000 1.1
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: import</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: import">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
import">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="import-options.html#import-options" rel="next" title="import
options">
+<link href="history-options.html#history-options" rel="prev" title="history
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="import"></a>
+<div class="header">
+<p>
+Next: <a href="log.html#log" accesskey="n" rel="next">log</a>, Previous: <a
href="history.html#history" accesskey="p" rel="prev">history</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a
name="import_002d_002d_002dImport-sources-into-CVS_002c-using-vendor-branches"></a>
+<h3 class="appendixsec">A.14 import—Import sources into CVS, using
vendor branches</h3>
+<a name="index-import-_0028subcommand_0029"></a>
+
+
+<ul>
+<li> Synopsis: import [-options] repository vendortag releasetag…
+</li><li> Requires: Repository, source distribution directory.
+</li><li> Changes: repository.
+</li></ul>
+
+<p>Use <code>import</code> to incorporate an entire source
+distribution from an outside source (e.g., a source
+vendor) into your source repository directory. You can
+use this command both for initial creation of a
+repository, and for wholesale updates to the module
+from the outside source. See <a
href="Tracking-sources.html#Tracking-sources">Tracking sources</a> for
+a discussion on this subject.
+</p>
+<p>The <var>repository</var> argument gives a directory name
+(or a path to a directory) under the <small>CVS</small> root directory
+for repositories; if the directory did not exist,
+import creates it.
+</p>
+<p>When you use import for updates to source that has been
+modified in your source repository (since a prior
+import), it will notify you of any files that conflict
+in the two branches of development; use ‘<samp>checkout
+-j</samp>’ to reconcile the differences, as import instructs
+you to do.
+</p>
+<p>If <small>CVS</small> decides a file should be ignored
+(see <a href="cvsignore.html#cvsignore">cvsignore</a>), it does not import it
and prints
+‘<samp>I </samp>’ followed by the filename (see <a
href="import-output.html#import-output">import output</a> for a
+complete description of the output).
+</p>
+<p>If the file <samp>$CVSROOT/CVSROOT/cvswrappers</samp> exists,
+any file whose names match the specifications in that
+file will be treated as packages and the appropriate
+filtering will be performed on the file/directory
+before being imported. See <a href="Wrappers.html#Wrappers">Wrappers</a>.
+</p>
+<p>The outside source is saved in a first-level
+branch, by default 1.1.1. Updates are leaves of this
+branch; for example, files from the first imported
+collection of source will be revision 1.1.1.1, then
+files from the first imported update will be revision
+1.1.1.2, and so on.
+</p>
+<p>At least three arguments are required.
+<var>repository</var> is needed to identify the collection
+of source. <var>vendortag</var> is a tag for the entire
+branch (e.g., for 1.1.1). You must also specify at
+least one <var>releasetag</var> to uniquely identify the files at
+the leaves created each time you execute <code>import</code>. The
+<var>releasetag</var> should be new, not previously existing in the
+repository file, and uniquely identify the imported release,
+</p>
+<p>Note that <code>import</code> does <em>not</em> change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a <small>CVS</small> working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (see <a href="Getting-the-source.html#Getting-the-source">Getting
the source</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="import-options.html#import-options" accesskey="1">import
options</a>:</td><td> </td><td align="left" valign="top">import
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="import-output.html#import-output" accesskey="2">import
output</a>:</td><td> </td><td align="left" valign="top">import output
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="import-examples.html#import-examples" accesskey="3">import
examples</a>:</td><td> </td><td align="left" valign="top">import
examples
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="log.html#log" accesskey="n" rel="next">log</a>, Previous: <a
href="history.html#history" accesskey="p" rel="prev">history</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/index.html
===================================================================
RCS file: html_node/index.html
diff -N html_node/index.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/index.html 28 Dec 2015 15:58:24 -0000 1.1
@@ -0,0 +1,482 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: Top</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: Top">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
Top">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="../dir/index.html" rel="up" title="(dir)">
+<link href="Overview.html#Overview" rel="next" title="Overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<h1 class="settitle" align="center">CVS—Concurrent Versions System
v1.11.23</h1>
+
+
+
+
+
+
+
+
+
+
+
+
+<a name="SEC_Overview"></a>
+<h2 class="shortcontents-heading">Short Table of Contents</h2>
+
+<div class="shortcontents">
+<ul class="no-bullet">
+<li><a name="stoc-Overview-1" href="#toc-Overview-1">1 Overview</a></li>
+<li><a name="stoc-The-Repository" href="#toc-The-Repository">2 The
Repository</a></li>
+<li><a name="stoc-Starting-a-project-with-CVS"
href="#toc-Starting-a-project-with-CVS">3 Starting a project with CVS</a></li>
+<li><a name="stoc-Revisions-1" href="#toc-Revisions-1">4 Revisions</a></li>
+<li><a name="stoc-Branching-and-merging-1"
href="#toc-Branching-and-merging-1">5 Branching and merging</a></li>
+<li><a name="stoc-Recursive-behavior-1" href="#toc-Recursive-behavior-1">6
Recursive behavior</a></li>
+<li><a
name="stoc-Adding_002c-removing_002c-and-renaming-files-and-directories"
href="#toc-Adding_002c-removing_002c-and-renaming-files-and-directories">7
Adding, removing, and renaming files and directories</a></li>
+<li><a name="stoc-History-browsing-1" href="#toc-History-browsing-1">8 History
browsing</a></li>
+<li><a name="stoc-Handling-binary-files" href="#toc-Handling-binary-files">9
Handling binary files</a></li>
+<li><a name="stoc-Multiple-developers-1" href="#toc-Multiple-developers-1">10
Multiple developers</a></li>
+<li><a name="stoc-Revision-management-1" href="#toc-Revision-management-1">11
Revision management</a></li>
+<li><a name="stoc-Keyword-substitution-1"
href="#toc-Keyword-substitution-1">12 Keyword substitution</a></li>
+<li><a name="stoc-Tracking-third_002dparty-sources"
href="#toc-Tracking-third_002dparty-sources">13 Tracking third-party
sources</a></li>
+<li><a name="stoc-How-your-build-system-interacts-with-CVS"
href="#toc-How-your-build-system-interacts-with-CVS">14 How your build system
interacts with CVS</a></li>
+<li><a name="stoc-Special-Files-1" href="#toc-Special-Files-1">15 Special
Files</a></li>
+<li><a name="stoc-Guide-to-CVS-commands"
href="#toc-Guide-to-CVS-commands">Appendix A Guide to CVS commands</a></li>
+<li><a name="stoc-Quick-reference-to-CVS-commands"
href="#toc-Quick-reference-to-CVS-commands">Appendix B Quick reference to CVS
commands</a></li>
+<li><a name="stoc-Reference-manual-for-Administrative-files"
href="#toc-Reference-manual-for-Administrative-files">Appendix C Reference
manual for Administrative files</a></li>
+<li><a name="stoc-All-environment-variables-which-affect-CVS"
href="#toc-All-environment-variables-which-affect-CVS">Appendix D All
environment variables which affect CVS</a></li>
+<li><a name="stoc-Compatibility-between-CVS-Versions"
href="#toc-Compatibility-between-CVS-Versions">Appendix E Compatibility between
CVS Versions</a></li>
+<li><a name="stoc-Troubleshooting-1" href="#toc-Troubleshooting-1">Appendix F
Troubleshooting</a></li>
+<li><a name="stoc-Credits-1" href="#toc-Credits-1">Appendix G Credits</a></li>
+<li><a name="stoc-Dealing-with-bugs-in-CVS-or-this-manual"
href="#toc-Dealing-with-bugs-in-CVS-or-this-manual">Appendix H Dealing with
bugs in CVS or this manual</a></li>
+<li><a name="stoc-Index-1" href="#toc-Index-1">Index</a></li>
+</ul>
+</div>
+
+
+<a name="SEC_Contents"></a>
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="no-bullet">
+ <li><a name="toc-Overview-1" href="Overview.html#Overview">1 Overview</a>
+ <ul class="no-bullet">
+ <li><a name="toc-What-is-CVS_003f-1"
href="What-is-CVS_003f.html#What-is-CVS_003f">1.1 What is CVS?</a></li>
+ <li><a name="toc-What-is-CVS-not_003f-1"
href="What-is-CVS-not_003f.html#What-is-CVS-not_003f">1.2 What is CVS
not?</a></li>
+ <li><a name="toc-A-sample-session-1"
href="A-sample-session.html#A-sample-session">1.3 A sample session</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Getting-the-source-1"
href="Getting-the-source.html#Getting-the-source">1.3.1 Getting the
source</a></li>
+ <li><a name="toc-Committing-your-changes-1"
href="Committing-your-changes.html#Committing-your-changes">1.3.2 Committing
your changes</a></li>
+ <li><a name="toc-Cleaning-up-1"
href="Cleaning-up.html#Cleaning-up">1.3.3 Cleaning up</a></li>
+ <li><a name="toc-Viewing-differences-1"
href="Viewing-differences.html#Viewing-differences">1.3.4 Viewing
differences</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-The-Repository" href="Repository.html#Repository">2 The
Repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Telling-CVS-where-your-repository-is"
href="Specifying-a-repository.html#Specifying-a-repository">2.1 Telling CVS
where your repository is</a></li>
+ <li><a name="toc-How-data-is-stored-in-the-repository"
href="Repository-storage.html#Repository-storage">2.2 How data is stored in the
repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Where-files-are-stored-within-the-repository"
href="Repository-files.html#Repository-files">2.2.1 Where files are stored
within the repository</a></li>
+ <li><a name="toc-File-permissions-1"
href="File-permissions.html#File-permissions">2.2.2 File permissions</a></li>
+ <li><a name="toc-File-Permission-issues-specific-to-Windows"
href="Windows-permissions.html#Windows-permissions">2.2.3 File Permission
issues specific to Windows</a></li>
+ <li><a name="toc-The-attic" href="Attic.html#Attic">2.2.4 The
attic</a></li>
+ <li><a name="toc-The-CVS-directory-in-the-repository"
href="CVS-in-repository.html#CVS-in-repository">2.2.5 The CVS directory in the
repository</a></li>
+ <li><a name="toc-CVS-locks-in-the-repository"
href="Locks.html#Locks">2.2.6 CVS locks in the repository</a></li>
+ <li><a name="toc-How-files-are-stored-in-the-CVSROOT-directory"
href="CVSROOT-storage.html#CVSROOT-storage">2.2.7 How files are stored in the
CVSROOT directory</a></li>
+ </ul></li>
+ <li><a name="toc-How-data-is-stored-in-the-working-directory"
href="Working-directory-storage.html#Working-directory-storage">2.3 How data is
stored in the working directory</a></li>
+ <li><a name="toc-The-administrative-files"
href="Intro-administrative-files.html#Intro-administrative-files">2.4 The
administrative files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Editing-administrative-files"
href="Intro-administrative-files.html#Editing-administrative-files">2.4.1
Editing administrative files</a></li>
+ </ul></li>
+ <li><a name="toc-Multiple-repositories-1"
href="Multiple-repositories.html#Multiple-repositories">2.5 Multiple
repositories</a></li>
+ <li><a name="toc-Creating-a-repository-1"
href="Creating-a-repository.html#Creating-a-repository">2.6 Creating a
repository</a></li>
+ <li><a name="toc-Backing-up-a-repository"
href="Backing-up.html#Backing-up">2.7 Backing up a repository</a></li>
+ <li><a name="toc-Moving-a-repository-1"
href="Moving-a-repository.html#Moving-a-repository">2.8 Moving a
repository</a></li>
+ <li><a name="toc-Remote-repositories-1"
href="Remote-repositories.html#Remote-repositories">2.9 Remote repositories</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Server-requirements-1"
href="Server-requirements.html#Server-requirements">2.9.1 Server
requirements</a></li>
+ <li><a name="toc-Connecting-with-rsh-or-ssh"
href="Connecting-via-rsh.html#Connecting-via-rsh">2.9.2 Connecting with rsh or
ssh</a></li>
+ <li><a name="toc-Direct-connection-with-password-authentication"
href="Password-authenticated.html#Password-authenticated">2.9.3 Direct
connection with password authentication</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Setting-up-the-server-for-password-authentication"
href="Password-authentication-server.html#Password-authentication-server">2.9.3.1
Setting up the server for password authentication</a></li>
+ <li><a name="toc-Using-the-client-with-password-authentication"
href="Password-authentication-client.html#Password-authentication-client">2.9.3.2
Using the client with password authentication</a></li>
+ <li><a name="toc-Security-considerations-with-password-authentication"
href="Password-authentication-security.html#Password-authentication-security">2.9.3.3
Security considerations with password authentication</a></li>
+ </ul></li>
+ <li><a name="toc-Direct-connection-with-GSSAPI"
href="GSSAPI-authenticated.html#GSSAPI-authenticated">2.9.4 Direct connection
with GSSAPI</a></li>
+ <li><a name="toc-Direct-connection-with-Kerberos"
href="Kerberos-authenticated.html#Kerberos-authenticated">2.9.5 Direct
connection with Kerberos</a></li>
+ <li><a name="toc-Connecting-with-fork"
href="Connecting-via-fork.html#Connecting-via-fork">2.9.6 Connecting with
fork</a></li>
+ </ul></li>
+ <li><a name="toc-Read_002donly-repository-access"
href="Read_002donly-access.html#Read_002donly-access">2.10 Read-only repository
access</a></li>
+ <li><a name="toc-Temporary-directories-for-the-server"
href="Server-temporary-directory.html#Server-temporary-directory">2.11
Temporary directories for the server</a></li>
+ </ul></li>
+ <li><a name="toc-Starting-a-project-with-CVS"
href="Starting-a-new-project.html#Starting-a-new-project">3 Starting a project
with CVS</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Setting-up-the-files-1"
href="Setting-up-the-files.html#Setting-up-the-files">3.1 Setting up the
files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Creating-a-directory-tree-from-a-number-of-files"
href="From-files.html#From-files">3.1.1 Creating a directory tree from a number
of files</a></li>
+ <li><a name="toc-Creating-Files-From-Other-Version-Control-Systems"
href="From-other-version-control-systems.html#From-other-version-control-systems">3.1.2
Creating Files From Other Version Control Systems</a></li>
+ <li><a name="toc-Creating-a-directory-tree-from-scratch"
href="From-scratch.html#From-scratch">3.1.3 Creating a directory tree from
scratch</a></li>
+ </ul></li>
+ <li><a name="toc-Defining-the-module-1"
href="Defining-the-module.html#Defining-the-module">3.2 Defining the
module</a></li>
+ </ul></li>
+ <li><a name="toc-Revisions-1" href="Revisions.html#Revisions">4 Revisions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Revision-numbers-1"
href="Revision-numbers.html#Revision-numbers">4.1 Revision numbers</a></li>
+ <li><a name="toc-Versions_002c-revisions-and-releases"
href="Versions-revisions-releases.html#Versions-revisions-releases">4.2
Versions, revisions and releases</a></li>
+ <li><a name="toc-Assigning-revisions-1"
href="Assigning-revisions.html#Assigning-revisions">4.3 Assigning
revisions</a></li>
+ <li><a name="toc-Tags_002d_002dSymbolic-revisions"
href="Tags.html#Tags">4.4 Tags–Symbolic revisions</a></li>
+ <li><a name="toc-Specifying-what-to-tag-from-the-working-directory"
href="Tagging-the-working-directory.html#Tagging-the-working-directory">4.5
Specifying what to tag from the working directory</a></li>
+ <li><a name="toc-Specifying-what-to-tag-by-date-or-revision"
href="Tagging-by-date_002ftag.html#Tagging-by-date_002ftag">4.6 Specifying what
to tag by date or revision</a></li>
+ <li><a name="toc-Deleting_002c-moving_002c-and-renaming-tags"
href="Modifying-tags.html#Modifying-tags">4.7 Deleting, moving, and renaming
tags</a></li>
+ <li><a name="toc-Tagging-and-adding-and-removing-files"
href="Tagging-add_002fremove.html#Tagging-add_002fremove">4.8 Tagging and
adding and removing files</a></li>
+ <li><a name="toc-Sticky-tags-1" href="Sticky-tags.html#Sticky-tags">4.9
Sticky tags</a></li>
+ </ul></li>
+ <li><a name="toc-Branching-and-merging-1"
href="Branching-and-merging.html#Branching-and-merging">5 Branching and
merging</a>
+ <ul class="no-bullet">
+ <li><a name="toc-What-branches-are-good-for"
href="Branches-motivation.html#Branches-motivation">5.1 What branches are good
for</a></li>
+ <li><a name="toc-Creating-a-branch-1"
href="Creating-a-branch.html#Creating-a-branch">5.2 Creating a branch</a></li>
+ <li><a name="toc-Accessing-branches-1"
href="Accessing-branches.html#Accessing-branches">5.3 Accessing
branches</a></li>
+ <li><a name="toc-Branches-and-revisions-1"
href="Branches-and-revisions.html#Branches-and-revisions">5.4 Branches and
revisions</a></li>
+ <li><a name="toc-Magic-branch-numbers-1"
href="Magic-branch-numbers.html#Magic-branch-numbers">5.5 Magic branch
numbers</a></li>
+ <li><a name="toc-Merging-an-entire-branch"
href="Merging-a-branch.html#Merging-a-branch">5.6 Merging an entire
branch</a></li>
+ <li><a name="toc-Merging-from-a-branch-several-times"
href="Merging-more-than-once.html#Merging-more-than-once">5.7 Merging from a
branch several times</a></li>
+ <li><a name="toc-Merging-differences-between-any-two-revisions"
href="Merging-two-revisions.html#Merging-two-revisions">5.8 Merging differences
between any two revisions</a></li>
+ <li><a name="toc-Merging-can-add-or-remove-files"
href="Merging-adds-and-removals.html#Merging-adds-and-removals">5.9 Merging can
add or remove files</a></li>
+ <li><a name="toc-Merging-and-keywords-1"
href="Merging-and-keywords.html#Merging-and-keywords">5.10 Merging and
keywords</a></li>
+ </ul></li>
+ <li><a name="toc-Recursive-behavior-1"
href="Recursive-behavior.html#Recursive-behavior">6 Recursive behavior</a></li>
+ <li><a
name="toc-Adding_002c-removing_002c-and-renaming-files-and-directories"
href="Adding-and-removing.html#Adding-and-removing">7 Adding, removing, and
renaming files and directories</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Adding-files-to-a-directory"
href="Adding-files.html#Adding-files">7.1 Adding files to a directory</a></li>
+ <li><a name="toc-Removing-files-1"
href="Removing-files.html#Removing-files">7.2 Removing files</a></li>
+ <li><a name="toc-Removing-directories-1"
href="Removing-directories.html#Removing-directories">7.3 Removing
directories</a></li>
+ <li><a name="toc-Moving-and-renaming-files"
href="Moving-files.html#Moving-files">7.4 Moving and renaming files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Normal-way-to-Rename"
href="Outside.html#Outside">7.4.1 The Normal way to Rename</a></li>
+ <li><a name="toc-Moving-the-history-file"
href="Inside.html#Inside">7.4.2 Moving the history file</a></li>
+ <li><a name="toc-Copying-the-history-file"
href="Rename-by-copying.html#Rename-by-copying">7.4.3 Copying the history
file</a></li>
+ </ul></li>
+ <li><a name="toc-Moving-and-renaming-directories"
href="Moving-directories.html#Moving-directories">7.5 Moving and renaming
directories</a></li>
+ </ul></li>
+ <li><a name="toc-History-browsing-1"
href="History-browsing.html#History-browsing">8 History browsing</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Log-messages" href="log-messages.html#log-messages">8.1
Log messages</a></li>
+ <li><a name="toc-The-history-database"
href="history-database.html#history-database">8.2 The history database</a></li>
+ <li><a name="toc-User_002ddefined-logging"
href="user_002ddefined-logging.html#user_002ddefined-logging">8.3 User-defined
logging</a></li>
+ </ul></li>
+ <li><a name="toc-Handling-binary-files"
href="Binary-files.html#Binary-files">9 Handling binary files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-issues-with-binary-files"
href="Binary-why.html#Binary-why">9.1 The issues with binary files</a></li>
+ <li><a name="toc-How-to-store-binary-files"
href="Binary-howto.html#Binary-howto">9.2 How to store binary files</a></li>
+ </ul></li>
+ <li><a name="toc-Multiple-developers-1"
href="Multiple-developers.html#Multiple-developers">10 Multiple developers</a>
+ <ul class="no-bullet">
+ <li><a name="toc-File-status-1" href="File-status.html#File-status">10.1
File status</a></li>
+ <li><a name="toc-Bringing-a-file-up-to-date"
href="Updating-a-file.html#Updating-a-file">10.2 Bringing a file up to
date</a></li>
+ <li><a name="toc-Conflicts-example-1"
href="Conflicts-example.html#Conflicts-example">10.3 Conflicts example</a></li>
+ <li><a name="toc-Informing-others-about-commits"
href="Informing-others.html#Informing-others">10.4 Informing others about
commits</a></li>
+ <li><a name="toc-Several-developers-simultaneously-attempting-to-run-CVS"
href="Concurrency.html#Concurrency">10.5 Several developers simultaneously
attempting to run CVS</a></li>
+ <li><a name="toc-Mechanisms-to-track-who-is-editing-files"
href="Watches.html#Watches">10.6 Mechanisms to track who is editing files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Telling-CVS-to-watch-certain-files"
href="Setting-a-watch.html#Setting-a-watch">10.6.1 Telling CVS to watch certain
files</a></li>
+ <li><a name="toc-Telling-CVS-to-notify-you"
href="Getting-Notified.html#Getting-Notified">10.6.2 Telling CVS to notify
you</a></li>
+ <li><a name="toc-How-to-edit-a-file-which-is-being-watched"
href="Editing-files.html#Editing-files">10.6.3 How to edit a file which is
being watched</a></li>
+ <li><a name="toc-Information-about-who-is-watching-and-editing"
href="Watch-information.html#Watch-information">10.6.4 Information about who is
watching and editing</a></li>
+ <li><a name="toc-Using-watches-with-old-versions-of-CVS"
href="Watches-Compatibility.html#Watches-Compatibility">10.6.5 Using watches
with old versions of CVS</a></li>
+ </ul></li>
+ <li><a name="toc-Choosing-between-reserved-or-unreserved-checkouts"
href="Choosing-a-model.html#Choosing-a-model">10.7 Choosing between reserved or
unreserved checkouts</a></li>
+ </ul></li>
+ <li><a name="toc-Revision-management-1"
href="Revision-management.html#Revision-management">11 Revision management</a>
+ <ul class="no-bullet">
+ <li><a name="toc-When-to-commit_003f"
href="When-to-commit.html#When-to-commit">11.1 When to commit?</a></li>
+ </ul></li>
+ <li><a name="toc-Keyword-substitution-1"
href="Keyword-substitution.html#Keyword-substitution">12 Keyword
substitution</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Keyword-List" href="Keyword-list.html#Keyword-list">12.1
Keyword List</a></li>
+ <li><a name="toc-Using-keywords-1"
href="Using-keywords.html#Using-keywords">12.2 Using keywords</a></li>
+ <li><a name="toc-Avoiding-substitution-1"
href="Avoiding-substitution.html#Avoiding-substitution">12.3 Avoiding
substitution</a></li>
+ <li><a name="toc-Substitution-modes-1"
href="Substitution-modes.html#Substitution-modes">12.4 Substitution
modes</a></li>
+ <li><a name="toc-Problems-with-the-_0024Log_0024-keyword_002e"
href="Log-keyword.html#Log-keyword">12.5 Problems with the $<i></i>Log$
keyword.</a></li>
+ </ul></li>
+ <li><a name="toc-Tracking-third_002dparty-sources"
href="Tracking-sources.html#Tracking-sources">13 Tracking third-party
sources</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Importing-for-the-first-time"
href="First-import.html#First-import">13.1 Importing for the first time</a></li>
+ <li><a name="toc-Updating-with-the-import-command"
href="Update-imports.html#Update-imports">13.2 Updating with the import
command</a></li>
+ <li><a name="toc-Reverting-to-the-latest-vendor-release"
href="Reverting-local-changes.html#Reverting-local-changes">13.3 Reverting to
the latest vendor release</a></li>
+ <li><a name="toc-How-to-handle-binary-files-with-cvs-import"
href="Binary-files-in-imports.html#Binary-files-in-imports">13.4 How to handle
binary files with cvs import</a></li>
+ <li><a name="toc-How-to-handle-keyword-substitution-with-cvs-import"
href="Keywords-in-imports.html#Keywords-in-imports">13.5 How to handle keyword
substitution with cvs import</a></li>
+ <li><a name="toc-Multiple-vendor-branches-1"
href="Multiple-vendor-branches.html#Multiple-vendor-branches">13.6 Multiple
vendor branches</a></li>
+ </ul></li>
+ <li><a name="toc-How-your-build-system-interacts-with-CVS"
href="Builds.html#Builds">14 How your build system interacts with CVS</a></li>
+ <li><a name="toc-Special-Files-1" href="Special-Files.html#Special-Files">15
Special Files</a></li>
+ <li><a name="toc-Guide-to-CVS-commands"
href="CVS-commands.html#CVS-commands">Appendix A Guide to CVS commands</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Overall-structure-of-CVS-commands"
href="Structure.html#Structure">A.1 Overall structure of CVS commands</a></li>
+ <li><a name="toc-CVS_0027s-exit-status"
href="Exit-status.html#Exit-status">A.2 CVS’s exit status</a></li>
+ <li><a name="toc-Default-options-and-the-_007e_002f_002ecvsrc-file"
href="_007e_002f_002ecvsrc.html#g_t_007e_002f_002ecvsrc">A.3 Default options
and the ~/.cvsrc file</a></li>
+ <li><a name="toc-Global-options-1"
href="Global-options.html#Global-options">A.4 Global options</a></li>
+ <li><a name="toc-Common-command-options"
href="Common-options.html#Common-options">A.5 Common command options</a></li>
+ <li><a
name="toc-add_002d_002d_002dAdd-files-and-directories-to-the-repository"
href="add.html#add">A.6 add—Add files and directories to the
repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-add-options-1"
href="add-options.html#add-options">A.6.1 add options</a></li>
+ <li><a name="toc-add-examples-1"
href="add-examples.html#add-examples">A.6.2 add examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Adding-a-directory"
href="add-examples.html#Adding-a-directory">A.6.2.1 Adding a directory</a></li>
+ <li><a name="toc-Adding-a-file"
href="add-examples.html#Adding-a-file">A.6.2.2 Adding a file</a></li>
+ <li><a name="toc-Undoing-a-remove-command"
href="add-examples.html#Undoing-a-remove-command">A.6.2.3 Undoing a
<code>remove</code> command</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-admin_002d_002d_002dAdministration"
href="admin.html#admin">A.7 admin—Administration</a>
+ <ul class="no-bullet">
+ <li><a name="toc-admin-options-1"
href="admin-options.html#admin-options">A.7.1 admin options</a></li>
+ </ul></li>
+ <li><a
name="toc-annotate_002d_002d_002dWhat-revision-modified-each-line-of-a-file_003f"
href="annotate.html#annotate">A.8 annotate—What revision modified each
line of a file?</a>
+ <ul class="no-bullet">
+ <li><a name="toc-annotate-options-1"
href="annotate-options.html#annotate-options">A.8.1 annotate options</a></li>
+ <li><a name="toc-annotate-example-1"
href="annotate-example.html#annotate-example">A.8.2 annotate example</a></li>
+ </ul></li>
+ <li><a name="toc-checkout_002d_002d_002dCheck-out-sources-for-editing"
href="checkout.html#checkout">A.9 checkout—Check out sources for
editing</a>
+ <ul class="no-bullet">
+ <li><a name="toc-checkout-options-1"
href="checkout-options.html#checkout-options">A.9.1 checkout options</a></li>
+ <li><a name="toc-checkout-examples-1"
href="checkout-examples.html#checkout-examples">A.9.2 checkout examples</a></li>
+ </ul></li>
+ <li><a name="toc-commit_002d_002d_002dCheck-files-into-the-repository"
href="commit.html#commit">A.10 commit—Check files into the repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-commit-options-1"
href="commit-options.html#commit-options">A.10.1 commit options</a></li>
+ <li><a name="toc-commit-examples-1"
href="commit-examples.html#commit-examples">A.10.2 commit examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Committing-to-a-branch"
href="commit-examples.html#Committing-to-a-branch">A.10.2.1 Committing to a
branch</a></li>
+ <li><a name="toc-Creating-the-branch-after-editing"
href="commit-examples.html#Creating-the-branch-after-editing">A.10.2.2 Creating
the branch after editing</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-diff_002d_002d_002dShow-differences-between-revisions"
href="diff.html#diff">A.11 diff—Show differences between revisions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-diff-options-1"
href="diff-options.html#diff-options">A.11.1 diff options</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Line-group-formats-1"
href="Line-group-formats.html#Line-group-formats">A.11.1.1 Line group
formats</a></li>
+ <li><a name="toc-Line-formats-1"
href="Line-formats.html#Line-formats">A.11.1.2 Line formats</a></li>
+ </ul></li>
+ <li><a name="toc-diff-examples-1"
href="diff-examples.html#diff-examples">A.11.2 diff examples</a></li>
+ </ul></li>
+ <li><a
name="toc-export_002d_002d_002dExport-sources-from-CVS_002c-similar-to-checkout"
href="export.html#export">A.12 export—Export sources from CVS, similar
to checkout</a>
+ <ul class="no-bullet">
+ <li><a name="toc-export-options-1"
href="export-options.html#export-options">A.12.1 export options</a></li>
+ </ul></li>
+ <li><a name="toc-history_002d_002d_002dShow-status-of-files-and-users"
href="history.html#history">A.13 history—Show status of files and
users</a>
+ <ul class="no-bullet">
+ <li><a name="toc-history-options-1"
href="history-options.html#history-options">A.13.1 history options</a></li>
+ </ul></li>
+ <li><a
name="toc-import_002d_002d_002dImport-sources-into-CVS_002c-using-vendor-branches"
href="import.html#import">A.14 import—Import sources into CVS, using
vendor branches</a>
+ <ul class="no-bullet">
+ <li><a name="toc-import-options-1"
href="import-options.html#import-options">A.14.1 import options</a></li>
+ <li><a name="toc-import-output-1"
href="import-output.html#import-output">A.14.2 import output</a></li>
+ <li><a name="toc-import-examples-1"
href="import-examples.html#import-examples">A.14.3 import examples</a></li>
+ </ul></li>
+ <li><a name="toc-log_002d_002d_002dPrint-out-log-information-for-files"
href="log.html#log">A.15 log—Print out log information for files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-log-options-1"
href="log-options.html#log-options">A.15.1 log options</a></li>
+ <li><a name="toc-log-examples-1"
href="log-examples.html#log-examples">A.15.2 log examples</a></li>
+ </ul></li>
+ <li><a
name="toc-rdiff_002d_002d_002d_0027patch_0027-format-diffs-between-releases"
href="rdiff.html#rdiff">A.16 rdiff—’patch’ format diffs
between releases</a>
+ <ul class="no-bullet">
+ <li><a name="toc-rdiff-options-1"
href="rdiff-options.html#rdiff-options">A.16.1 rdiff options</a></li>
+ <li><a name="toc-rdiff-examples-1"
href="rdiff-examples.html#rdiff-examples">A.16.2 rdiff examples</a></li>
+ </ul></li>
+ <li><a
name="toc-release_002d_002d_002dIndicate-that-a-Module-is-no-longer-in-use"
href="release.html#release">A.17 release—Indicate that a Module is no
longer in use</a>
+ <ul class="no-bullet">
+ <li><a name="toc-release-options-1"
href="release-options.html#release-options">A.17.1 release options</a></li>
+ <li><a name="toc-release-output-1"
href="release-output.html#release-output">A.17.2 release output</a></li>
+ <li><a name="toc-release-examples-1"
href="release-examples.html#release-examples">A.17.3 release examples</a></li>
+ </ul></li>
+ <li><a name="toc-remove_002d_002d_002dRemove-files-from-active-use"
href="remove.html#remove">A.18 remove—Remove files from active use</a>
+ <ul class="no-bullet">
+ <li><a name="toc-remove-options-1"
href="remove-options.html#remove-options">A.18.1 remove options</a></li>
+ <li><a name="toc-remove-examples-1"
href="remove-examples.html#remove-examples">A.18.2 remove examples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Removing-a-file"
href="remove-examples.html#Removing-a-file">A.18.2.1 Removing a file</a></li>
+ <li><a name="toc-Removing-entire-directories"
href="remove-examples.html#Removing-entire-directories">A.18.2.2 Removing
entire directories</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a
name="toc-update_002d_002d_002dBring-work-tree-in-sync-with-repository"
href="update.html#update">A.19 update—Bring work tree in sync with
repository</a>
+ <ul class="no-bullet">
+ <li><a name="toc-update-options-1"
href="update-options.html#update-options">A.19.1 update options</a></li>
+ <li><a name="toc-update-output-1"
href="update-output.html#update-output">A.19.2 update output</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Quick-reference-to-CVS-commands"
href="Invoking-CVS.html#Invoking-CVS">Appendix B Quick reference to CVS
commands</a></li>
+ <li><a name="toc-Reference-manual-for-Administrative-files"
href="Administrative-files.html#Administrative-files">Appendix C Reference
manual for Administrative files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-modules-file" href="modules.html#modules">C.1 The
modules file</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Alias-modules-1"
href="Alias-modules.html#Alias-modules">C.1.1 Alias modules</a></li>
+ <li><a name="toc-Regular-modules-1"
href="Regular-modules.html#Regular-modules">C.1.2 Regular modules</a></li>
+ <li><a name="toc-Ampersand-modules-1"
href="Ampersand-modules.html#Ampersand-modules">C.1.3 Ampersand modules</a></li>
+ <li><a name="toc-Excluding-directories-1"
href="Excluding-directories.html#Excluding-directories">C.1.4 Excluding
directories</a></li>
+ <li><a name="toc-Module-options-1"
href="Module-options.html#Module-options">C.1.5 Module options</a></li>
+ <li><a
name="toc-How-the-modules-file-_0060_0060program-options_0027_0027-programs-are-run"
href="Module-program-options.html#Module-program-options">C.1.6 How the
modules file “program options” programs are run</a></li>
+ </ul></li>
+ <li><a name="toc-The-cvswrappers-file" href="Wrappers.html#Wrappers">C.2
The cvswrappers file</a></li>
+ <li><a name="toc-The-Trigger-Scripts"
href="Trigger-Scripts.html#Trigger-Scripts">C.3 The Trigger Scripts</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-common-syntax" href="syntax.html#syntax">C.3.1 The
common syntax</a></li>
+ <li><a name="toc-Security-and-the-Trigger-Scripts"
href="Trigger-Script-Security.html#Trigger-Script-Security">C.3.2 Security and
the Trigger Scripts</a></li>
+ </ul></li>
+ <li><a name="toc-The-commit-support-files"
href="commit-files.html#commit-files">C.4 The commit support files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Commitinfo" href="commitinfo.html#commitinfo">C.4.1
Commitinfo</a></li>
+ <li><a name="toc-Verifying-log-messages"
href="verifymsg.html#verifymsg">C.4.2 Verifying log messages</a></li>
+ <li><a name="toc-Editinfo" href="editinfo.html#editinfo">C.4.3
Editinfo</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Editinfo-example"
href="editinfo-example.html#editinfo-example">C.4.3.1 Editinfo example</a></li>
+ </ul></li>
+ <li><a name="toc-Loginfo" href="loginfo.html#loginfo">C.4.4 Loginfo</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Loginfo-example"
href="loginfo-example.html#loginfo-example">C.4.4.1 Loginfo example</a></li>
+ <li><a name="toc-Keeping-a-checked-out-copy-1"
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy">C.4.4.2
Keeping a checked out copy</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Rcsinfo" href="rcsinfo.html#rcsinfo">C.5 Rcsinfo</a></li>
+ <li><a name="toc-Taginfo" href="taginfo.html#taginfo">C.6 Taginfo</a></li>
+ <li><a name="toc-Ignoring-files-via-cvsignore"
href="cvsignore.html#cvsignore">C.7 Ignoring files via cvsignore</a></li>
+ <li><a name="toc-The-checkoutlist-file"
href="checkoutlist.html#checkoutlist">C.8 The checkoutlist file</a></li>
+ <li><a name="toc-The-history-file"
href="history-file.html#history-file">C.9 The history file</a></li>
+ <li><a name="toc-Expansions-in-administrative-files"
href="Variables.html#Variables">C.10 Expansions in administrative files</a></li>
+ <li><a name="toc-The-CVSROOT_002fconfig-configuration-file"
href="config.html#config">C.11 The CVSROOT/config configuration file</a></li>
+ </ul></li>
+ <li><a name="toc-All-environment-variables-which-affect-CVS"
href="Environment-variables.html#Environment-variables">Appendix D All
environment variables which affect CVS</a></li>
+ <li><a name="toc-Compatibility-between-CVS-Versions"
href="Compatibility.html#Compatibility">Appendix E Compatibility between CVS
Versions</a></li>
+ <li><a name="toc-Troubleshooting-1"
href="Troubleshooting.html#Troubleshooting">Appendix F Troubleshooting</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Partial-list-of-error-messages"
href="Error-messages.html#Error-messages">F.1 Partial list of error
messages</a></li>
+ <li><a name="toc-Trouble-making-a-connection-to-a-CVS-server"
href="Connection.html#Connection">F.2 Trouble making a connection to a CVS
server</a></li>
+ <li><a name="toc-Other-common-problems"
href="Other-problems.html#Other-problems">F.3 Other common problems</a></li>
+ </ul></li>
+ <li><a name="toc-Credits-1" href="Credits.html#Credits">Appendix G
Credits</a></li>
+ <li><a name="toc-Dealing-with-bugs-in-CVS-or-this-manual"
href="BUGS.html#BUGS">Appendix H Dealing with bugs in CVS or this
manual</a></li>
+ <li><a name="toc-Index-1" href="Index.html#Index">Index</a></li>
+</ul>
+</div>
+
+
+
+<a name="Top"></a>
+<div class="header">
+<p>
+Next: <a href="Overview.html#Overview" accesskey="n" rel="next">Overview</a>,
Up: <a href="../dir/index.html" accesskey="u" rel="up">(dir)</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="SEC_Top"></a>
+
+<p>This info manual describes how to use and administer
+<small>CVS</small> version 1.11.23.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="Overview.html#Overview"
accesskey="1">Overview</a>:</td><td> </td><td align="left"
valign="top">An introduction to CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Repository.html#Repository"
accesskey="2">Repository</a>:</td><td> </td><td align="left"
valign="top">Where all your sources are stored
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Starting-a-new-project.html#Starting-a-new-project"
accesskey="3">Starting a new project</a>:</td><td> </td><td
align="left" valign="top">Starting a project with CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a href="Revisions.html#Revisions"
accesskey="4">Revisions</a>:</td><td> </td><td align="left"
valign="top">Numeric and symbolic names for revisions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Branching-and-merging.html#Branching-and-merging" accesskey="5">Branching
and merging</a>:</td><td> </td><td align="left"
valign="top">Diverging/rejoining branches of development
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Recursive-behavior.html#Recursive-behavior" accesskey="6">Recursive
behavior</a>:</td><td> </td><td align="left" valign="top">CVS
descends directories
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Adding-and-removing.html#Adding-and-removing" accesskey="7">Adding and
removing</a>:</td><td> </td><td align="left"
valign="top">Adding/removing/renaming files/directories
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="History-browsing.html#History-browsing" accesskey="8">History
browsing</a>:</td><td> </td><td align="left" valign="top">Viewing
the history of files in various ways
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+CVS and the Real World.
+———————–
+</pre></th></tr><tr><td align="left" valign="top">• <a
href="Binary-files.html#Binary-files" accesskey="9">Binary
files</a>:</td><td> </td><td align="left" valign="top">CVS can
handle binary files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Multiple-developers.html#Multiple-developers">Multiple
developers</a>:</td><td> </td><td align="left" valign="top">How CVS
helps a group of developers
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Revision-management.html#Revision-management">Revision
management</a>:</td><td> </td><td align="left" valign="top">Policy
questions for revision management
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>:</td><td> </td><td align="left" valign="top">CVS
can include the revision inside the file
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Tracking-sources.html#Tracking-sources">Tracking
sources</a>:</td><td> </td><td align="left" valign="top">Tracking
third-party sources
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Builds.html#Builds">Builds</a>:</td><td> </td><td align="left"
valign="top">Issues related to CVS and builds
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Special-Files.html#Special-Files">Special
Files</a>:</td><td> </td><td align="left" valign="top">Devices,
links and other non-regular files
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+References.
+———–
+</pre></th></tr><tr><td align="left" valign="top">• <a
href="CVS-commands.html#CVS-commands">CVS
commands</a>:</td><td> </td><td align="left" valign="top">CVS
commands share some things
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Invoking-CVS.html#Invoking-CVS">Invoking
CVS</a>:</td><td> </td><td align="left" valign="top">Quick reference
to CVS commands
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Administrative-files.html#Administrative-files">Administrative
files</a>:</td><td> </td><td align="left" valign="top">Reference
manual for the Administrative files
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Environment-variables.html#Environment-variables">Environment
variables</a>:</td><td> </td><td align="left" valign="top">All
environment variables which affect CVS
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Compatibility.html#Compatibility">Compatibility</a>:</td><td> </td><td
align="left" valign="top">Upgrading CVS versions
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Troubleshooting.html#Troubleshooting">Troubleshooting</a>:</td><td> </td><td
align="left" valign="top">Some tips when nothing works
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Credits.html#Credits">Credits</a>:</td><td> </td><td
align="left" valign="top">Some of the contributors to this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="BUGS.html#BUGS">BUGS</a>:</td><td> </td><td align="left"
valign="top">Dealing with bugs in CVS or this manual
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Index.html#Index">Index</a>:</td><td> </td><td align="left"
valign="top">Index
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Overview.html#Overview" accesskey="n" rel="next">Overview</a>,
Up: <a href="../dir/index.html" accesskey="u" rel="up">(dir)</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/log-examples.html
===================================================================
RCS file: html_node/log-examples.html
diff -N html_node/log-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/log-examples.html 28 Dec 2015 15:58:25 -0000 1.1
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: log examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: log examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
log examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="log.html#log" rel="up" title="log">
+<link href="rdiff.html#rdiff" rel="next" title="rdiff">
+<link href="log-options.html#log-options" rel="prev" title="log options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="log-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="log-options.html#log-options" accesskey="p" rel="prev">log
options</a>, Up: <a href="log.html#log" accesskey="u" rel="up">log</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="log-examples-1"></a>
+<h4 class="appendixsubsec">A.15.2 log examples</h4>
+
+<p>Contributed examples are gratefully accepted.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/log-messages.html
===================================================================
RCS file: html_node/log-messages.html
diff -N html_node/log-messages.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/log-messages.html 28 Dec 2015 15:58:25 -0000 1.1
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: log messages</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: log messages">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
log messages">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="History-browsing.html#History-browsing" rel="up" title="History
browsing">
+<link href="history-database.html#history-database" rel="next" title="history
database">
+<link href="History-browsing.html#History-browsing" rel="prev" title="History
browsing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="log-messages"></a>
+<div class="header">
+<p>
+Next: <a href="history-database.html#history-database" accesskey="n"
rel="next">history database</a>, Up: <a
href="History-browsing.html#History-browsing" accesskey="u" rel="up">History
browsing</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Log-messages"></a>
+<h3 class="section">8.1 Log messages</h3>
+
+<p>Whenever you commit a file you specify a log message.
+</p>
+<p>To look through the log messages which have been
+specified for every revision which has been committed,
+use the <code>cvs log</code> command (see <a href="log.html#log">log</a>).
+</p>
+
+
+
+</body>
+</html>
Index: html_node/log-options.html
===================================================================
RCS file: html_node/log-options.html
diff -N html_node/log-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/log-options.html 28 Dec 2015 15:58:25 -0000 1.1
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: log options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: log options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
log options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="log.html#log" rel="up" title="log">
+<link href="log-examples.html#log-examples" rel="next" title="log examples">
+<link href="log.html#log" rel="prev" title="log">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="log-options"></a>
+<div class="header">
+<p>
+Next: <a href="log-examples.html#log-examples" accesskey="n" rel="next">log
examples</a>, Up: <a href="log.html#log" accesskey="u" rel="up">log</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="log-options-1"></a>
+<h4 class="appendixsubsec">A.15.1 log options</h4>
+
+<p>By default, <code>log</code> prints all information that is
+available. All other options restrict the output. Note that the revision
+selection options (<code>-b</code>, <code>-d</code>, <code>-r</code>,
<code>-s</code>, and <code>-w</code>)
+have no
+effect, other than possibly causing a search for files in Attic directories,
+when used in conjunction with the options that restrict the output to only
+<code>log</code> header fields (<code>-h</code>, <code>-R</code>, and
<code>-t</code>)
+unless the <code>-S</code> option is also specified.
+</p>
+<dl compact="compact">
+<dt><code>-b</code></dt>
+<dd><p>Print information about the revisions on the default
+branch, normally the highest branch on the trunk.
+</p>
+</dd>
+<dt><code>-d <var>dates</var></code></dt>
+<dd><p>Print information about revisions with a checkin
+date/time in the range given by the
+semicolon-separated list of dates. The date formats
+accepted are those accepted by the ‘<samp>-D</samp>’ option to
+many other <small>CVS</small> commands (see <a
href="Common-options.html#Common-options">Common options</a>).
+Dates can be combined into ranges as follows:
+</p>
+<dl compact="compact">
+<dt><code><var>d1</var><<var>d2</var></code></dt>
+<dt><code><var>d2</var>><var>d1</var></code></dt>
+<dd><p>Select the revisions that were deposited between
+<var>d1</var> and <var>d2</var>.
+</p>
+</dd>
+<dt><code><<var>d</var></code></dt>
+<dt><code><var>d</var>></code></dt>
+<dd><p>Select all revisions dated <var>d</var> or earlier.
+</p>
+</dd>
+<dt><code><var>d</var><</code></dt>
+<dt><code>><var>d</var></code></dt>
+<dd><p>Select all revisions dated <var>d</var> or later.
+</p>
+</dd>
+<dt><code><var>d</var></code></dt>
+<dd><p>Select the single, latest revision dated <var>d</var> or
+earlier.
+</p></dd>
+</dl>
+
+<p>The ‘<samp>></samp>’ or ‘<samp><</samp>’
characters may be followed by
+‘<samp>=</samp>’ to indicate an inclusive range rather than an
+exclusive one.
+</p>
+<p>Note that the separator is a semicolon (;).
+</p>
+</dd>
+<dt><code>-h</code></dt>
+<dd><p>Print only the name of the <small>RCS</small> file, name
+of the file in the working directory, head,
+default branch, access list, locks, symbolic names, and
+suffix.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. (Default
+is to run recursively).
+</p>
+</dd>
+<dt><code>-N</code></dt>
+<dd><p>Do not print the list of tags for this file. This
+option can be very useful when your site uses a lot of
+tags, so rather than "more"’ing over 3 pages of tag
+information, the log information is presented without
+tags at all.
+</p>
+</dd>
+<dt><code>-n</code></dt>
+<dd><p>Print the list of tags for this file. This option can
+be very useful when your <samp>.cvsrc</samp> file has a
+‘<samp>log -N</samp>’ entry as a way to get a full list of all
+of the tags.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Print only the name of the <small>RCS</small> file.
+</p>
+</dd>
+<dt><code>-r<var>revisions</var></code></dt>
+<dd><p>Print information about revisions given in the
+comma-separated list <var>revisions</var> of revisions and
+ranges. The following table explains the available
+range formats:
+</p>
+<dl compact="compact">
+<dt><code><var>rev1</var>:<var>rev2</var></code></dt>
+<dd><p>Revisions <var>rev1</var> to <var>rev2</var> (which must be on
+the same branch).
+</p>
+</dd>
+<dt><code><var>rev1</var>::<var>rev2</var></code></dt>
+<dd><p>The same, but excluding <var>rev1</var>.
+</p>
+</dd>
+<dt><code>:<var>rev</var></code></dt>
+<dt><code>::<var>rev</var></code></dt>
+<dd><p>Revisions from the beginning of the branch up to
+and including <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>:</code></dt>
+<dd><p>Revisions starting with <var>rev</var> to the end of the
+branch containing <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>rev</var>::</code></dt>
+<dd><p>Revisions starting just after <var>rev</var> to the end of the
+branch containing <var>rev</var>.
+</p>
+</dd>
+<dt><code><var>branch</var></code></dt>
+<dd><p>An argument that is a branch means all revisions on
+that branch.
+</p>
+</dd>
+<dt><code><var>branch1</var>:<var>branch2</var></code></dt>
+<dt><code><var>branch1</var>::<var>branch2</var></code></dt>
+<dd><p>A range of branches means all revisions
+on the branches in that range.
+</p>
+</dd>
+<dt><code><var>branch</var>.</code></dt>
+<dd><p>The latest revision in <var>branch</var>.
+</p></dd>
+</dl>
+
+<p>A bare ‘<samp>-r</samp>’ with no revisions means the latest
+revision on the default branch, normally the trunk.
+There can be no space between the ‘<samp>-r</samp>’ option and
+its argument.
+</p>
+</dd>
+<dt><code>-S</code></dt>
+<dd><p>Suppress the header if no revisions are selected.
+</p>
+</dd>
+<dt><code>-s <var>states</var></code></dt>
+<dd><p>Print information about revisions whose state
+attributes match one of the states given in the
+comma-separated list <var>states</var>. Individual states may
+be any text string, though <small>CVS</small> commonly only uses two
+states, ‘<samp>Exp</samp>’ and ‘<samp>dead</samp>’.
See <a href="admin-options.html#admin-options">admin options</a>
+for more information.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>Print the same as ‘<samp>-h</samp>’, plus the descriptive
text.
+</p>
+</dd>
+<dt><code>-w<var>logins</var></code></dt>
+<dd><p>Print information about revisions checked in by users
+with login names appearing in the comma-separated list
+<var>logins</var>. If <var>logins</var> is omitted, the user’s
+login is assumed. There can be no space between the
+‘<samp>-w</samp>’ option and its argument.
+</p></dd>
+</dl>
+
+<p><code>log</code> prints the intersection of the revisions
+selected with the options ‘<samp>-d</samp>’,
‘<samp>-s</samp>’, and
+‘<samp>-w</samp>’, intersected with the union of the revisions
+selected by ‘<samp>-b</samp>’ and ‘<samp>-r</samp>’.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="log-examples.html#log-examples" accesskey="n" rel="next">log
examples</a>, Up: <a href="log.html#log" accesskey="u" rel="up">log</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/log.html
===================================================================
RCS file: html_node/log.html
diff -N html_node/log.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/log.html 28 Dec 2015 15:58:26 -0000 1.1
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: log</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: log">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
log">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="log-options.html#log-options" rel="next" title="log options">
+<link href="import-examples.html#import-examples" rel="prev" title="import
examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="log"></a>
+<div class="header">
+<p>
+Next: <a href="rdiff.html#rdiff" accesskey="n" rel="next">rdiff</a>, Previous:
<a href="import.html#import" accesskey="p" rel="prev">import</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="log_002d_002d_002dPrint-out-log-information-for-files"></a>
+<h3 class="appendixsec">A.15 log—Print out log information for files</h3>
+<a name="index-log-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: log [options] [files…]
+</li><li> Requires: repository, working directory.
+</li><li> Changes: nothing.
+</li></ul>
+
+<p>Display log information for files. <code>log</code> used to
+call the <small>RCS</small> utility <code>rlog</code>. Although this
+is no longer true in the current sources, this history
+determines the format of the output and the options,
+which are not quite in the style of the other <small>CVS</small>
+commands.
+</p>
+<a name="index-Timezone_002c-in-output"></a>
+<a name="index-Zone_002c-time_002c-in-output"></a>
+<p>The output includes the location of the <small>RCS</small> file,
+the <em>head</em> revision (the latest revision on the
+trunk), all symbolic names (tags) and some other
+things. For each revision, the revision number, the
+author, the number of lines added/deleted and the log
+message are printed. All times are displayed in
+Coordinated Universal Time (UTC). (Other parts of
+<small>CVS</small> print times in the local timezone).
+</p>
+<p><strong><code>log</code> uses ‘<samp>-R</samp>’ in a way that
conflicts
+with the normal use inside <small>CVS</small> (see <a
href="Common-options.html#Common-options">Common options</a>).</strong>
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="log-options.html#log-options" accesskey="1">log
options</a>:</td><td> </td><td align="left" valign="top">log options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="log-examples.html#log-examples" accesskey="2">log
examples</a>:</td><td> </td><td align="left" valign="top">log
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/loginfo-example.html
===================================================================
RCS file: html_node/loginfo-example.html
diff -N html_node/loginfo-example.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/loginfo-example.html 28 Dec 2015 15:58:26 -0000 1.1
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: loginfo example</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: loginfo example">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
loginfo example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="loginfo.html#loginfo" rel="up" title="loginfo">
+<link href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy"
rel="next" title="Keeping a checked out copy">
+<link href="loginfo.html#loginfo" rel="prev" title="loginfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="loginfo-example"></a>
+<div class="header">
+<p>
+Next: <a href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy"
accesskey="n" rel="next">Keeping a checked out copy</a>, Up: <a
href="loginfo.html#loginfo" accesskey="u" rel="up">loginfo</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loginfo-example"></a>
+<h4 class="appendixsubsubsec">C.4.4.1 Loginfo example</h4>
+
+<p>The following <samp>loginfo</samp> file, together with the
+tiny shell-script below, appends all log messages
+to the file <samp>$CVSROOT/CVSROOT/commitlog</samp>,
+and any commits to the administrative files (inside
+the <samp>CVSROOT</samp> directory) are also logged in
+<samp>/usr/adm/cvsroot-log</samp>.
+Commits to the <samp>prog1</samp> directory are mailed to <tt>ceder</tt>.
+</p>
+<div class="example">
+<pre class="example">ALL /usr/local/bin/cvs-log
$CVSROOT/CVSROOT/commitlog $USER
+^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+^prog1 Mail -s %s ceder
+</pre></div>
+
+<p>The shell-script <samp>/usr/local/bin/cvs-log</samp> looks
+like this:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+(echo "------------------------------------------------------";
+ echo -n $2" ";
+ date;
+ echo;
+ cat) >> $1
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/loginfo.html
===================================================================
RCS file: html_node/loginfo.html
diff -N html_node/loginfo.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/loginfo.html 28 Dec 2015 15:58:26 -0000 1.1
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: loginfo</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: loginfo">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
loginfo">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit-files.html#commit-files" rel="up" title="commit files">
+<link href="loginfo-example.html#loginfo-example" rel="next" title="loginfo
example">
+<link href="editinfo-example.html#editinfo-example" rel="prev" title="editinfo
example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="loginfo"></a>
+<div class="header">
+<p>
+Previous: <a href="editinfo.html#editinfo" accesskey="p"
rel="prev">editinfo</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loginfo"></a>
+<h4 class="appendixsubsec">C.4.4 Loginfo</h4>
+<a name="index-loginfo-_0028admin-file_0029"></a>
+<a name="index-Storing-log-messages"></a>
+<a name="index-Mailing-log-messages"></a>
+<a name="index-Distributing-log-messages"></a>
+<a name="index-Log-messages"></a>
+
+<p>The <samp>loginfo</samp> file is used to control where
+‘<samp>cvs commit</samp>’ log information is sent. The first
+entry on a line is a regular expression which is tested
+against the directory that the change is being made to,
+relative to the <code>$CVSROOT</code>. If a match is found, then
+the remainder of the line is a filter program that
+should expect log information on its standard input.
+Note that the filter program <strong>must</strong> read <strong>all</strong>
+of the log information or <small>CVS</small> may fail with a broken pipe
signal.
+</p>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or ‘<samp>DEFAULT</samp>’.
+</p>
+<p>The first matching regular expression is used.
+</p>
+<p>See <a href="commit-files.html#commit-files">commit files</a>, for a
description of the syntax of
+the <samp>loginfo</samp> file.
+</p>
+<p>The user may specify a format string as
+part of the filter. The string is composed of a
+‘<samp>%</samp>’ followed by a space, or followed by a single
+format character, or followed by a set of format
+characters surrounded by ‘<samp>{</samp>’ and
‘<samp>}</samp>’ as
+separators. The format characters are:
+</p>
+<dl compact="compact">
+<dt><tt>s</tt></dt>
+<dd><p>file name
+</p></dd>
+<dt><tt>V</tt></dt>
+<dd><p>old version number (pre-checkin)
+</p></dd>
+<dt><tt>v</tt></dt>
+<dd><p>new version number (post-checkin)
+</p></dd>
+</dl>
+
+<p>All other characters that appear in a format string
+expand to an empty field (commas separating fields are
+still provided).
+</p>
+<p>For example, some valid format strings are ‘<samp>%</samp>’,
+‘<samp>%s</samp>’, ‘<samp>%{s}</samp>’, and
‘<samp>%{sVv}</samp>’.
+</p>
+<p>The output will be a space separated string of tokens enclosed in
+quotation marks (<tt>"</tt>).
+Any embedded dollar signs (<tt>$</tt>), backticks (<tt>`</tt>),
+backslashes (<tt>\</tt>), or quotation marks will be preceded
+by a backslash (this allows the shell to correctly parse it
+as a single string, reguardless of the characters it contains).
+For backwards compatibility, the first
+token will be the repository subdirectory. The rest of the
+tokens will be comma-delimited lists of the information
+requested in the format string. For example, if
+‘<samp>/u/src/master/yoyodyne/tc</samp>’ is the repository,
‘<samp>%{sVv}</samp>’
+is the format string, and three files (<tt>ChangeLog</tt>,
+<tt>Makefile</tt>, <tt>foo.c</tt>) were modified, the output
+might be:
+</p>
+<div class="example">
+<pre class="example">"yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4
foo.c,1.12,1.13"
+</pre></div>
+
+<p>As another example, ‘<samp>%{}</samp>’ means that only the
+name of the repository will be generated.
+</p>
+<p>Note: when <small>CVS</small> is accessing a remote repository,
+<samp>loginfo</samp> will be run on the <em>remote</em>
+(i.e., server) side, not the client side (see <a
href="Remote-repositories.html#Remote-repositories">Remote repositories</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="loginfo-example.html#loginfo-example" accesskey="1">loginfo
example</a>:</td><td> </td><td align="left" valign="top">Loginfo
example
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy"
accesskey="2">Keeping a checked out copy</a>:</td><td> </td><td
align="left" valign="top">Updating a tree on every checkin
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="editinfo.html#editinfo" accesskey="p"
rel="prev">editinfo</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/modules.html
===================================================================
RCS file: html_node/modules.html
diff -N html_node/modules.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/modules.html 28 Dec 2015 15:58:26 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: modules</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: modules">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
modules">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="Alias-modules.html#Alias-modules" rel="next" title="Alias modules">
+<link href="Administrative-files.html#Administrative-files" rel="prev"
title="Administrative files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="modules"></a>
+<div class="header">
+<p>
+Next: <a href="Wrappers.html#Wrappers" accesskey="n" rel="next">Wrappers</a>,
Up: <a href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-modules-file"></a>
+<h3 class="appendixsec">C.1 The modules file</h3>
+<a name="index-Modules-_0028admin-file_0029"></a>
+<a name="index-Defining-modules-_0028reference-manual_0029"></a>
+
+<p>The <samp>modules</samp> file records your definitions of
+names for collections of source code. <small>CVS</small> will
+use these definitions if you use <small>CVS</small> to update the
+modules file (use normal commands like <code>add</code>,
+<code>commit</code>, etc).
+</p>
+<p>The <samp>modules</samp> file may contain blank lines and
+comments (lines beginning with ‘<samp>#</samp>’) as well as
+module definitions. Long lines can be continued on the
+next line by specifying a backslash (‘<samp>\</samp>’) as the
+last character on the line.
+</p>
+<p>There are three basic types of modules: alias modules,
+regular modules, and ampersand modules. The difference
+between them is the way that they map files in the
+repository to files in the working directory. In all
+of the following examples, the top-level repository
+contains a directory called <samp>first-dir</samp>, which
+contains two files, <samp>file1</samp> and <samp>file2</samp>, and a
+directory <samp>sdir</samp>. <samp>first-dir/sdir</samp> contains
+a file <samp>sfile</samp>.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="Alias-modules.html#Alias-modules" accesskey="1">Alias
modules</a>:</td><td> </td><td align="left" valign="top">The
simplest kind of module
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Regular-modules.html#Regular-modules" accesskey="2">Regular
modules</a>:</td><td> </td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Ampersand-modules.html#Ampersand-modules" accesskey="3">Ampersand
modules</a>:</td><td> </td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Excluding-directories.html#Excluding-directories" accesskey="4">Excluding
directories</a>:</td><td> </td><td align="left"
valign="top">Excluding directories from a module
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Module-options.html#Module-options" accesskey="5">Module
options</a>:</td><td> </td><td align="left" valign="top">Regular and
ampersand modules can take options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="Module-program-options.html#Module-program-options" accesskey="6">Module
program options</a>:</td><td> </td><td align="left" valign="top">How
the modules “program options” programs
+ are run.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/rcsinfo.html
===================================================================
RCS file: html_node/rcsinfo.html
diff -N html_node/rcsinfo.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/rcsinfo.html 28 Dec 2015 15:58:27 -0000 1.1
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: rcsinfo</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: rcsinfo">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
rcsinfo">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="taginfo.html#taginfo" rel="next" title="taginfo">
+<link href="Keeping-a-checked-out-copy.html#Keeping-a-checked-out-copy"
rel="prev" title="Keeping a checked out copy">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="rcsinfo"></a>
+<div class="header">
+<p>
+Next: <a href="taginfo.html#taginfo" accesskey="n" rel="next">taginfo</a>,
Previous: <a href="commit-files.html#commit-files" accesskey="p"
rel="prev">commit files</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Rcsinfo"></a>
+<h3 class="appendixsec">C.5 Rcsinfo</h3>
+<a name="index-rcsinfo-_0028admin-file_0029"></a>
+<a name="index-Form-for-log-message"></a>
+<a name="index-Log-message-template"></a>
+<a name="index-Template-for-log-message"></a>
+
+<p>The <samp>rcsinfo</samp> file can be used to specify a form to
+edit when filling out the commit log. The
+<samp>rcsinfo</samp> file has a syntax similar to the
+<samp>verifymsg</samp>, <samp>commitinfo</samp> and <samp>loginfo</samp>
+files. See <a href="syntax.html#syntax">syntax</a>. Unlike the other files
the second
+part is <em>not</em> a command-line template. Instead,
+the part after the regular expression should be a full pathname to
+a file containing the log message template.
+</p>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<p>All occurrences of the name ‘<samp>ALL</samp>’ appearing as a
+regular expression are used in addition to the first
+matching regular expression or ‘<samp>DEFAULT</samp>’.
+</p>
+<p>The log message template will be used as a default log
+message. If you specify a log message with ‘<samp>cvs
+commit -m <var>message</var></samp>’ or ‘<samp>cvs commit -f
+<var>file</var></samp>’ that log message will override the
+template.
+</p>
+<p>See <a href="verifymsg.html#verifymsg">verifymsg</a>, for an example
<samp>rcsinfo</samp>
+file.
+</p>
+<p>When <small>CVS</small> is accessing a remote repository,
+the contents of <samp>rcsinfo</samp> at the time a directory
+is first checked out will specify a template which does
+not then change. If you edit <samp>rcsinfo</samp> or its
+templates, you may need to check out a new working
+directory.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/rdiff-examples.html
===================================================================
RCS file: html_node/rdiff-examples.html
diff -N html_node/rdiff-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/rdiff-examples.html 28 Dec 2015 15:58:27 -0000 1.1
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: rdiff examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: rdiff examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
rdiff examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="rdiff.html#rdiff" rel="up" title="rdiff">
+<link href="release.html#release" rel="next" title="release">
+<link href="rdiff-options.html#rdiff-options" rel="prev" title="rdiff options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="rdiff-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="rdiff-options.html#rdiff-options" accesskey="p"
rel="prev">rdiff options</a>, Up: <a href="rdiff.html#rdiff" accesskey="u"
rel="up">rdiff</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="rdiff-examples-1"></a>
+<h4 class="appendixsubsec">A.16.2 rdiff examples</h4>
+
+<p>Suppose you receive mail from <tt>address@hidden</tt> asking for an
+update from release 1.2 to 1.4 of the tc compiler. You
+have no such patches on hand, but with <small>CVS</small> that can
+easily be fixed with a command such as this:
+</p>
+<div class="example">
+<pre class="example">$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
+> Mail -s 'The patches you asked for' address@hidden
+</pre></div>
+
+<p>Suppose you have made release 1.3, and forked a branch
+called ‘<samp>R_1_3fix</samp>’ for bug fixes.
‘<samp>R_1_3_1</samp>’
+corresponds to release 1.3.1, which was made some time
+ago. Now, you want to see how much development has been
+done on the branch. This command can be used:
+</p>
+<div class="example">
+<pre class="example">$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
+cvs rdiff: Diffing module-name
+File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
+File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
+File bar.h,v changed from revision 1.29.2.1 to 1.2
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/rdiff-options.html
===================================================================
RCS file: html_node/rdiff-options.html
diff -N html_node/rdiff-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/rdiff-options.html 28 Dec 2015 15:58:28 -0000 1.1
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: rdiff options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: rdiff options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
rdiff options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="rdiff.html#rdiff" rel="up" title="rdiff">
+<link href="rdiff-examples.html#rdiff-examples" rel="next" title="rdiff
examples">
+<link href="rdiff.html#rdiff" rel="prev" title="rdiff">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="rdiff-options"></a>
+<div class="header">
+<p>
+Next: <a href="rdiff-examples.html#rdiff-examples" accesskey="n"
rel="next">rdiff examples</a>, Up: <a href="rdiff.html#rdiff" accesskey="u"
rel="up">rdiff</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="rdiff-options-1"></a>
+<h4 class="appendixsubsec">A.16.1 rdiff options</h4>
+
+<p>These standard options are supported by <code>rdiff</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D <var>date</var></code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; don’t descend subdirectories.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Examine directories recursively. This option is on by default.
+</p>
+</dd>
+<dt><code>-r <var>tag</var></code></dt>
+<dd><p>Use revision <var>tag</var>.
+</p></dd>
+</dl>
+
+<p>In addition to the above, these options are available:
+</p>
+<dl compact="compact">
+<dt><code>-c</code></dt>
+<dd><p>Use the context diff format. This is the default format.
+</p>
+</dd>
+<dt><code>-s</code></dt>
+<dd><p>Create a summary change report instead of a patch. The
+summary includes information about files that were
+changed or added between the releases. It is sent to
+the standard output device. This is useful for finding
+out, for example, which files have changed between two
+dates or revisions.
+</p>
+</dd>
+<dt><code>-t</code></dt>
+<dd><p>A diff of the top two revisions is sent to the standard
+output device. This is most useful for seeing what the
+last change to a file was.
+</p>
+</dd>
+<dt><code>-u</code></dt>
+<dd><p>Use the unidiff format for the context diffs.
+Remember that old versions
+of the <code>patch</code> program can’t handle the unidiff
+format, so if you plan to post this patch to the net
+you should probably not use ‘<samp>-u</samp>’.
+</p>
+</dd>
+<dt><code>-V <var>vn</var></code></dt>
+<dd><p>Expand keywords according to the rules current in
+<small>RCS</small> version <var>vn</var> (the expansion format changed with
+<small>RCS</small> version 5). Note that this option is no
+longer accepted. <small>CVS</small> will always expand keywords the
+way that <small>RCS</small> version 5 does.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="rdiff-examples.html#rdiff-examples" accesskey="n"
rel="next">rdiff examples</a>, Up: <a href="rdiff.html#rdiff" accesskey="u"
rel="up">rdiff</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/rdiff.html
===================================================================
RCS file: html_node/rdiff.html
diff -N html_node/rdiff.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/rdiff.html 28 Dec 2015 15:58:28 -0000 1.1
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: rdiff</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: rdiff">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
rdiff">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="rdiff-options.html#rdiff-options" rel="next" title="rdiff options">
+<link href="log-examples.html#log-examples" rel="prev" title="log examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="rdiff"></a>
+<div class="header">
+<p>
+Next: <a href="release.html#release" accesskey="n" rel="next">release</a>,
Previous: <a href="log.html#log" accesskey="p" rel="prev">log</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a
name="rdiff_002d_002d_002d_0027patch_0027-format-diffs-between-releases"></a>
+<h3 class="appendixsec">A.16 rdiff—’patch’ format diffs
between releases</h3>
+<a name="index-rdiff-_0028subcommand_0029"></a>
+
+<ul>
+<li> rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules…
+</li><li> Requires: repository.
+</li><li> Changes: nothing.
+</li><li> Synonym: patch
+</li></ul>
+
+<p>Builds a Larry Wall format patch(1) file between two
+releases, that can be fed directly into the <code>patch</code>
+program to bring an old release up-to-date with the new
+release. (This is one of the few <small>CVS</small> commands that
+operates directly from the repository, and doesn’t
+require a prior checkout.) The diff output is sent to
+the standard output device.
+</p>
+<p>You can specify (using the standard ‘<samp>-r</samp>’ and
+‘<samp>-D</samp>’ options) any combination of one or two
+revisions or dates. If only one revision or date is
+specified, the patch file reflects differences between
+that revision or date and the current head revisions in
+the <small>RCS</small> file.
+</p>
+<p>Note that if the software release affected is contained
+in more than one directory, then it may be necessary to
+specify the ‘<samp>-p</samp>’ option to the <code>patch</code>
command when
+patching the old sources, so that <code>patch</code> is able to find
+the files that are located in other directories.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="rdiff-options.html#rdiff-options" accesskey="1">rdiff
options</a>:</td><td> </td><td align="left" valign="top">rdiff
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="rdiff-examples.html#rdiff-examples" accesskey="2">rdiff
examples</a>:</td><td> </td><td align="left" valign="top">rdiff
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/release-examples.html
===================================================================
RCS file: html_node/release-examples.html
diff -N html_node/release-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/release-examples.html 28 Dec 2015 15:58:29 -0000 1.1
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: release examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: release examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
release examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="release.html#release" rel="up" title="release">
+<link href="remove.html#remove" rel="next" title="remove">
+<link href="release-output.html#release-output" rel="prev" title="release
output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="release-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="release-output.html#release-output" accesskey="p"
rel="prev">release output</a>, Up: <a href="release.html#release" accesskey="u"
rel="up">release</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="release-examples-1"></a>
+<h4 class="appendixsubsec">A.17.3 release examples</h4>
+
+<p>Release the <samp>tc</samp> directory, and delete your local working copy
+of the files.
+</p>
+<div class="example">
+<pre class="example">$ cd .. # <span class="roman">You must stand
immediately above the</span>
+ # <span class="roman">sources when you issue ‘<samp>cvs
release</samp>’.</span>
+$ cvs release -d tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+$
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/release-options.html
===================================================================
RCS file: html_node/release-options.html
diff -N html_node/release-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/release-options.html 28 Dec 2015 15:58:29 -0000 1.1
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: release options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: release options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
release options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="release.html#release" rel="up" title="release">
+<link href="release-output.html#release-output" rel="next" title="release
output">
+<link href="release.html#release" rel="prev" title="release">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="release-options"></a>
+<div class="header">
+<p>
+Next: <a href="release-output.html#release-output" accesskey="n"
rel="next">release output</a>, Up: <a href="release.html#release" accesskey="u"
rel="up">release</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="release-options-1"></a>
+<h4 class="appendixsubsec">A.17.1 release options</h4>
+
+<p>The <code>release</code> command supports one command option:
+</p>
+<dl compact="compact">
+<dt><code>-d</code></dt>
+<dd><p>Delete your working copy of the file if the release
+succeeds. If this flag is not given your files will
+remain in your working directory.
+</p>
+<p><strong>WARNING: The <code>release</code> command deletes
+all directories and files recursively. This
+has the very serious side-effect that any directory
+created inside checked-out sources, and not added to
+the repository (using the <code>add</code> command;
+see <a href="Adding-files.html#Adding-files">Adding files</a>) will be
silently deleted—even
+if it is non-empty!</strong>
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/release-output.html
===================================================================
RCS file: html_node/release-output.html
diff -N html_node/release-output.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/release-output.html 28 Dec 2015 15:58:29 -0000 1.1
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: release output</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: release output">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
release output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="release.html#release" rel="up" title="release">
+<link href="release-examples.html#release-examples" rel="next" title="release
examples">
+<link href="release-options.html#release-options" rel="prev" title="release
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="release-output"></a>
+<div class="header">
+<p>
+Next: <a href="release-examples.html#release-examples" accesskey="n"
rel="next">release examples</a>, Previous: <a
href="release-options.html#release-options" accesskey="p" rel="prev">release
options</a>, Up: <a href="release.html#release" accesskey="u"
rel="up">release</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="release-output-1"></a>
+<h4 class="appendixsubsec">A.17.2 release output</h4>
+
+<p>Before <code>release</code> releases your sources it will
+print a one-line message for any file that is not
+up-to-date.
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dt><code>P <var>file</var></code></dt>
+<dd><p>There exists a newer revision of this file in the
+repository, and you have not modified your local copy
+of the file (‘<samp>U</samp>’ and ‘<samp>P</samp>’
mean the same thing).
+</p>
+</dd>
+<dt><code>A <var>file</var></code></dt>
+<dd><p>The file has been added to your private copy of the
+sources, but has not yet been committed to the
+repository. If you delete your copy of the sources
+this file will be lost.
+</p>
+</dd>
+<dt><code>R <var>file</var></code></dt>
+<dd><p>The file has been removed from your private copy of the
+sources, but has not yet been removed from the
+repository, since you have not yet committed the
+removal. See <a href="commit.html#commit">commit</a>.
+</p>
+</dd>
+<dt><code>M <var>file</var></code></dt>
+<dd><p>The file is modified in your working directory. There
+might also be a newer revision inside the repository.
+</p>
+</dd>
+<dt><code>? <var>file</var></code></dt>
+<dd><p><var>file</var> is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for <small>CVS</small> to ignore (see the
+description of the ‘<samp>-I</samp>’ option, and
+see <a href="cvsignore.html#cvsignore">cvsignore</a>). If you remove your
working
+sources, this file will be lost.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/release.html
===================================================================
RCS file: html_node/release.html
diff -N html_node/release.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/release.html 28 Dec 2015 15:58:30 -0000 1.1
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: release</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: release">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
release">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="release-options.html#release-options" rel="next" title="release
options">
+<link href="rdiff-examples.html#rdiff-examples" rel="prev" title="rdiff
examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="release"></a>
+<div class="header">
+<p>
+Next: <a href="remove.html#remove" accesskey="n" rel="next">remove</a>,
Previous: <a href="rdiff.html#rdiff" accesskey="p" rel="prev">rdiff</a>, Up: <a
href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS commands</a>
[<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="release_002d_002d_002dIndicate-that-a-Module-is-no-longer-in-use"></a>
+<h3 class="appendixsec">A.17 release—Indicate that a Module is no longer
in use</h3>
+<a name="index-release-_0028subcommand_0029"></a>
+
+<ul>
+<li> release [-d] directories…
+</li><li> Requires: Working directory.
+</li><li> Changes: Working directory, history log.
+</li></ul>
+
+<p>This command is meant to safely cancel the effect of
+‘<samp>cvs checkout</samp>’. Since <small>CVS</small>
doesn’t lock files, it
+isn’t strictly necessary to use this command. You can
+always simply delete your working directory, if you
+like; but you risk losing changes you may have
+forgotten, and you leave no trace in the <small>CVS</small> history
+file (see <a href="history-file.html#history-file">history file</a>) that
you’ve abandoned your
+checkout.
+</p>
+<p>Use ‘<samp>cvs release</samp>’ to avoid these problems. This
+command checks that no uncommitted changes are
+present; that you are executing it from immediately
+above a <small>CVS</small> working directory; and that the repository
+recorded for your files is the same as the repository
+defined in the module database.
+</p>
+<p>If all these conditions are true, ‘<samp>cvs release</samp>’
+leaves a record of its execution (attesting to your
+intentionally abandoning your checkout) in the <small>CVS</small>
+history log.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="release-options.html#release-options" accesskey="1">release
options</a>:</td><td> </td><td align="left" valign="top">release
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="release-output.html#release-output" accesskey="2">release
output</a>:</td><td> </td><td align="left" valign="top">release
output
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="release-examples.html#release-examples" accesskey="3">release
examples</a>:</td><td> </td><td align="left" valign="top">release
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/remove-examples.html
===================================================================
RCS file: html_node/remove-examples.html
diff -N html_node/remove-examples.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/remove-examples.html 28 Dec 2015 15:58:30 -0000 1.1
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: remove examples</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: remove examples">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
remove examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="remove.html#remove" rel="up" title="remove">
+<link href="update.html#update" rel="next" title="update">
+<link href="remove-options.html#remove-options" rel="prev" title="remove
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="remove-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="remove-options.html#remove-options" accesskey="p"
rel="prev">remove options</a>, Up: <a href="remove.html#remove" accesskey="u"
rel="up">remove</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="remove-examples-1"></a>
+<h4 class="appendixsubsec">A.18.2 remove examples</h4>
+
+<a name="Removing-a-file"></a>
+<h4 class="appendixsubsubsec">A.18.2.1 Removing a file</h4>
+
+<div class="example">
+<pre class="example">$ cvs remove remove.me
+cvs remove: file `remove.me' still in working directory
+cvs remove: 1 file exists; remove it first
+$ rm -f remove.me
+$ cvs remove remove.me
+cvs remove: scheduling `remove.me' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+
+$ ls remove.it
+remove.it
+$ cvs remove -f remove.it
+cvs remove: scheduling `remove.it' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+</pre></div>
+
+<a name="Removing-entire-directories"></a>
+<h4 class="appendixsubsubsec">A.18.2.2 Removing entire directories</h4>
+<div class="example">
+<pre class="example">$ tree -d a
+a
+|-- CVS
+`-- b
+ `-- CVS
+
+3 directories
+$ cvs remove -f a
+cvs remove: Removing a
+cvs remove: Removing a/b
+cvs remove: scheduling `a/b/c' for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/remove-options.html
===================================================================
RCS file: html_node/remove-options.html
diff -N html_node/remove-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/remove-options.html 28 Dec 2015 15:58:30 -0000 1.1
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: remove options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: remove options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
remove options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="remove.html#remove" rel="up" title="remove">
+<link href="remove-examples.html#remove-examples" rel="next" title="remove
examples">
+<link href="remove.html#remove" rel="prev" title="remove">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="remove-options"></a>
+<div class="header">
+<p>
+Next: <a href="remove-examples.html#remove-examples" accesskey="n"
rel="next">remove examples</a>, Up: <a href="remove.html#remove" accesskey="u"
rel="up">remove</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="remove-options-1"></a>
+<h4 class="appendixsubsec">A.18.1 remove options</h4>
+
+<p>These standard options are supported by <code>remove</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Process directories recursively. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+</dl>
+
+<p>In addition, these options are also supported:
+</p>
+<dl compact="compact">
+<dt><code>-f</code></dt>
+<dd><p>Note that this is not the standard behavior of
+the ‘<samp>-f</samp>’ option as defined in <a
href="Common-options.html#Common-options">Common options</a>.
+</p>
+<p>Delete files before removing them.
+</p>
+<p>Entire directory hierarchies are easily removed
+using ‘<samp>-f</samp>’, but take note that it is not as
+easy to resurrect directory hierarchies as it is
+to remove them.
+</p>
+</dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: html_node/remove.html
===================================================================
RCS file: html_node/remove.html
diff -N html_node/remove.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/remove.html 28 Dec 2015 15:58:31 -0000 1.1
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: remove</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: remove">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
remove">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="remove-options.html#remove-options" rel="next" title="remove
options">
+<link href="release-examples.html#release-examples" rel="prev" title="release
examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="remove"></a>
+<div class="header">
+<p>
+Next: <a href="update.html#update" accesskey="n" rel="next">update</a>,
Previous: <a href="release.html#release" accesskey="p" rel="prev">release</a>,
Up: <a href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS
commands</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="remove_002d_002d_002dRemove-files-from-active-use"></a>
+<h3 class="appendixsec">A.18 remove—Remove files from active use</h3>
+<a name="index-remove-_0028subcommand_0029"></a>
+
+<ul>
+<li> Synopsis: remove [-flR] [files...]
+</li><li> Requires: repository, working directory.
+</li><li> Changes: working directory.
+</li></ul>
+
+<p>The <code>remove</code> command is used to remove unwanted
+files from active use. The user normally deletes the
+files from the working directory prior to invocation
+of the <code>remove</code> command. Only the working
+directory is updated. Changes to the repository are
+not made until the <code>commit</code> command is run.
+</p>
+<p>The <code>remove</code> command does not delete files from
+from the repository. <small>CVS</small> keeps all historical
+data in the repository so that it is possible to
+reconstruct previous states of the projects under
+revision control.
+</p>
+<p>To undo <small>CVS</small> <code>remove</code> or to resurrect files
+that were previously removed, See <a href="add.html#add">add</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="remove-options.html#remove-options" accesskey="1">remove
options</a>:</td><td> </td><td align="left" valign="top">remove
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="remove-examples.html#remove-examples" accesskey="2">remove
examples</a>:</td><td> </td><td align="left" valign="top">remove
examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/syntax.html
===================================================================
RCS file: html_node/syntax.html
diff -N html_node/syntax.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/syntax.html 28 Dec 2015 15:58:31 -0000 1.1
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: syntax</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: syntax">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
syntax">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Trigger-Scripts.html#Trigger-Scripts" rel="up" title="Trigger
Scripts">
+<link href="Trigger-Script-Security.html#Trigger-Script-Security" rel="next"
title="Trigger Script Security">
+<link href="Trigger-Scripts.html#Trigger-Scripts" rel="prev" title="Trigger
Scripts">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="syntax"></a>
+<div class="header">
+<p>
+Next: <a href="Trigger-Script-Security.html#Trigger-Script-Security"
accesskey="n" rel="next">Trigger Script Security</a>, Up: <a
href="Trigger-Scripts.html#Trigger-Scripts" accesskey="u" rel="up">Trigger
Scripts</a> [<a href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-common-syntax"></a>
+<h4 class="appendixsubsec">C.3.1 The common syntax</h4>
+<a name="index-Info-files-_0028syntax_0029"></a>
+<a name="index-Syntax-of-info-files"></a>
+<a name="index-Common-syntax-of-info-files"></a>
+
+
+<p>The administrative files such as <samp>commitinfo</samp>,
+<samp>loginfo</samp>, <samp>rcsinfo</samp>, <samp>verifymsg</samp>, etc.,
+all have a common format. The purpose of the files are
+described later on. The common syntax is described
+here.
+</p>
+<a name="index-Regular-expression-syntax"></a>
+<p>Each line contains the following:
+</p><ul>
+<li> A regular expression. This is a basic regular
+expression in the syntax used by GNU emacs.
+
+</li><li> A whitespace separator—one or more spaces and/or tabs.
+
+</li><li> A file name or command-line template.
+</li></ul>
+
+<p>Blank lines are ignored. Lines that start with the
+character ‘<samp>#</samp>’ are treated as comments. Long lines
+unfortunately can <em>not</em> be broken in two parts in
+any way.
+</p>
+<p>The first regular expression that matches the current
+directory name in the repository is used. The rest of the line
+is used as a file name or command-line as appropriate.
+</p>
+
+
+
+
+</body>
+</html>
Index: html_node/taginfo.html
===================================================================
RCS file: html_node/taginfo.html
diff -N html_node/taginfo.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/taginfo.html 28 Dec 2015 15:58:31 -0000 1.1
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: taginfo</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: taginfo">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
taginfo">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Administrative-files.html#Administrative-files" rel="up"
title="Administrative files">
+<link href="cvsignore.html#cvsignore" rel="next" title="cvsignore">
+<link href="rcsinfo.html#rcsinfo" rel="prev" title="rcsinfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="taginfo"></a>
+<div class="header">
+<p>
+Next: <a href="cvsignore.html#cvsignore" accesskey="n"
rel="next">cvsignore</a>, Previous: <a href="rcsinfo.html#rcsinfo"
accesskey="p" rel="prev">rcsinfo</a>, Up: <a
href="Administrative-files.html#Administrative-files" accesskey="u"
rel="up">Administrative files</a> [<a href="index.html#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a
href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Taginfo"></a>
+<h3 class="appendixsec">C.6 Taginfo</h3>
+<a name="index-taginfo-_0028admin-file_0029"></a>
+<a name="index-Tags_002c-logging"></a>
+<a name="index-Tags_002c-verifying"></a>
+<p>The <samp>taginfo</samp> file defines programs to execute
+when someone executes a <code>tag</code> or <code>rtag</code>
+command. The <samp>taginfo</samp> file has the standard form
+for trigger scripts (see <a
href="Trigger-Scripts.html#Trigger-Scripts">Trigger Scripts</a>),
+where each line is a regular expression
+followed by a command to execute (see <a
href="syntax.html#syntax">syntax</a>). The arguments passed
+to the command are, in order, the <var>tagname</var>,
+<var>operation</var> (<code>add</code> for <code>tag</code>,
+<code>mov</code> for <code>tag -F</code>, and <code>del</code> for
+<code>tag -d</code>), <var>repository</var>, and any remaining are
+pairs of <var>filename</var> <var>revision</var>. A non-zero
+exit of the filter program will cause the tag to be
+aborted.
+</p>
+<p>Here is an example of using the <samp>taginfo</samp> file
+to log <code>tag</code> and <code>rtag</code>
+commands. In the <samp>taginfo</samp> file put:
+</p>
+<div class="example">
+<pre class="example">ALL /usr/local/cvsroot/CVSROOT/loggit
+</pre></div>
+
+<p>Where <samp>/usr/local/cvsroot/CVSROOT/loggit</samp> contains the
+following script:
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+echo "$@" >>/home/kingdon/cvsroot/CVSROOT/taglog
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: html_node/update-options.html
===================================================================
RCS file: html_node/update-options.html
diff -N html_node/update-options.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/update-options.html 28 Dec 2015 15:58:32 -0000 1.1
@@ -0,0 +1,202 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: update options</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: update options">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
update options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="update.html#update" rel="up" title="update">
+<link href="update-output.html#update-output" rel="next" title="update output">
+<link href="update.html#update" rel="prev" title="update">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="update-options"></a>
+<div class="header">
+<p>
+Next: <a href="update-output.html#update-output" accesskey="n"
rel="next">update output</a>, Up: <a href="update.html#update" accesskey="u"
rel="up">update</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="update-options-1"></a>
+<h4 class="appendixsubsec">A.19.1 update options</h4>
+
+<p>These standard options are available with <code>update</code>
+(see <a href="Common-options.html#Common-options">Common options</a> for a
complete description of
+them):
+</p>
+<dl compact="compact">
+<dt><code>-D date</code></dt>
+<dd><p>Use the most recent revision no later than <var>date</var>.
+This option is sticky, and implies ‘<samp>-P</samp>’.
+See <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a> for more
information on sticky tags/dates.
+</p>
+</dd>
+<dt><code>-f</code></dt>
+<dd><p>Only useful with the ‘<samp>-D <var>date</var></samp>’ or
‘<samp>-r
+<var>tag</var></samp>’ flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+</p>
+</dd>
+<dt><code>-k <var>kflag</var></code></dt>
+<dd><p>Process keywords according to <var>kflag</var>. See
+<a href="Keyword-substitution.html#Keyword-substitution">Keyword
substitution</a>.
+This option is sticky; future updates of
+this file in this working directory will use the same
+<var>kflag</var>. The <code>status</code> command can be viewed
+to see the sticky options. See <a
href="Invoking-CVS.html#Invoking-CVS">Invoking CVS</a> for
+more information on the <code>status</code> command.
+</p>
+</dd>
+<dt><code>-l</code></dt>
+<dd><p>Local; run only in current working directory. See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-P</code></dt>
+<dd><p>Prune empty directories. See <a
href="Moving-directories.html#Moving-directories">Moving directories</a>.
+</p>
+</dd>
+<dt><code>-p</code></dt>
+<dd><p>Pipe files to the standard output.
+</p>
+</dd>
+<dt><code>-R</code></dt>
+<dd><p>Update directories recursively (default). See <a
href="Recursive-behavior.html#Recursive-behavior">Recursive behavior</a>.
+</p>
+</dd>
+<dt><code>-r rev</code></dt>
+<dd><p>Retrieve revision/tag <var>rev</var>. This option is sticky,
+and implies ‘<samp>-P</samp>’.
+See <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a>, for more
information on sticky tags/dates.
+</p></dd>
+</dl>
+
+<p>These special options are also available with
+<code>update</code>.
+</p>
+<dl compact="compact">
+<dt><code>-A</code></dt>
+<dd><p>Reset any sticky tags, dates, or ‘<samp>-k</samp>’ options.
+Does not reset sticky ‘<samp>-k</samp>’ options on modified files.
+See <a href="Sticky-tags.html#Sticky-tags">Sticky tags</a> for more
information on sticky tags/dates.
+</p>
+</dd>
+<dt><code>-C</code></dt>
+<dd><p>Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+<samp>.#<var>file</var>.<var>revision</var></samp>, however).
+</p>
+</dd>
+<dt><code>-d</code></dt>
+<dd><p>Create any directories that exist in the repository if
+they’re missing from the working directory. Normally,
+<code>update</code> acts only on directories and files that
+were already enrolled in your working directory.
+</p>
+<p>This is useful for updating directories that were
+created in the repository since the initial checkout;
+but it has an unfortunate side effect. If you
+deliberately avoided certain directories in the
+repository when you created your working directory
+(either through use of a module name or by listing
+explicitly the files and directories you wanted on the
+command line), then updating with ‘<samp>-d</samp>’ will create
+those directories, which may not be what you want.
+</p>
+</dd>
+<dt><code>-I <var>name</var></code></dt>
+<dd><p>Ignore files whose names match <var>name</var> (in your
+working directory) during the update. You can specify
+‘<samp>-I</samp>’ more than once on the command line to specify
+several files to ignore. Use ‘<samp>-I !</samp>’ to avoid
+ignoring any files at all. See <a
href="cvsignore.html#cvsignore">cvsignore</a> for other
+ways to make <small>CVS</small> ignore some files.
+</p>
+</dd>
+<dt><code>-W<var>spec</var></code></dt>
+<dd><p>Specify file names that should be filtered during
+update. You can use this option repeatedly.
+</p>
+<p><var>spec</var> can be a file name pattern of the same type
+that you can specify in the <samp>.cvswrappers</samp>
+file. See <a href="Wrappers.html#Wrappers">Wrappers</a>.
+</p>
+</dd>
+<dt><code>-j<var>revision</var></code></dt>
+<dd><p>With two ‘<samp>-j</samp>’ options, merge changes from the
+revision specified with the first ‘<samp>-j</samp>’ option to
+the revision specified with the second ‘<samp>j</samp>’ option,
+into the working directory.
+</p>
+<p>With one ‘<samp>-j</samp>’ option, merge changes from the
+ancestor revision to the revision specified with the
+‘<samp>-j</samp>’ option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the ‘<samp>-j</samp>’ option.
+</p>
+<p>Note that using a single ‘<samp>-j <var>tagname</var></samp>’
option rather than
+‘<samp>-j <var>branchname</var></samp>’ to merge changes from a
branch will
+often not remove files which were removed on the branch.
+See <a href="Merging-adds-and-removals.html#Merging-adds-and-removals">Merging
adds and removals</a> for more information.
+</p>
+<p>In addition, each ‘<samp>-j</samp>’ option can contain an
optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+‘<samp>-j<var>Symbolic_Tag</var>:<var>Date_Specifier</var></samp>’.
+</p>
+<p>See <a href="Branching-and-merging.html#Branching-and-merging">Branching
and merging</a>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="update-output.html#update-output" accesskey="n"
rel="next">update output</a>, Up: <a href="update.html#update" accesskey="u"
rel="up">update</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/update-output.html
===================================================================
RCS file: html_node/update-output.html
diff -N html_node/update-output.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/update-output.html 28 Dec 2015 15:58:32 -0000 1.1
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: update output</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: update output">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
update output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="update.html#update" rel="up" title="update">
+<link href="Invoking-CVS.html#Invoking-CVS" rel="next" title="Invoking CVS">
+<link href="update-options.html#update-options" rel="prev" title="update
options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="update-output"></a>
+<div class="header">
+<p>
+Previous: <a href="update-options.html#update-options" accesskey="p"
rel="prev">update options</a>, Up: <a href="update.html#update" accesskey="u"
rel="up">update</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="update-output-1"></a>
+<h4 class="appendixsubsec">A.19.2 update output</h4>
+
+<p><code>update</code> and <code>checkout</code> keep you informed of
+their progress by printing a line for each file, preceded
+by one character indicating the status of the file:
+</p>
+<dl compact="compact">
+<dt><code>U <var>file</var></code></dt>
+<dd><p>The file was brought up to date with respect to the
+repository. This is done for any file that exists in
+the repository but not in your working directory, and for files
+that you haven’t changed but are not the most recent
+versions available in the repository.
+</p>
+</dd>
+<dt><code>P <var>file</var></code></dt>
+<dd><p>Like ‘<samp>U</samp>’, but the <small>CVS</small> server
sends a patch instead of an entire
+file. This accomplishes the same thing as ‘<samp>U</samp>’ using
less bandwidth.
+</p>
+</dd>
+<dt><code>A <var>file</var></code></dt>
+<dd><p>The file has been added to your private copy of the
+sources, and will be added to the source repository
+when you run <code>commit</code> on the file. This is a
+reminder to you that the file needs to be committed.
+</p>
+</dd>
+<dt><code>R <var>file</var></code></dt>
+<dd><p>The file has been removed from your private copy of the
+sources, and will be removed from the source repository
+when you run <code>commit</code> on the file. This is a
+reminder to you that the file needs to be committed.
+</p>
+</dd>
+<dt><code>M <var>file</var></code></dt>
+<dd><p>The file is modified in your working directory.
+</p>
+<p>‘<samp>M</samp>’ can indicate one of two states for a file
+you’re working on: either there were no modifications
+to the same file in the repository, so that your file
+remains as you last saw it; or there were modifications
+in the repository as well as in your copy, but they
+were merged successfully, without conflict, in your
+working directory.
+</p>
+<p><small>CVS</small> will print some messages if it merges your work,
+and a backup copy of your working file (as it looked
+before you ran <code>update</code>) will be made. The exact
+name of that file is printed while <code>update</code> runs.
+</p>
+</dd>
+<dt><code>C <var>file</var></code></dt>
+<dd><a name="index-_002e_0023-files"></a>
+<a name="index-_005f_005f-files-_0028VMS_0029"></a>
+<p>A conflict was detected while trying to merge your
+changes to <var>file</var> with changes from the source
+repository. <var>file</var> (the copy in your working
+directory) is now the result of attempting to merge
+the two revisions; an unmodified copy of your file
+is also in your working directory, with the name
+<samp>.#<var>file</var>.<var>revision</var></samp> where <var>revision</var>
+is the revision that your modified file started
+from. Resolve the conflict as described in
+<a href="Conflicts-example.html#Conflicts-example">Conflicts example</a>.
+(Note that some systems automatically purge
+files that begin with <samp>.#</samp> if they have not been
+accessed for a few days. If you intend to keep a copy
+of your original file, it is a very good idea to rename
+it.) Under <small>VMS</small>, the file name starts with
+<samp>__</samp> rather than <samp>.#</samp>.
+</p>
+</dd>
+<dt><code>? <var>file</var></code></dt>
+<dd><p><var>file</var> is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for <small>CVS</small> to ignore (see the
+description of the ‘<samp>-I</samp>’ option, and
+see <a href="cvsignore.html#cvsignore">cvsignore</a>).
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="update-options.html#update-options" accesskey="p"
rel="prev">update options</a>, Up: <a href="update.html#update" accesskey="u"
rel="up">update</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: html_node/update.html
===================================================================
RCS file: html_node/update.html
diff -N html_node/update.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/update.html 28 Dec 2015 15:58:32 -0000 1.1
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: update</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: update">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
update">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="CVS-commands.html#CVS-commands" rel="up" title="CVS commands">
+<link href="update-options.html#update-options" rel="next" title="update
options">
+<link href="remove-examples.html#remove-examples" rel="prev" title="remove
examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="update"></a>
+<div class="header">
+<p>
+Previous: <a href="remove.html#remove" accesskey="p" rel="prev">remove</a>,
Up: <a href="CVS-commands.html#CVS-commands" accesskey="u" rel="up">CVS
commands</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="update_002d_002d_002dBring-work-tree-in-sync-with-repository"></a>
+<h3 class="appendixsec">A.19 update—Bring work tree in sync with
repository</h3>
+<a name="index-update-_0028subcommand_0029"></a>
+
+<ul>
+<li> update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D
date] [-W spec] files…
+</li><li> Requires: repository, working directory.
+</li><li> Changes: working directory.
+</li></ul>
+
+<p>After you’ve run checkout to create your private copy
+of source from the common repository, other developers
+will continue changing the central source. From time
+to time, when it is convenient in your development
+process, you can use the <code>update</code> command from
+within your working directory to reconcile your work
+with any revisions applied to the source repository
+since your last checkout or update.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a
href="update-options.html#update-options" accesskey="1">update
options</a>:</td><td> </td><td align="left" valign="top">update
options
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="update-output.html#update-output" accesskey="2">update
output</a>:</td><td> </td><td align="left" valign="top">update output
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: html_node/user_002ddefined-logging.html
===================================================================
RCS file: html_node/user_002ddefined-logging.html
diff -N html_node/user_002ddefined-logging.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/user_002ddefined-logging.html 28 Dec 2015 15:58:33 -0000
1.1
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: user-defined
logging</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: user-defined logging">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
user-defined logging">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="History-browsing.html#History-browsing" rel="up" title="History
browsing">
+<link href="Binary-files.html#Binary-files" rel="next" title="Binary files">
+<link href="history-database.html#history-database" rel="prev" title="history
database">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="user_002ddefined-logging"></a>
+<div class="header">
+<p>
+Previous: <a href="history-database.html#history-database" accesskey="p"
rel="prev">history database</a>, Up: <a
href="History-browsing.html#History-browsing" accesskey="u" rel="up">History
browsing</a> [<a href="index.html#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="User_002ddefined-logging"></a>
+<h3 class="section">8.3 User-defined logging</h3>
+
+<p>You can customize <small>CVS</small> to log various kinds of
+actions, in whatever manner you choose. These
+mechanisms operate by executing a script at various
+times. The script might append a message to a file
+listing the information and the programmer who created
+it, or send mail to a group of developers, or, perhaps,
+post a message to a particular newsgroup. To log
+commits, use the <samp>loginfo</samp> file (see <a
href="loginfo.html#loginfo">loginfo</a>).
+To log tags, use the <samp>taginfo</samp> file (see <a
href="taginfo.html#taginfo">taginfo</a>).
+To log checkouts, exports, and tags,
+respectively, you can also use the
+‘<samp>-o</samp>’, ‘<samp>-e</samp>’, and
‘<samp>-t</samp>’ options in the
+modules file. For a more flexible way of giving
+notifications to various users, which requires less in
+the way of keeping centralized scripts up to date, use
+the <code>cvs watch add</code> command (see <a
href="Getting-Notified.html#Getting-Notified">Getting Notified</a>); this
command is useful even if you are not
+using <code>cvs watch on</code>.
+</p>
+
+
+
+</body>
+</html>
Index: html_node/verifymsg.html
===================================================================
RCS file: html_node/verifymsg.html
diff -N html_node/verifymsg.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ html_node/verifymsg.html 28 Dec 2015 15:58:33 -0000 1.1
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>CVS—Concurrent Versions System v1.11.23: verifymsg</title>
+
+<meta name="description" content="CVS—Concurrent Versions System
v1.11.23: verifymsg">
+<meta name="keywords" content="CVS—Concurrent Versions System v1.11.23:
verifymsg">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="commit-files.html#commit-files" rel="up" title="commit files">
+<link href="editinfo.html#editinfo" rel="next" title="editinfo">
+<link href="commitinfo.html#commitinfo" rel="prev" title="commitinfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+<a name="verifymsg"></a>
+<div class="header">
+<p>
+Next: <a href="editinfo.html#editinfo" accesskey="n" rel="next">editinfo</a>,
Previous: <a href="commitinfo.html#commitinfo" accesskey="p"
rel="prev">commitinfo</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Verifying-log-messages"></a>
+<h4 class="appendixsubsec">C.4.2 Verifying log messages</h4>
+<a name="index-verifymsg-_0028admin-file_0029"></a>
+<a name="index-Log-message_002c-verifying"></a>
+
+<p>Once you have entered a log message, you can evaluate
+that message to check for specific content, such as
+a bug ID. Use the <samp>verifymsg</samp> file to
+specify a program that is used to verify the log message.
+This program could be a simple script that checks
+that the entered message contains the required fields.
+</p>
+<p>The <samp>verifymsg</samp> file is often most useful together
+with the <samp>rcsinfo</samp> file, which can be used to
+specify a log message template.
+</p>
+<p>Each line in the <samp>verifymsg</samp> file consists of a
+regular expression and a command-line template. The
+template must include a program name, and can include
+any number of arguments. The full path to the current
+log message template file is appended to the template.
+</p>
+<p>One thing that should be noted is that the ‘<samp>ALL</samp>’
+keyword is not supported. If more than one matching
+line is found, the first one is used. This can be
+useful for specifying a default verification script in a
+directory, and then overriding it in a subdirectory.
+</p>
+<a name="index-DEFAULT-in-verifymsg"></a>
+<p>If the repository name does not match any of the
+regular expressions in this file, the ‘<samp>DEFAULT</samp>’
+line is used, if it is specified.
+</p>
+<a name="index-Exit-status_002c-of-verifymsg"></a>
+<p>If the verification script exits with a non-zero exit status,
+the commit is aborted.
+</p>
+<a name="index-verifymsg_002c-changing-the-log-message"></a>
+<p>In the default configuration, CVS allows the
+verification script to change the log message. This is
+controlled via the RereadLogAfterVerify CVSROOT/config
+option.
+</p>
+<p>When ‘<samp>RereadLogAfterVerify=always</samp>’ or
+‘<samp>RereadLogAfterVerify=stat</samp>’, the log message will
+either always be reread after the verification script
+is run or reread only if the log message file status
+has changed.
+</p>
+<p>See <a href="config.html#config">config</a>, for more on CVSROOT/config
options.
+</p>
+<p>It is NOT a good idea for a <samp>verifymsg</samp> script to
+interact directly with the user in the various
+client/server methods. For the <code>pserver</code> method,
+there is no protocol support for communicating between
+<samp>verifymsg</samp> and the client on the remote end. For the
+<code>ext</code> and <code>server</code> methods, it is possible
+for CVS to become confused by the characters going
+along the same channel as the CVS protocol
+messages. See <a href="Remote-repositories.html#Remote-repositories">Remote
repositories</a>, for more
+information on client/server setups. In addition, at the time
+the <samp>verifymsg</samp> script runs, the CVS
+server has locks in place in the repository. If control is
+returned to the user here then other users may be stuck waiting
+for access to the repository.
+</p>
+<p>This option can be useful if you find yourself using an
+rcstemplate that needs to be modified to remove empty
+elements or to fill in default values. It can also be
+useful if the rcstemplate has changed in the repository
+and the CVS/Template was not updated, but is able to be
+adapted to the new format by the verification script
+that is run by <samp>verifymsg</samp>.
+</p>
+<p>An example of an update might be to change all
+occurrences of ’BugId:’ to be ’DefectId:’ (which can be
+useful if the rcstemplate has recently been changed and
+there are still checked-out user trees with cached
+copies in the CVS/Template file of the older version).
+</p>
+<p>Another example of an update might be to delete a line
+that contains ’BugID: none’ from the log message after
+validation of that value as being allowed is made.
+</p>
+<p>The following is a little silly example of a
+<samp>verifymsg</samp> file, together with the corresponding
+<samp>rcsinfo</samp> file, the log message template and an
+verification script. We begin with the log message template.
+We want to always record a bug-id number on the first
+line of the log message. The rest of log message is
+free text. The following template is found in the file
+<samp>/usr/cvssupport/tc.template</samp>.
+</p>
+<div class="example">
+<pre class="example">BugId:
+</pre></div>
+
+<p>The script <samp>/usr/cvssupport/bugid.verify</samp> is used to
+evaluate the log message.
+</p>
+<div class="example">
+<pre class="example">#!/bin/sh
+#
+# bugid.verify filename
+#
+# Verify that the log message contains a valid bugid
+# on the first line.
+#
+if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
+ exit 0
+elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
+ # It is okay to allow commits with 'BugId: none',
+ # but do not put that text into the real log message.
+ grep -v '^BugId:[ ]*none$' > $1.rewrite
+ mv $1.rewrite $1
+ exit 0
+else
+ echo "No BugId found."
+ exit 1
+fi
+</pre></div>
+
+<p>The <samp>verifymsg</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/bugid.verify
+</pre></div>
+
+<p>The <samp>rcsinfo</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">^tc /usr/cvssupport/tc.template
+</pre></div>
+
+<p>The <samp>config</samp> file contains this line:
+</p>
+<div class="example">
+<pre class="example">RereadLogAfterVerify=always
+</pre></div>
+
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="editinfo.html#editinfo" accesskey="n" rel="next">editinfo</a>,
Previous: <a href="commitinfo.html#commitinfo" accesskey="p"
rel="prev">commitinfo</a>, Up: <a href="commit-files.html#commit-files"
accesskey="u" rel="up">commit files</a> [<a
href="index.html#SEC_Contents" title="Table of contents"
rel="contents">Contents</a>][<a href="Index.html#Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- trans-coord/manual/cvs cvs.dvi.gz cvs.html cvs....,
Pavel Kharitonov <=