]> PCL-CVS — Emacs Front-End to CVS Copyright © 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free SoftwareFoundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being “The GNU Manifesto”, “Distribution” and “GNU GENERAL PUBLIC LICENSE”, with the Front-Cover texts being “A GNU Manual”, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License” in the Emacs manual. This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license. (a) The FSF's Back-Cover Text is: “You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.” PCL-CVS This manual describes PCL-CVS, the GNU Emacs front-end to CVS. It is nowhere near complete, so you are advised to use M-x customize-group RET pcl-cvs RET and to look at the documentation strings of the various commands and major modes for further information. About PCL-CVS About PCL-CVS PCL-CVS is a front-end to CVS versions 1.9 and later. It concisely shows the present status of a checked out module in an Emacs buffer and provides single-key access to the most frequently used CVS commands. For Emacs users accustomed to VC, PCL-CVS can be thought of as a replacement for VC-dired (see See section ``Dired under VC'' in The GNU Emacs Manual) specifically designed for CVS. PCL-CVS was originally written many years ago by Per Cederqvist who proudly maintained it until January 1996, at which point he released the beta version 2.0b2 and passed on the maintainership to Greg A Woods. Development stayed mostly dormant for a few years during which version 2.0 never seemed to be able to leave the “beta” stage while a separate XEmacs version was slowly splitting away. In late 1998, Stefan Monnier picked up development again, adding some major new functionality and taking over the maintenance. Contributors to PCL-CVS Contributors Authors Contributions to the package are welcome. I have limited time to work on this project, but I will gladly add any code that you contribute to me to this package (see ). The following persons have made contributions to PCL-CVS. Brian Berliner wrote CVS, together with some other contributors.Without his work on CVS this package would be useless… Per Cederqvist wrote most of the otherwise unattributed functions inPCL-CVS as well as all the documentation. Inge Wallin wrote the skeleton ofpcl-cvs.texi, and gave useful comments on it. He also wrotethe files elib-node.el and compile-all.el. The filecookie.el was inspired by Inge. Linus Tolke contributed useful commentson both the functionality and the documentation. Jamie Zawinski contributedpcl-cvs-lucid.el, which was later renamed topcl-cvs-xemacs.el. Leif Lonnblad contributed RCVS support (since superseded by the newremote CVS support). Jim Blandy contributed hooks to automaticallyguess CVS log entries from ChangeLog contents, and initial support ofthe new Cygnus / Cyclic remote CVS, as well as various sundry bug fixesand cleanups. Jim Kingdon contributed lots of fixes tothe build and installation procedure. Greg A. Woods contributed code to implementthe use of per-file diff buffers, and vendor join diffs with emerge andediff, as well as various and sundry bug fixes and cleanups. Greg Klanderman implementedtoggling of marked files, setting of CVS command flags via prefixarguments, updated the XEmacs support, updated the manual, and fixednumerous bugs. Stefan Monnier added a slew of otherfeatures and introduced even more new bugs. If there's any bug left,you can be sure it's his. Masatake YAMATO made a graciouscontribution of his cvstree code to display a tree of tags which was latersuperseded by the new cvs-status-mode. Apart from these, a lot of people have sent us suggestions, ideas, requests, bug reports and encouragement. Thanks a lot! Without you there would be no new releases of PCL-CVS. Getting started Introduction Example run Sample session This document assumes that you know what CVS is, and that you at least know the fundamental concepts of CVS. If that is not the case, you should read the CVS documentation. Type info -f cvs or man cvs. PCL-CVS is only useful once you have checked out a module. So before you invoke it, you must have a copy of a module somewhere in the file system. You can invoke PCL-CVS by typing M-x cvs-examine RET. You can also invoke it via the menu bar, under ‘Tools’. Or, if you prefer, you can also invoke PCL-CVS by simply visiting the CVS administrative subdirectory of your module, with a prefix argument. For example, to invoke PCL-CVS in a separate frame, type C-u C-x 5 f ~/my/project/CVS RET. The function cvs-examine will ask for a directory. The command ‘cvs -n update’ will be run in that directory. (It should contain files that have been checked out from a CVS archive.) The output from cvs will be parsed and presented in a table in a buffer called ‘*cvs*’. It might look something like this: Repository : /usr/CVSroot Module : test Working dir: /users/ceder/FOO/test In directory .: Need-Update bar Need-Update file.txt Modified namechange Need-Update newer In directory sub: Modified ChangeLog --------------------- End --------------------- -- last cmd: cvs -f -z6 -n update -d -P -- In this example, your repository is in /usr/CVSroot and CVS has been run in the directory /users/ceder/FOO/test. The three files (bar, file.txt and newer) that are marked with ‘Need-Update’ have been changed by someone else in the CVS repository. Two files (namechange and sub/ChangeLog) have been modified locally, and need to be checked in. You can move the cursor up and down in the buffer with C-n and C-p or n and p. If you press c on one of the ‘Modified’ files, that file will be checked in to the CVS repository. See . You can also press O to update any of the files that are marked ‘Need-Update’. You can also run M-x cvs-update RET (bound to M-u in the ‘*cvs*’ buffer) to update all the files. You can then press = to easily get a ‘diff’ between your modified file and the base version that you started from, or you can press l to get the output from ‘cvs log’. Many more such commands are available simply by pressing a key (see ). Buffer contents Buffer contents *cvs* buffer contents The display contains several columns, some of which are optional. These columns are, from left to right: Optionally, the head revision of the file. This is the latest versionfound in the repository. It might also contain (instead of the headrevision) a sub status which typically gives further information abouthow we got to the current state, for example ‘patched’,‘merged’, … An asterisk when the file is marked (see ). The actual status of the file wrt the repository. See below. Optionally, the base revision of the file. This is the versionwhich the copy in your working directory is based upon. The file name. The ‘file status’ field can have the following values: ModifiedThe file is modified in your working directory, and there was nomodification to the same file in the repository. This status can havethe following substatus: mergedThe file was modified in your working directory, and there weremodifications in the repository as well, but they were mergedsuccessfully, without conflict, in your working directory. ConflictA conflict was detected while trying to merge your changes to filewith changes from the repository. file (the copy in yourworking directory) is now the output of the rcsmerge command onthe two versions; an unmodified copy of your file is also in yourworking directory, with the name .#file.version,where version is the RCS revision that your modified file startedfrom. See , for more details.A conflict can also come from a disagreement on the existence of the filerather than on its content. This case is indicated by the followingpossible substatus: removedThe file is locally removed but a new revision has been committed tothe repository by someone else. addedThe file is locally added and has also been added to the repositoryby someone else. modifiedThe file is locally modified but someone else has removed it from therepository. AddedThe file has been added by you, but it still needs to be checked in tothe repository. RemovedThe file has been removed by you, but it still needs to be checked in tothe repository. You can resurrect it by typing a (see ). UnknownA file that was detected in your directory, but that neither appears inthe repository, nor is present on the list of files that CVS shouldignore. Up-to-dateThe file is up to date with respect to the version in the repository.This status can have a substatus of: addedYou have just added the file to the repository. updatedThe file was brought up to date with respect to the repository. This isdone for any file that exists in the repository but not in your source,and for files that you haven't changed but are not the most recentversions available in the repository. patchedThe file was brought up to date with respect to the remote repository byway of fetching and applying a patch to the file in your source. Thisis equivalent to ‘updated’ except that CVS decided to use a hopefullymore efficient method. committedYou just committed the file. Need-UpdateEither a newer version than the one in your source is available in therepository and you have not modified your checked out version, or thefile exists in the repository but not in your source. Use‘cvs-mode-update’ bound to O to update the file. Need-MergeYou have modified the checked out version of the file, and a newerversion is available in the repository. A merge will take place whenyou run a ‘cvs-update’. MissingThe file has been unexpectedly removed from your working directoryalthough it has not been ‘cvs remove’d. Selected files Selected files Marked files File selection Active files Applicable Many of the commands work on the current set of selected files which can be either the set of marked files (if any file is marked and marks are not ignored) or whichever file or directory the cursor is on. If a directory is selected but the command cannot be applied to a directory, then it will be applied to the set of files under this directory which are in the ‘*cvs*’ buffer. cvs-mode-force-command cvs-allow-dir-commit Furthermore, each command only operates on a subset of the selected files, depending on whether or not the command is applicable to each file (based on the file's status). For example, cvs-mode-commit is not applicable to a file whose status is ‘Need-Update’. If it should happen that PCL-CVS guesses the applicability wrong, you can override it with the special prefix cvs-mode-force-command normally bound to M-f (and file a bug report). The applicability rule can be slightly changed with cvs-allow-dir-commit and cvs-force-dir-tag. By default, marks are always in effect (you may change this, however, by setting the variable cvs-default-ignore-marks) except for the commands that ‘tag’ or ‘diff’ a file (which can be changed with the variable cvs-invert-ignore-marks). In addition, you may use the special prefix cvs-mode-toggle-marks normally bound to T to toggle the use of marks for the following command. This scheme might seem a little complicated, but once one gets used to it, it is quite powerful. For commands to mark and unmark files, see . Commands The nodes in this menu contains explanations about all the commands that you can use in PCL-CVS. They are grouped together by type. Entering PCL-CVS cvs-update cvs-examine cvs-status cvs-checkout cvs-quickdir Creating the *cvs* buffer Most commands in PCL-CVS require that you have a ‘*cvs*’ buffer. The commands that you use to get one are listed below. For each, a ‘cvs’ process will be run, the output will be parsed by PCL-CVS, and the result will be printed in the ‘*cvs*’ buffer (see , for a description of the buffer's contents). M-x cvs-update Run a ‘cvs update’ command. You will be asked for the directoryin which the ‘cvs update’ will be run. M-x cvs-examine Run a ‘cvs -n update’ command. This is identical to the previouscommand, except that it will only check what needs to be done but willnot change anything. You will be asked for the directory inwhich the ‘cvs -n update’ will be run. M-x cvs-status Run a ‘cvs status’ command. You will be asked for the directoryin which the ‘cvs status’ will be run. M-x cvs-checkout Run a ‘cvs checkout’ command. You will be asked for the directoryin which the ‘cvs update’ will be run and the module to be checkedout. M-x cvs-quickdir Populate the ‘*cvs*’ buffer by just looking at the CVS/Entriesfiles. This is very much like cvs-examine except that it doesnot access the CVS repository, which is a major advantage when therepository is far away. But of course, it will not be able to detectwhen a file needs to be updated or merged. cvs-dired-action cvs-dired-use-hook The first four of those commands are also reachable from the menu bar under ‘Tools->PCL-CVS’. Finally, an alternative way is to visit the CVS administrative subdirectory in your work area with a simple prefix argument. For example C-u C-x C-f ~/my/work/CVS RET. This by default runs cvs-quickdir but the specific behavior can be changed with cvs-dired-action and cvs-dired-use-hook. By default, the commands above will descend recursively into subdirectories. You can avoid that behavior by including ‘-l’ in the flags for the command. These flags can be set by giving a prefix argument to the command (e.g., by typing C-u M-x cvs-update RET -l RET). Setting flags for CVS commands Optional switches to CVS Command-line options to CVS This section describes the convention used by nearly all PCL-CVS commands for setting optional flags sent to CVS. A single C-u prefix argument is used to cause the command to prompt for flags to be used for the current invocation of the command only. Two C-u prefix arguments are used to prompt for flags which will be set permanently, for the current invocation and all that follow, until the flags are changed, or unless temporary flags are set which override them. Perhaps an example or two is in order. Say you are about to add a binary file to the repository, and want to specify the flags ‘-kb’ to ‘cvs add’. You can type C-u a -kb RET, and the file will be added. Subsequent ‘cvs add’ commands will use the previously prevailing flags. As a second example, say you are about to perform a diff and want to see the result in unified diff format, i.e. you'd like to pass the flag ‘-u’ to both ‘cvs diff’ and ‘diff’. You'd also like all subsequent diffs to use this flag. You can type C-u C-u = -u RET and the diff will be performed, and the default flags will be set to ("-u"). You can of course override this flag for a single diff by using a single C-u prefix argument. Special prefix In addition to this, some commands can take special prefix arguments. These work as follows: When called with a C-u prefix, the user is prompted for a new value of the special prefix and the special prefix is activated for the next command. When called without the C-u prefix, the special prefix is re-activated (with the same value as last time) for the next command. Calling the prefix command again when it's already activated deactivates it. Calling it with the C-u C-u prefix activates it for all subsequent commands until you deactivate it explicitly. The special prefixes are: T Toggles whether or not marks will be active in the next command. b Provide the next command with a branch (can be any versionspecifier) to work on. B Secondary branch argument. Only meaningful if b is also used.It can be used to provide a second branch argument tocvs-mode-diff or to cvs-mode-update. M-f Forces the next command to apply to every selected file rather than onlyto the ones PCL-CVS thinks are relevant. Updating the ‘*cvs*’ buffer cvs-update cvs-examine cvs-status cvs-mode-update cvs-mode-examine cvs-mode-status The following commands can be used from within the ‘*cvs*’ buffer to update the display: M-u Runs the command ‘cvs-update’. M-e Runs the command ‘cvs-examine’. M-s Runs the command ‘cvs-status’. In addition to the above commands which operate on the whole module, you can run the equivalent CVS command on just a subset of the files/directories with these keys: O Runs cvs-mode-update on the selected files. When run on thetop-level directory, this is equivalent to M-u. e Runs cvs-mode-examine on the selected files. When run on thetop-level directory, this is equivalent to M-e. cvs-status-mode s Runs cvs-mode-status on the selected files. When run on thetop-level directory, this is equivalent to M-s, except thatCVS output will be shown in a ‘*cvs-info*’ buffer that will beput in ‘cvs-status-mode’. Movement Commands Movement Commands cvs-mode-next-line cvs-mode-previous-line SPC–Move down one file n–Move down one file p–Move up one file You can use most normal Emacs commands to move forward and backward in the buffer. Some keys are rebound to functions that take advantage of the fact that the buffer is a PCL-CVS buffer: SPCn These keys move the cursor one file forward, towards the end of thebuffer (cvs-mode-next-line). p This key moves one file backward, towards the beginning of the buffer(cvs-mode-previous-line). Marking files Selecting files (commands to mark files) Marking files m–marking a file M–marking all files u–unmark a file ESC DEL–unmark all files DEL–unmark previous file %–mark files matching regexp S–mark files in a particular state T–toggle marks cvs-mode-mark cvs-mode-unmark cvs-mode-mark-all-files cvs-mode-unmark-all-files cvs-mode-unmark-up cvs-mode-mark-matching-files cvs-mode-mark-on-state cvs-mode-toggle-marks PCL-CVS works on a set of selected files (see ). You can mark and unmark files with these commands: m This marks the file that the cursor is positioned on. If the cursor ispositioned on a directory all files in that directory are marked(cvs-mode-mark). u Unmark the file that the cursor is positioned on. If the cursor is on adirectory, all files in that directory are unmarked(cvs-mode-unmark). M Mark all files in the buffer (cvs-mode-mark-all-files). M-DEL Unmark all files (cvs-mode-unmark-all-files). DEL Unmark the file on the previous line, and move point to that line(cvs-mode-unmark-up). % Mark all files matching a regular expression(cvs-mode-mark-matching-files). S Mark all files in a particular state, such as “Modified” or“Removed” (cvs-mode-mark-on-state). T Toggle use of marks for the next command (cvs-mode-toggle-marks). Committing changes Committing changes cvs-mode-commit cvs-mode-commit-setup c–commit files C–commit files with ChangeLog message cvs-auto-revert (variable) Commit buffer Edit buffer Erasing commit message Reverting buffers after commit Committing changes basically works as follows: After having selected the files you want to commit, you type eitherc or C which brings up a special buffer‘*cvs-commit*’. You type in the log message describing the changes you're about tocommit (see ). When you're happy with it, you type C-c C-c to do the actualcommit. There's no hidden state, so you can abort the process or pick it up again at any time. log-edit-confirm (variable) The set of files actually committed is really decided only during the very last step, which is a mixed blessing. It allows you to go back and change your mind about which files to commit, but it also means that you might inadvertently change the set of selected files. To reduce the risk of error, C-c C-c will ask for confirmation if the set of selected files has changed between the first step and the last. You can change this last detail with log-edit-confirm. As for the difference between c (i.e. cvs-mode-commit) and C (i.e. cvs-mode-commit-setup) is that the first gets you straight to ‘*cvs-commit*’ without erasing it or changing anything to its content, while the second first erases ‘*cvs-commit*’ and tries to initialize it with a sane default (it does that by either using a template provided by the CVS administrator or by extracting a relevant log message from a ChangeLog file). If you are editing the files in your Emacs, an automatic ‘revert-buffer’ will be performed. (If the file contains ‘$Id$’ keywords, ‘cvs commit’ will write a new file with the new values substituted. The auto-revert makes sure that you get them into your buffer.) The revert will not occur if you have modified your buffer, or if ‘cvs-auto-revert’ is set to ‘nil’. Editing files Editing files Finding files Loading files Dired Invoking dired cvs-mode-find-file cvs-mode-find-file-other-window cvs-mode-add-change-log-entry-other-window f–find file or directory o–find file in other window A–add ChangeLog entry There are currently three commands that can be used to find a file (that is, load it into a buffer and start editing it there). These commands work on the line that the cursor is situated at. They always ignore any marked files. f Find the file that the cursor points to (cvs-mode-find-file). Ifthe cursor points to a directory, run dired on that directory;*note (emacs)Dired::. o Like f, but use another window(cvs-mode-find-file-other-window). A Invoke ‘add-change-log-entry-other-window’ to edit aChangeLog file. The ChangeLog file will be found in thedirectory of the file the cursor points to, or in a parent of thatdirectory (cvs-mode-add-change-log-entry-other-window). Getting info about files Status (cvs command) Log (RCS/cvs command) Getting status l–run ‘cvs log s–run ‘cvs status cvs-mode-log cvs-mode-status l Call the command cvs-mode-log which runs ‘cvs log’ on allselected files, and show the result in a temporary buffer‘*cvs-info*’ (see ). s Call the command cvs-mode-status which runs ‘cvs status’ onall selected files, and show the result in a temporary buffer‘*cvs-info*’. Adding and removing files Adding files Removing files Resurrecting files Deleting files Putting files under CVS control a–add a file r–remove a file cvs-mode-add cvs-mode-remove-file The following commands are available to make it easy to add files to and remove them from the CVS repository. a Add all selected files. This command can be used on ‘Unknown’files (see ). The status of the file will change to‘Added’, and you will have to use c (‘cvs-mode-commit’see ), to really add the file to therepository.This command can also be used on ‘Removed’ files (before you committhem) to resurrect them.The command that is run is cvs-mode-add. r This command removes the selected files (after prompting forconfirmation). The files are deleted from your directory and(unless the status was ‘Unknown’; see ) they willalso be ‘cvs remove’d. If the files' status was ‘Unknown’they will disappear from the buffer. Otherwise their status will change to‘Removed’, and you must use c (‘cvs-mode-commit’,see ) to commit the removal.The command that is run is cvs-mode-remove-file. Undoing changes Undo changes Flush changes U–undo changes cvs-mode-undo-local-changes U If you have modified a file, and for some reason decide that you don'twant to keep the changes, you can undo them with this command. It worksby removing your working copy of the file and then getting the latestversion from the repository (cvs-mode-undo-local-changes). Removing handled entries Expunging uninteresting entries Uninteresting entries, getting rid of them Getting rid of uninteresting lines Removing uninteresting (processed) lines Handled lines, removing them x–remove processed entries C-k–remove selected entries cvs-mode-remove-handled cvs-mode-acknowledge cvs-mode-ignore x This command allows you to remove all entries that you have processed.More specifically, the lines for ‘Up-to-date’ files (see ) are removed from the buffer. If a directory becomes emptythe heading for that directory is also removed. This makes it easier toget an overview of what needs to be done. cvs-mode-remove-handled (variable)x invokes cvs-mode-remove-handled. If‘cvs-auto-remove-handled’ is set to non-nil, this willautomatically be performed after every commit. C-k This command can be used for lines that ‘cvs-mode-remove-handled’ wouldnot delete, but that you want to delete (cvs-mode-acknowledge). Ignoring files Ignoring files i–ignoring files cvs-mode-ignore i Arrange so that CVS will ignore the selected files. The file names areadded to the .cvsignore file in the corresponding directory. Ifthe .cvsignore file doesn't exist, it will be created.The .cvsignore file should normally be added to the repository,but you could ignore it as well, if you like it better that way.This runs cvs-mode-ignore. Viewing differences Diff Invoking diff Conflicts, how to resolve them Viewing differences d=–run ‘cvs diff =–run ‘cvs diff db–diff against base version dh–diff against head of repository dr–diff between base and head of repository dv–diff against vendor branch dy–diff against yesterday's head cvs-mode-diff cvs-mode-diff-backup cvs-mode-diff-head cvs-mode-diff-repository cvs-mode-diff-vendor cvs-mode-diff-yesterday cvs-invert-ignore-marks (variable) =d = Display a ‘cvs diff’ between the selected files and the versionthat they are based on (cvs-mode-diff). d b If CVS finds a conflict while merging two versions of a file (during a‘cvs update’, see ) it will save theoriginal file in a file called .#file.version wherefile is the name of the file, and version is the revisionnumber that file was based on.With the d b command you can run a ‘diff’ on the files.#file.version and file. d h Display a ‘cvs diff’ between the selected files and the headrevision (the most recent version on the currentbranch) in the repository (cvs-mode-diff-head). d r Display a ‘cvs diff’ between the base revision of the selectedfiles and the head revision in the repository. This displays thechanges anyone has committed to the repository since you last executeda checkout, update or commit operation(cvs-mode-diff-repository). d v Display a ‘cvs diff’ between the selected files and the headrevision of the vendor branch in the repository(cvs-mode-diff-vendor). d y Display a ‘cvs diff’ between the selected files and yesterday'shead revision in the repository(cvs-mode-diff-yesterday). By default, ‘diff’ commands ignore the marks. This can be changed with cvs-invert-ignore-marks. Running ediff Ediff Invoking ediff Viewing differences Conflicts, how to resolve them Resolving conflicts e–invoke ‘ediff cvs-mode-idiff cvs-mode-imerge cvs-idiff-imerge-handlers (variable)d e This uses ediff (or emerge, depending on‘cvs-idiff-imerge-handlers’) to allow you to view diffs.If a prefix argument is given, PCL-CVS will prompt for a revision againstwhich the diff should be made, else the default will be to use the BASErevision. Merging with ediff and emerge d E This command use ediff (or emerge, see above) to allow youto do an interactive 3-way merge.Please note: when the file status is ‘Conflict’,CVS has already performed a merge. The resulting file is not used inany way if you use this command. If you use the q command inside‘ediff’ (to successfully terminate a merge) the file that CVScreated will be overwritten. Updating files cvs-mode-update Updating files O–update files O Update all selected files with status ‘Need-update’ by running‘cvs update’ on them (cvs-mode-update). Tagging files cvs-mode-tag cvs-mode-untag cvs-rtag Tagging files M-t–repository tag files t–tag files cvs-invert-ignore-marks (variable) cvs-force-dir-tag (variable) t Tag all selected files by running ‘cvs tag’ onthem (cvs-mode-tag). It's usually preferable to tag a directoryat a time. Rather than selecting all files (which too often doesn'tselect all files but only the few that are displayed), clear theselection with M-DEL (cvs-mode-unmark-all-files), positionthe cursor on the directory you want to tag and hit t. By default, ‘tag’ commands ignore the marks. This can be changed with cvs-invert-ignore-marks. Also, by default ‘tag’ can only be applied to directories, see cvs-force-dir-tag if you want to change this behavior. Miscellaneous commands cvs-mode-byte-compile-files Recompiling elisp files Byte compilation cvs-mode-delete-lock Getting rid of lock files Lock files q–bury the PCL-CVS buffer cvs-bury-buffer cvs-mode-quit Quitting h–help ?–help cvs-help Help M-x cvs-mode-byte-compile-files Byte compile all selected files that end in .el. M-x cvs-mode-delete-lock This command deletes the lock files thatthe ‘*cvs*’ buffer informs you about. You should normally never have touse this command, since CVS tries very carefully to always remove thelock files itself.You can only use this command when a message in the ‘*cvs*’ buffer tellsyou so. You should wait a while before using this command in casesomeone else is running a cvs command.Also note that this only works if the repository is local. ?h Show a summary of common command key bindings in the echoarea (cvs-help). q Bury the PCL-CVS buffer (cvs-bury-buffer). M-x cvs-mode-quit Quit PCL-CVS, killing the ‘*cvs*’ buffer. Editing a Log Message Log Edit mode mode, Log Edit Buffers for entering/editing log messages for changes which are about to be committed are put into Log Edit mode. Sometimes the log buffer contains default text when you enter it, typically the last log message entered. If it does, mark and point are set around the entire contents of the buffer so that it is easy to kill the contents of the buffer with C-w. log-edit-insert-changelog If you work by writing entries in the ChangeLog (see ) and then commit the change under revision control, you can generate the Log Edit text from the ChangeLog using C-c C-a (log-edit-insert-changelog). This looks for entries for the file(s) concerned in the top entry in the ChangeLog and uses those paragraphs as the log text. This text is only inserted if the top entry was made under your user name on the current date. See , for the opposite way of working—generating ChangeLog entries from the revision control log. In the Log Edit buffer, C-c C-f (M-x log-edit-show-files) shows the list of files to be committed in case you need to check that. When you have finished editing the log message, type C-c C-c to exit the buffer and commit the change. Browsing a Log of Changes Log View mode mode, Log View output, logs cvs-mode-log vc-print-log Log View mode provides a few useful commands for navigating revision control log output. It is used for the output buffers of both cvs-mode-log and vc-print-log. In this mode, n goes to the next message and p goes to the previous message and N and P go to the next and previous files, respectively, in multi-file output. With a numeric prefix argument, these commands move that many messages of files. Customization log-edit-changelog-full-paragraphs (variable) cvs-auto-remove-handled (variable) cvs-auto-remove-directories (variable) cvs-update-prog-output-skip-regexp (variable) cvs-cvsroot (variable) cvs-auto-revert (variable) log-edit-require-final-newline (variable) cvs-sort-ignore-file (variable) Customization Variables, list of all Erasing input buffer Context diff, how to get Unidiff, how to get Automatically remove handled files -u’ option in modules file Modules file (‘-u’ option) Update program (‘-u’ option in modules file) Reverting buffers after commit Require final newline Automatically inserting newline Commit message, inserting newline Sorting .cvsignore file .cvsignore file, sorting Automatically sorting .cvsignore CVSROOT’, overriding If you have an idea about any customization that would be handy but isn't present in this list, please tell us! For info on how to reach us, see . cvs-auto-remove-handledIf this variable is set to any non-nil value,‘cvs-mode-remove-handled’ will be called every time you check infiles, after the check-in is ready. See . cvs-auto-remove-directoriesIf this variable is set to any non-nil value, directories that donot contain any files to be checked in will not be listed in the‘*cvs*’ buffer. cvs-auto-revertIf this variable is set to any non-‘nil’ value any buffers you havethat visit a file that is committed will be automatically reverted.This variable defaults to ‘t’. See . cvs-update-prog-output-skip-regexpThe ‘-u’ flag in the modules file can be used to run a commandwhenever a ‘cvs update’ is performed (see cvs(5)). This regexpis used to search for the last line in that output. It is normally setto ‘$’. That setting is only correct if the command outputsnothing. Note that PCL-CVS will get very confused if the commandoutputs anything to stderr. cvs-cvsrootThis variable can be set to override ‘CVSROOT’. It should be astring. If it is set, then every time a cvs command is run, itwill be called as ‘cvs -d cvs-cvsroot’. This can beuseful if your site has several repositories. log-edit-require-final-newline When you enter a log message by typing into the‘*cvs-commit-message*’ buffer, PCL-CVS normally automaticallyinserts a trailing newline, unless there already is one. This behaviorcan be controlled via ‘cvs-commit-buffer-require-final-newline’.If it is ‘t’ (the default behavior), a newline will always beappended. If it is ‘nil’, newlines will never be appended. Anyother value causes PCL-CVS to ask the user whenever there is no trailingnewline in the commit message buffer. cvs-mode-changelog-commit log-edit-changelog-full-paragraphsIf this variable is non-nil, include full ChangeLogparagraphs in the CVS log created by ‘cvs-mode-changelog-commit’.This may be set in the local variables section of a ChangeLogfile, to indicate the policy for that ChangeLog. ChangeLog paragraphsA ChangeLog paragraph is a bunch of log text containing noblank lines; a paragraph usually describes a set of changes with asingle purpose, but perhaps spanning several functions in several files.Changes in different paragraphs are unrelated.You could argue that the CVS log entry for a file should contain thefull ChangeLog paragraph mentioning the change to the file, even thoughit may mention other files, because that gives you the full context youneed to understand the change. This is the behavior you get when thisvariable is set to t, the default.On the other hand, you could argue that the CVS log entry for a changeshould contain only the text for the changes which occurred in thatfile, because the CVS log is per-file. This is the behavior you getwhen this variable is set to nil. cvs-mode-ignore, and .cvsignore sorting cvs-sort-ignore-fileIf this variable is set to any non-‘nil’ value, the.cvsignore file will always be sorted whenever you use‘cvs-mode-ignore’ to add a file to it. This option is on bydefault. Customizing Faces cvs-header (face) cvs-filename (face) cvs-unknown (face) cvs-handled (face) cvs-need-action (face) cvs-marked (face) cvs-msg (face) PCL-CVS adds a few extra features, including menus, mouse bindings, and fontification of the ‘*cvs*’ buffer. The faces defined for fontification are listed below: cvs-headerused to highlight directory changes. cvs-filenameUsed to highlight file names. cvs-unknownUsed to highlight the status of files which are ‘Unknown’. cvs-handledUsed to highlight the status of files which are handled andneed no further action. cvs-need-actionUsed to highlight the status of files which still need action. cvs-markedUsed to highlight the marked file indicator (‘*’). cvs-msgUsed to highlight CVS messages. Bugs (known and unknown) Reporting bugs and ideas Bugs, how to report them Author, how to reach Email to the author Known bugs Bugs, known FAQ Problems, list of common If you find a bug or misfeature, don't hesitate to tell us! Send email to which is gatewayed to the newsgroup ‘gnu.emacs.bugs’. Feature requests should also be sent there. We prefer discussing one thing at a time. If you find several unrelated bugs, please report them separately. If you are running PCL-CVS under XEmacs, you should also send a copy of bug reports to . If you have problems using PCL-CVS or other questions, send them to , which is gatewayed to the ‘gnu.emacs.help’ newsgroup. This is a good place to get help, as is , gatewayed to ‘gnu.cvs.help’. If you have ideas for improvements, or if you have written some extensions to this package, we would like to hear from you. We hope that you find this package useful! Below is a partial list of currently known problems with PCL-CVS. Unexpected output from CVS Unexpected output from CVS may confuse PCL-CVS. It will createwarning messages in the ‘*cvs*’ buffer alerting you to any parse errors.If you get these messages, please send a bug report to the emailaddresses listed above. Include the contents of the ‘*cvs*’ buffer, theoutput of the CVS process (which should be found in the ‘ *cvs-tmp*’buffer), and the versions of Emacs, PCL-CVS and CVS you are using. GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. PREAMBLEThe purpose of this License is to make a manual, textbook, or otherfunctional and useful document “free” in the sense of freedom: toassure everyone the effective freedom to copy and redistribute it,with or without modifying it, either commercially or noncommercially.Secondarily, this License preserves for the author and publisher a wayto get credit for their work, while not being considered responsiblefor modifications made by others.This License is a kind of “copyleft,” which means that derivativeworks of the document must themselves be free in the same sense. Itcomplements the GNU General Public License, which is a copyleftlicense designed for free software.We have designed this License in order to use it for manuals for freesoftware, because free software needs free documentation: a freeprogram should come with manuals providing the same freedoms that thesoftware does. But this License is not limited to software manuals;it can be used for any textual work, regardless of subject matter orwhether it is published as a printed book. We recommend this Licenseprincipally for works whose purpose is instruction or reference. APPLICABILITY AND DEFINITIONSThis License applies to any manual or other work, in any medium, thatcontains a notice placed by the copyright holder saying it can bedistributed under the terms of this License. Such a notice grants aworld-wide, royalty-free license, unlimited in duration, to use thatwork under the conditions stated herein. The “Document,” below,refers to any such manual or work. Any member of the public is alicensee, and is addressed as “you.” You accept the license if youcopy, modify or distribute the work in a way requiring permissionunder copyright law.A “Modified Version” of the Document means any work containing theDocument or a portion of it, either copied verbatim, or withmodifications and/or translated into another language.A “Secondary Section” is a named appendix or a front-matter section ofthe Document that deals exclusively with the relationship of thepublishers or authors of the Document to the Document's overall subject(or to related matters) and contains nothing that could fall directlywithin that overall subject. (Thus, if the Document is in part atextbook of mathematics, a Secondary Section may not explain anymathematics.) The relationship could be a matter of historicalconnection with the subject or with related matters, or of legal,commercial, philosophical, ethical or political position regardingthem.The “Invariant Sections” are certain Secondary Sections whose titlesare designated, as being those of Invariant Sections, in the noticethat says that the Document is released under this License. If asection does not fit the above definition of Secondary then it is notallowed to be designated as Invariant. The Document may contain zeroInvariant Sections. If the Document does not identify any InvariantSections then there are none.The “Cover Texts” are certain short passages of text that are listed,as Front-Cover Texts or Back-Cover Texts, in the notice that says thatthe Document is released under this License. A Front-Cover Text maybe at most 5 words, and a Back-Cover Text may be at most 25 words.A “Transparent” copy of the Document means a machine-readable copy,represented in a format whose specification is available to thegeneral public, that is suitable for revising the documentstraightforwardly with generic text editors or (for images composed ofpixels) generic paint programs or (for drawings) some widely availabledrawing editor, and that is suitable for input to text formatters orfor automatic translation to a variety of formats suitable for inputto text formatters. A copy made in an otherwise Transparent fileformat whose markup, or absence of markup, has been arranged to thwartor discourage subsequent modification by readers is not Transparent.An image format is not Transparent if used for any substantial amountof text. A copy that is not “Transparent” is called “Opaque.”Examples of suitable formats for Transparent copies include plainASCII without markup, Texinfo input format, LaTeX input format, SGMLor XML using a publicly available DTD, and standard-conforming simpleHTML, PostScript or PDF designed for human modification. Examples oftransparent image formats include PNG, XCF and JPG. Opaque formatsinclude proprietary formats that can be read and edited only byproprietary word processors, SGML or XML for which the DTD and/orprocessing tools are not generally available, and themachine-generated HTML, PostScript or PDF produced by some wordprocessors for output purposes only.The “Title Page” means, for a printed book, the title page itself,plus such following pages as are needed to hold, legibly, the materialthis License requires to appear in the title page. For works informats which do not have any title page as such, “Title Page” meansthe text near the most prominent appearance of the work's title,preceding the beginning of the body of the text.A section “Entitled XYZ” means a named subunit of the Document whosetitle either is precisely XYZ or contains XYZ in parentheses followingtext that translates XYZ in another language. (Here XYZ stands for aspecific section name mentioned below, such as “Acknowledgements,”“Dedications,” “Endorsements,” or “History.”) To “Preserve the Title”of such a section when you modify the Document means that it remains asection “Entitled XYZ” according to this definition.The Document may include Warranty Disclaimers next to the notice whichstates that this License applies to the Document. These WarrantyDisclaimers are considered to be included by reference in thisLicense, but only as regards disclaiming warranties: any otherimplication that these Warranty Disclaimers may have is void and hasno effect on the meaning of this License. VERBATIM COPYINGYou may copy and distribute the Document in any medium, eithercommercially or noncommercially, provided that this License, thecopyright notices, and the license notice saying this License appliesto the Document are reproduced in all copies, and that you add no otherconditions whatsoever to those of this License. You may not usetechnical measures to obstruct or control the reading or furthercopying of the copies you make or distribute. However, you may acceptcompensation in exchange for copies. If you distribute a large enoughnumber of copies you must also follow the conditions in section 3.You may also lend copies, under the same conditions stated above, andyou may publicly display copies. COPYING IN QUANTITYIf you publish printed copies (or copies in media that commonly haveprinted covers) of the Document, numbering more than 100, and theDocument's license notice requires Cover Texts, you must enclose thecopies in covers that carry, clearly and legibly, all these CoverTexts: Front-Cover Texts on the front cover, and Back-Cover Texts onthe back cover. Both covers must also clearly and legibly identifyyou as the publisher of these copies. The front cover must presentthe full title with all words of the title equally prominent andvisible. You may add other material on the covers in addition.Copying with changes limited to the covers, as long as they preservethe title of the Document and satisfy these conditions, can be treatedas verbatim copying in other respects.If the required texts for either cover are too voluminous to fitlegibly, you should put the first ones listed (as many as fitreasonably) on the actual cover, and continue the rest onto adjacentpages.If you publish or distribute Opaque copies of the Document numberingmore than 100, you must either include a machine-readable Transparentcopy along with each Opaque copy, or state in or with each Opaque copya computer-network location from which the general network-usingpublic has access to download using public-standard network protocolsa complete Transparent copy of the Document, free of added material.If you use the latter option, you must take reasonably prudent steps,when you begin distribution of Opaque copies in quantity, to ensurethat this Transparent copy will remain thus accessible at the statedlocation until at least one year after the last time you distribute anOpaque copy (directly or through your agents or retailers) of thatedition to the public.It is requested, but not required, that you contact the authors of theDocument well before redistributing any large number of copies, to givethem a chance to provide you with an updated version of the Document. MODIFICATIONSYou may copy and distribute a Modified Version of the Document underthe conditions of sections 2 and 3 above, provided that you releasethe Modified Version under precisely this License, with the ModifiedVersion filling the role of the Document, thus licensing distributionand modification of the Modified Version to whoever possesses a copyof it. In addition, you must do these things in the Modified Version:A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.C. State on the Title page the name of the publisher of the Modified Version, as the publisher.D. Preserve all the copyright notices of the Document.E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.H. Include an unaltered copy of this License.I. Preserve the section Entitled “History,” Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.K. For any section Entitled “Acknowledgements” or “Dedications,” Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.M. Delete any section Entitled “Endorsements.” Such a section may not be included in the Modified Version.N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.O. Preserve any Warranty Disclaimers.If the Modified Version includes new front-matter sections orappendices that qualify as Secondary Sections and contain no materialcopied from the Document, you may at your option designate some or allof these sections as invariant. To do this, add their titles to thelist of Invariant Sections in the Modified Version's license notice.These titles must be distinct from any other section titles.You may add a section Entitled “Endorsements,” provided it containsnothing but endorsements of your Modified Version by variousparties–for example, statements of peer review or that the text hasbeen approved by an organization as the authoritative definition of astandard.You may add a passage of up to five words as a Front-Cover Text, and apassage of up to 25 words as a Back-Cover Text, to the end of the listof Cover Texts in the Modified Version. Only one passage ofFront-Cover Text and one of Back-Cover Text may be added by (orthrough arrangements made by) any one entity. If the Document alreadyincludes a cover text for the same cover, previously added by you orby arrangement made by the same entity you are acting on behalf of,you may not add another; but you may replace the old one, on explicitpermission from the previous publisher that added the old one.The author(s) and publisher(s) of the Document do not by this Licensegive permission to use their names for publicity for or to assert orimply endorsement of any Modified Version. COMBINING DOCUMENTSYou may combine the Document with other documents released under thisLicense, under the terms defined in section 4 above for modifiedversions, provided that you include in the combination all of theInvariant Sections of all of the original documents, unmodified, andlist them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.The combined work need only contain one copy of this License, andmultiple identical Invariant Sections may be replaced with a singlecopy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique byadding at the end of it, in parentheses, the name of the originalauthor or publisher of that section if known, or else a unique number.Make the same adjustment to the section titles in the list ofInvariant Sections in the license notice of the combined work.In the combination, you must combine any sections Entitled “History”in the various original documents, forming one section Entitled“History”; likewise combine any sections Entitled “Acknowledgements,”and any sections Entitled “Dedications.” You must delete all sectionsEntitled “Endorsements.” COLLECTIONS OF DOCUMENTSYou may make a collection consisting of the Document and other documentsreleased under this License, and replace the individual copies of thisLicense in the various documents with a single copy that is included inthe collection, provided that you follow the rules of this License forverbatim copying of each of the documents in all other respects.You may extract a single document from such a collection, and distributeit individually under this License, provided you insert a copy of thisLicense into the extracted document, and follow this License in allother respects regarding verbatim copying of that document. AGGREGATION WITH INDEPENDENT WORKSA compilation of the Document or its derivatives with other separateand independent documents or works, in or on a volume of a storage ordistribution medium, is called an “aggregate” if the copyrightresulting from the compilation is not used to limit the legal rightsof the compilation's users beyond what the individual works permit.When the Document is included in an aggregate, this License does notapply to the other works in the aggregate which are not themselvesderivative works of the Document.If the Cover Text requirement of section 3 is applicable to thesecopies of the Document, then if the Document is less than one half ofthe entire aggregate, the Document's Cover Texts may be placed oncovers that bracket the Document within the aggregate, or theelectronic equivalent of covers if the Document is in electronic form.Otherwise they must appear on printed covers that bracket the wholeaggregate. TRANSLATIONTranslation is considered a kind of modification, so you maydistribute translations of the Document under the terms of section 4.Replacing Invariant Sections with translations requires specialpermission from their copyright holders, but you may includetranslations of some or all Invariant Sections in addition to theoriginal versions of these Invariant Sections. You may include atranslation of this License, and all the license notices in theDocument, and any Warranty Disclaimers, provided that you also includethe original English version of this License and the original versionsof those notices and disclaimers. In case of a disagreement betweenthe translation and the original version of this License or a noticeor disclaimer, the original version will prevail.If a section in the Document is Entitled “Acknowledgements,”“Dedications,” or “History,” the requirement (section 4) to Preserveits Title (section 1) will typically require changing the actualtitle. TERMINATIONYou may not copy, modify, sublicense, or distribute the Document exceptas expressly provided for under this License. Any other attempt tocopy, modify, sublicense or distribute the Document is void, and willautomatically terminate your rights under this License. However,parties who have received copies, or rights, from you under thisLicense will not have their licenses terminated so long as suchparties remain in full compliance. FUTURE REVISIONS OF THIS LICENSEThe Free Software Foundation may publish new, revised versionsof the GNU Free Documentation License from time to time. Such newversions will be similar in spirit to the present version, but maydiffer in detail to address new problems or concerns. Seehttp://www.gnu.org/copyleft/.Each version of the License is given a distinguishing version number.If the Document specifies that a particular numbered version of thisLicense “or any later version” applies to it, you have the option offollowing the terms and conditions either of that specified version orof any later version that has been published (not as a draft) by theFree Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published (notas a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) year your name. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License.'' If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with...Texts.” line with this: with the Invariant Sections being list their titles, with the Front-Cover Texts being list, and with the Back-Cover Texts being list. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
xreflabel="Function and Variable Index" id="Function-and-Variable-Index"> Function and Variable Index This is an index of all the functions and variables documented in this manual. C cvs-allow-dir-commit, see cvs-auto-remove-directories (variable), see cvs-auto-remove-handled (variable), see cvs-auto-revert (variable), see cvs-auto-revert (variable), see cvs-bury-buffer, see cvs-checkout, see cvs-cvsroot (variable), see cvs-dired-action, see cvs-dired-use-hook, see cvs-examine, see cvs-examine, see cvs-filename (face), see cvs-force-dir-tag (variable), see cvs-handled (face), see cvs-header (face), see cvs-help, see cvs-idiff-imerge-handlers (variable), see cvs-invert-ignore-marks (variable), see cvs-invert-ignore-marks (variable), see cvs-marked (face), see cvs-mode-acknowledge, see cvs-mode-add, see cvs-mode-add-change-log-entry-other-window, see cvs-mode-byte-compile-files, see cvs-mode-changelog-commit, see cvs-mode-commit, see cvs-mode-commit-setup, see cvs-mode-delete-lock, see cvs-mode-diff, see cvs-mode-diff-backup, see cvs-mode-diff-head, see cvs-mode-diff-repository, see cvs-mode-diff-vendor, see cvs-mode-diff-yesterday, see cvs-mode-examine, see cvs-mode-find-file, see cvs-mode-find-file-other-window, see cvs-mode-force-command, see cvs-mode-idiff, see cvs-mode-ignore, see cvs-mode-ignore, see cvs-mode-ignore, and .cvsignore sorting, see cvs-mode-imerge, see cvs-mode-log, see cvs-mode-log, see cvs-mode-mark, see cvs-mode-mark-all-files, see cvs-mode-mark-matching-files, see cvs-mode-mark-on-state, see cvs-mode-next-line, see cvs-mode-previous-line, see cvs-mode-quit, see cvs-mode-remove-file, see cvs-mode-remove-handled, see cvs-mode-remove-handled (variable), see cvs-mode-status, see cvs-mode-status, see cvs-mode-tag, see cvs-mode-toggle-marks, see cvs-mode-undo-local-changes, see cvs-mode-unmark, see cvs-mode-unmark-all-files, see cvs-mode-unmark-up, see cvs-mode-untag, see cvs-mode-update, see cvs-mode-update, see cvs-msg (face), see cvs-need-action (face), see cvs-quickdir, see cvs-rtag, see cvs-sort-ignore-file (variable), see cvs-status, see cvs-status, see cvs-status-mode, see cvs-unknown (face), see cvs-update, see cvs-update, see cvs-update-prog-output-skip-regexp (variable), see L log-edit-changelog-full-paragraphs (variable), see log-edit-confirm (variable), see log-edit-insert-changelog, see log-edit-require-final-newline (variable), see V vc-print-log, see xreflabel="Concept Index" id="Concept-Index"> Concept Index This is an index of concepts discussed in this manual. -u’ option in modules file, see CVSROOT’, overriding, see *cvs* buffer contents, see .cvsignore file, sorting, see A About PCL-CVS, see Active files, see Adding files, see Applicable, see Author, how to reach, see Authors, see Automatically inserting newline, see Automatically remove handled files, see Automatically sorting .cvsignore, see B Buffer contents, see Bugs, how to report them, see Bugs, known, see Byte compilation, see ChangeLog paragraphs, see C Command-line options to CVS, see Commit buffer, see Commit message, inserting newline, see Committing changes, see Conflicts, how to resolve them, see Conflicts, how to resolve them, see Context diff, how to get, see Contributors, see Creating the *cvs* buffer, see Customization, see D Deleting files, see Diff, see Dired, see E Ediff, see Edit buffer, see Editing files, see Email to the author, see Erasing commit message, see Erasing input buffer, see Example run, see Expunging uninteresting entries, see F FAQ, see File selection, see Finding files, see Flush changes, see G Getting rid of lock files, see Getting rid of uninteresting lines, see Getting status, see H Handled lines, removing them, see Help, see I Ignoring files, see Introduction, see Invoking diff, see Invoking dired, see Invoking ediff, see K Known bugs, see L Loading files, see Lock files, see Log (RCS/cvs command), see Log Edit mode, see Log View mode, see M Marked files, see Marking files, see Merging with ediff and emerge, see mode, Log Edit, see mode, Log View, see Modules file (‘-u’ option), see Movement Commands, see O Optional switches to CVS, see output, logs, see P Problems, list of common, see Putting files under CVS control, see Q Quitting, see R Recompiling elisp files, see Removing files, see Removing uninteresting (processed) lines, see Reporting bugs and ideas, see Require final newline, see Resolving conflicts, see Resurrecting files, see Reverting buffers after commit, see Reverting buffers after commit, see S Sample session, see Selected files, see Selecting files (commands to mark files), see Sorting .cvsignore file, see Special prefix, see Status (cvs command), see T Tagging files, see U Undo changes, see Unidiff, how to get, see Uninteresting entries, getting rid of them, see Update program (‘-u’ option in modules file), see Updating files, see V Variables, list of all, see Viewing differences, see Viewing differences, see xreflabel="Key Index" id="Key-Index"> Key Index This index includes an entry for each PCL-CVS key sequence documented in this manual. %–mark files matching regexp, see =–run ‘cvs diff’, see ?–help, see A a–add a file, see A–add ChangeLog entry, see C c–commit files, see C–commit files with ChangeLog message, see C-k–remove selected entries, see D d=–run ‘cvs diff’, see db–diff against base version, see DEL–unmark previous file, see dh–diff against head of repository, see dr–diff between base and head of repository, see dv–diff against vendor branch, see dy–diff against yesterday's head, see E e–invoke ‘ediff’, see ESC DEL–unmark all files, see F f–find file or directory, see H h–help, see I i–ignoring files, see L l–run ‘cvs log’, see M m–marking a file, see M–marking all files, see M-t–repository tag files, see N n–Move down one file, see O o–find file in other window, see O–update files, see P p–Move up one file, see Q q–bury the PCL-CVS buffer, see R r–remove a file, see S S–mark files in a particular state, see s–run ‘cvs status’, see SPC–Move down one file, see T t–tag files, see T–toggle marks, see U U–undo changes, see u–unmark a file, see X x–remove processed entries, see