1\input texinfo @c -*-texinfo-*- 2@c %**start of header 3@setfilename ../info/pcl-cvs 4@settitle PCL-CVS --- Emacs Front-End to CVS 5@syncodeindex vr fn 6@c %**end of header 7 8@copying 9Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 101999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software 11Foundation, Inc. 12 13@quotation 14Permission is granted to copy, distribute and/or modify this document 15under the terms of the GNU Free Documentation License, Version 1.2 or 16any later version published by the Free Software Foundation; with the 17Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and 18``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU 19Manual'', and with the Back-Cover Texts as in (a) below. A copy of the 20license is included in the section entitled ``GNU Free Documentation 21License'' in the Emacs manual. 22 23This document is part of a collection distributed under the GNU Free 24Documentation License. If you want to distribute this document 25separately from the collection, you can do so by adding a copy of the 26license to the document, as described in section 6 of the license. 27 28(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify 29this GNU Manual, like GNU software. Copies published by the Free 30Software Foundation raise funds for GNU development.'' 31@end quotation 32@end copying 33 34@dircategory Emacs 35@direntry 36* PCL-CVS: (pcl-cvs). Emacs front-end to CVS. 37@end direntry 38 39@c The titlepage section does not appear in the Info file. 40@titlepage 41@sp 4 42@c The title is printed in a large font. 43@center @titlefont{User's Guide} 44@sp 45@center @titlefont{to} 46@sp 47@center @titlefont{PCL-CVS --- The Emacs Front-End to CVS} 48@ignore 49@sp 2 50@center release 2.9 51@c -release- 52@end ignore 53@sp 3 54@center Per Cederqvist 55@center Stefan Monnier 56@c -date- 57 58@c The following two commands start the copyright page 59@c for the printed manual. This will not appear in the Info file. 60@page 61@vskip 0pt plus 1filll 62@insertcopying 63@end titlepage 64 65@c ================================================================ 66@c The real text starts here 67@c ================================================================ 68 69@node Top, About PCL-CVS, (dir), (dir) 70@ifnottex 71@top PCL-CVS 72 73This manual describes PCL-CVS, the GNU Emacs front-end to CVS. It 74is nowhere near complete, so you are advised to use @kbd{M-x 75customize-group RET pcl-cvs @key{RET}} and to look at the documentation strings 76of the various commands and major modes for further information. 77@c This manual is updated to release 2.5 of PCL-CVS. 78@end ifnottex 79 80@menu 81* About PCL-CVS:: Credits, history, @dots{} 82 83* Getting started:: An introduction with a walk-through example. 84* Buffer contents:: An explanation of the buffer contents. 85* Selected files:: To which files are commands applied. 86* Commands:: All commands, grouped by type. 87 88* Log Edit Mode:: Major mode to edit log messages. 89* Log View Mode:: Major mode to browse log changes. 90@c * CVS Status Mode:: Major mode to view CVS' status output. 91* Customization:: How you can tailor PCL-CVS to suit your needs. 92* Bugs:: Bugs (known and unknown). 93 94* GNU Free Documentation License:: The license for this documentation. 95* Function and Variable Index:: List of functions and variables. 96* Concept Index:: List of concepts. 97* Key Index:: List of keystrokes. 98 99@detailmenu 100 --- The Detailed Node Listing --- 101 102About PCL-CVS 103 104* Contributors:: Contributors to PCL-CVS. 105 106Commands 107 108* Entering PCL-CVS:: Commands to invoke PCL-CVS 109* Setting flags:: Setting flags for CVS commands 110* Updating the buffer:: 111* Movement commands:: How to move up and down in the buffer 112* Marking files:: How to mark files that other commands 113 will later operate on. 114* Committing changes:: Checking in your modifications to the 115 CVS repository. 116* Editing files:: Loading files into Emacs. 117* Getting info about files:: Display the log and status of files. 118* Adding and removing files:: Adding and removing files 119* Undoing changes:: Undoing changes 120* Removing handled entries:: Uninteresting lines can easily be removed. 121* Ignoring files:: Telling CVS to ignore generated files. 122* Viewing differences:: Commands to @samp{diff} different versions. 123* Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer. 124* Updating files:: Updating files that Need-update. 125* Tagging files:: Tagging files. 126* Miscellaneous commands:: Miscellaneous commands. 127 128Customization 129 130* Customizing Faces:: 131 132@end detailmenu 133@end menu 134 135@node About PCL-CVS, Getting started, Top, Top 136@chapter About PCL-CVS 137@cindex About PCL-CVS 138 139PCL-CVS is a front-end to CVS versions 1.9 and later. 140It concisely shows the present status of a checked out module in an 141Emacs buffer and provides single-key access to the most frequently used CVS 142commands. 143For Emacs users accustomed to VC, PCL-CVS can be thought of as a replacement 144for VC-dired (@pxref{VC Dired Mode, , Dired under VC, emacs, The GNU 145Emacs Manual}) specifically designed for CVS. 146 147PCL-CVS was originally written many years ago by Per Cederqvist who 148proudly maintained it until January 1996, at which point he released the 149beta version 2.0b2 and passed on the maintainership to Greg A Woods. 150Development stayed mostly dormant for a few years during which 151version 2.0 never seemed to be able to leave the ``beta'' stage while a 152separate XEmacs version was slowly splitting away. In late 1998, 153Stefan Monnier picked up development again, adding some major new 154functionality and taking over the maintenance. 155 156@menu 157* Contributors:: Contributors to PCL-CVS. 158@end menu 159 160@node Contributors,, About PCL-CVS, About PCL-CVS 161@section Contributors to PCL-CVS 162@cindex Contributors 163@cindex Authors 164 165Contributions to the package are welcome. I have limited time to work 166on this project, but I will gladly add any code that you contribute to 167me to this package (@pxref{Bugs}). 168 169The following persons have made contributions to PCL-CVS. 170 171@itemize @bullet 172@item 173Brian Berliner wrote CVS, together with some other contributors. 174Without his work on CVS this package would be useless@dots{} 175 176@item 177Per Cederqvist wrote most of the otherwise unattributed functions in 178PCL-CVS as well as all the documentation. 179 180@item 181@email{inge@@lysator.liu.se, Inge Wallin} wrote the skeleton of 182@file{pcl-cvs.texi}, and gave useful comments on it. He also wrote 183the files @file{elib-node.el} and @file{compile-all.el}. The file 184@file{cookie.el} was inspired by Inge.@refill 185 186@item 187@email{linus@@lysator.liu.se, Linus Tolke} contributed useful comments 188on both the functionality and the documentation.@refill 189 190@item 191@email{jwz@@jwz.com, Jamie Zawinski} contributed 192@file{pcl-cvs-lucid.el}, which was later renamed to 193@file{pcl-cvs-xemacs.el}.@refill 194 195@item 196Leif Lonnblad contributed RCVS support (since superseded by the new 197remote CVS support). 198 199@item 200@email{jimb@@cyclic.com, Jim Blandy} contributed hooks to automatically 201guess CVS log entries from @file{ChangeLog} contents, and initial support of 202the new Cygnus / Cyclic remote CVS, as well as various sundry bug fixes 203and cleanups. 204 205@item 206@email{kingdon@@cyclic.com, Jim Kingdon} contributed lots of fixes to 207the build and installation procedure. 208 209@item 210@email{woods@@weird.com, Greg A.@: Woods} contributed code to implement 211the use of per-file diff buffers, and vendor join diffs with emerge and 212ediff, as well as various and sundry bug fixes and cleanups. 213 214@item 215@email{greg.klanderman@@alum.mit.edu, Greg Klanderman} implemented 216toggling of marked files, setting of CVS command flags via prefix 217arguments, updated the XEmacs support, updated the manual, and fixed 218numerous bugs. 219 220@item 221@email{monnier@@cs.yale.edu, Stefan Monnier} added a slew of other 222features and introduced even more new bugs. If there's any bug left, 223you can be sure it's his. 224 225@item 226@c wordy to avoid an underfull hbox 227@email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} made a gracious 228contribution of his cvstree code to display a tree of tags which was later 229superseded by the new @code{cvs-status-mode}. 230@end itemize 231 232Apart from these, a lot of people have sent us suggestions, ideas, 233requests, bug reports and encouragement. Thanks a lot! Without you 234there would be no new releases of PCL-CVS. 235 236 237@node Getting started, Buffer contents, About PCL-CVS, Top 238@chapter Getting started 239@cindex Introduction 240@cindex Example run 241@cindex Sample session 242 243This document assumes that you know what CVS is, and that you at least 244know the fundamental concepts of CVS. If that is not the case, you 245should read the CVS documentation. Type @kbd{info -f cvs} or @kbd{man 246cvs}. 247 248PCL-CVS is only useful once you have checked out a module. So before 249you invoke it, you must have a copy of a module somewhere in the file 250system. 251 252You can invoke PCL-CVS by typing @kbd{M-x cvs-examine @key{RET}}. 253You can also invoke it via the menu bar, under @samp{Tools}. 254Or, if you prefer, you can also invoke PCL-CVS by simply visiting the 255CVS administrative subdirectory of your module, with a prefix argument. 256For example, to invoke PCL-CVS in a separate frame, type @kbd{C-u C-x 5 257f ~/my/project/CVS @key{RET}}. 258 259The function @code{cvs-examine} will ask for a directory. The command 260@samp{cvs -n update} will be run in that directory. (It should contain 261files that have been checked out from a CVS archive.) The output from 262@code{cvs} will be parsed and presented in a table in a buffer called 263@samp{*cvs*}. It might look something like this: 264 265@example 266Repository : /usr/CVSroot 267Module : test 268Working dir: /users/ceder/FOO/test 269 270 271In directory .: 272 Need-Update bar 273 Need-Update file.txt 274 Modified namechange 275 Need-Update newer 276In directory sub: 277 Modified ChangeLog 278 279--------------------- End --------------------- 280-- last cmd: cvs -f -z6 -n update -d -P -- 281@end example 282 283In this example, your repository is in @file{/usr/CVSroot} and CVS has 284been run in the directory @file{/users/ceder/FOO/test}. The three files 285(@file{bar}, @file{file.txt} and 286@file{newer}) that are marked with @samp{Need-Update} have been changed 287by someone else in the CVS repository. Two files (@file{namechange} 288and @file{sub/ChangeLog}) have been modified locally, and need to be 289checked in. 290 291You can move the cursor up and down in the buffer with @kbd{C-n} and 292@kbd{C-p} or @kbd{n} and @kbd{p}. If you press @kbd{c} on one of the 293@samp{Modified} files, that file will be checked in to the CVS 294repository. @xref{Committing changes}. You can also press @kbd{O} to 295update any of the files that are marked @samp{Need-Update}. You can 296also run @kbd{M-x cvs-update @key{RET}} (bound to @kbd{M-u} in the 297@samp{*cvs*} buffer) to update all the files.@refill 298 299You can then press @kbd{=} to easily get a @samp{diff} between your 300modified file and the base version that you started from, or you can 301press @kbd{l} to get the output from @samp{cvs log}. Many more such 302commands are available simply by pressing a key (@pxref{Getting info 303about files}). 304 305@node Buffer contents, Selected files, Getting started, Top 306@chapter Buffer contents 307@cindex Buffer contents 308@cindex @code{*cvs*} buffer contents 309 310The display contains several columns, some of which are optional. 311These columns are, from left to right: 312 313@itemize @bullet 314 315@item 316Optionally, the head revision of the file. This is the latest version 317found in the repository. It might also contain (instead of the head 318revision) a sub status which typically gives further information about 319how we got to the current state, for example @samp{patched}, 320@samp{merged}, @dots{} 321 322@item 323An asterisk when the file is @dfn{marked} (@pxref{Selected 324files}).@refill 325 326@item 327The actual status of the file wrt the repository. See below. 328 329@item 330Optionally, the base revision of the file. This is the version 331which the copy in your working directory is based upon. 332 333@item 334The file name. 335 336@end itemize 337 338The @samp{file status} field can have the following values: 339 340@table @samp 341@item Modified 342The file is modified in your working directory, and there was no 343modification to the same file in the repository. This status can have 344the following substatus: 345 346@table @samp 347@item merged 348The file was modified in your working directory, and there were 349modifications in the repository as well, but they were merged 350successfully, without conflict, in your working directory.@refill 351@end table 352 353@item Conflict 354A conflict was detected while trying to merge your changes to @var{file} 355with changes from the repository. @var{file} (the copy in your 356working directory) is now the output of the @code{rcsmerge} command on 357the two versions; an unmodified copy of your file is also in your 358working directory, with the name @file{.#@var{file}.@var{version}}, 359where @var{version} is the RCS revision that your modified file started 360from. @xref{Viewing differences}, for more details.@refill 361 362A conflict can also come from a disagreement on the existence of the file 363rather than on its content. This case is indicated by the following 364possible substatus: 365 366@table @samp 367@item removed 368The file is locally removed but a new revision has been committed to 369the repository by someone else. 370 371@item added 372The file is locally added and has also been added to the repository 373by someone else. 374 375@item modified 376The file is locally modified but someone else has removed it from the 377repository. 378@end table 379 380@item Added 381The file has been added by you, but it still needs to be checked in to 382the repository.@refill 383 384@item Removed 385The file has been removed by you, but it still needs to be checked in to 386the repository. You can resurrect it by typing @kbd{a} (@pxref{Adding 387and removing files}).@refill 388 389@item Unknown 390A file that was detected in your directory, but that neither appears in 391the repository, nor is present on the list of files that CVS should 392ignore.@refill 393 394@item Up-to-date 395The file is up to date with respect to the version in the repository. 396This status can have a substatus of: 397 398@table @samp 399@item added 400You have just added the file to the repository.@refill 401 402@item updated 403The file was brought up to date with respect to the repository. This is 404done for any file that exists in the repository but not in your source, 405and for files that you haven't changed but are not the most recent 406versions available in the repository.@refill 407 408@item patched 409The file was brought up to date with respect to the remote repository by 410way of fetching and applying a patch to the file in your source. This 411is equivalent to @samp{updated} except that CVS decided to use a hopefully 412more efficient method.@refill 413 414@item committed 415You just committed the file.@refill 416@end table 417 418@item Need-Update 419Either a newer version than the one in your source is available in the 420repository and you have not modified your checked out version, or the 421file exists in the repository but not in your source. Use 422@samp{cvs-mode-update} bound to @kbd{O} to update the file.@refill 423 424@item Need-Merge 425You have modified the checked out version of the file, and a newer 426version is available in the repository. A merge will take place when 427you run a @samp{cvs-update}. 428 429@item Missing 430The file has been unexpectedly removed from your working directory 431although it has not been @samp{cvs remove}d. 432@end table 433 434@node Selected files, Commands, Buffer contents, Top 435@chapter Selected files 436@cindex Selected files 437@cindex Marked files 438@cindex File selection 439@cindex Active files 440@cindex Applicable 441 442Many of the commands work on the current set of @dfn{selected} files 443which can be either the set of marked files (if any file is marked and 444marks are not ignored) or whichever file or directory the cursor is on. 445 446If a directory is selected but the command cannot be applied to a 447directory, then it will be applied to the set of files under this 448directory which are in the @samp{*cvs*} buffer. 449 450@findex cvs-mode-force-command 451@findex cvs-allow-dir-commit 452Furthermore, each command only operates on a subset of the selected 453files, depending on whether or not the command is @dfn{applicable} to 454each file (based on the file's status). For example, 455@code{cvs-mode-commit} is not applicable to a file whose status is 456@samp{Need-Update}. If it should happen that PCL-CVS guesses the 457applicability wrong, you can override it with the special prefix 458@code{cvs-mode-force-command} normally bound to @kbd{M-f} (and file a 459bug report). The applicability rule can be slightly changed with 460@code{cvs-allow-dir-commit} and @code{cvs-force-dir-tag}. 461 462By default, marks are always in effect (you may change this, however, by 463setting the variable @code{cvs-default-ignore-marks}) except for the 464commands that @samp{tag} or @samp{diff} a file (which can be changed 465with the variable @code{cvs-invert-ignore-marks}). 466 467In addition, you may use the special prefix @code{cvs-mode-toggle-marks} 468normally bound to @key{T} to toggle the use of marks for the following 469command. 470 471This scheme might seem a little complicated, but once one gets used to 472it, it is quite powerful. 473 474For commands to mark and unmark files, see @ref{Marking files}. 475 476@node Commands, Log Edit Mode, Selected files, Top 477@chapter Commands 478 479@iftex 480This chapter describes all the commands that you can use in PCL-CVS. 481@end iftex 482@ifnottex 483The nodes in this menu contains explanations about all the commands that 484you can use in PCL-CVS. They are grouped together by type. 485@end ifnottex 486 487@menu 488* Entering PCL-CVS:: Commands to invoke PCL-CVS 489* Setting flags:: Setting flags for CVS commands 490* Updating the buffer:: 491* Movement commands:: How to move up and down in the buffer 492* Marking files:: How to mark files that other commands 493 will later operate on. 494* Committing changes:: Checking in your modifications to the 495 CVS repository. 496* Editing files:: Loading files into Emacs. 497* Getting info about files:: Display the log and status of files. 498* Adding and removing files:: Adding and removing files 499* Undoing changes:: Undoing changes 500* Removing handled entries:: Uninteresting lines can easily be removed. 501* Ignoring files:: Telling CVS to ignore generated files. 502* Viewing differences:: Commands to @samp{diff} different versions. 503* Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer. 504* Updating files:: Updating files that Need-update. 505* Tagging files:: Tagging files. 506* Miscellaneous commands:: Miscellaneous commands. 507@end menu 508 509 510@node Entering PCL-CVS, Setting flags, Commands, Commands 511@section Entering PCL-CVS 512@findex cvs-update 513@findex cvs-examine 514@findex cvs-status 515@findex cvs-checkout 516@findex cvs-quickdir 517@cindex Creating the *cvs* buffer 518 519Most commands in PCL-CVS require that you have a @samp{*cvs*} 520buffer. The commands that you use to get one are listed below. 521For each, a @samp{cvs} process will be run, the output will be parsed by 522PCL-CVS, and the result will be printed in the @samp{*cvs*} buffer (see 523@ref{Buffer contents}, for a description of the buffer's contents). 524 525@table @kbd 526@item M-x cvs-update 527Run a @samp{cvs update} command. You will be asked for the directory 528in which the @samp{cvs update} will be run. 529 530@item M-x cvs-examine 531Run a @samp{cvs -n update} command. This is identical to the previous 532command, except that it will only check what needs to be done but will 533not change anything. You will be asked for the directory in 534which the @samp{cvs -n update} will be run. 535 536@item M-x cvs-status 537Run a @samp{cvs status} command. You will be asked for the directory 538in which the @samp{cvs status} will be run. 539 540@item M-x cvs-checkout 541Run a @samp{cvs checkout} command. You will be asked for the directory 542in which the @samp{cvs update} will be run and the module to be checked 543out. 544 545@item M-x cvs-quickdir 546Populate the @samp{*cvs*} buffer by just looking at the @file{CVS/Entries} 547files. This is very much like @code{cvs-examine} except that it does 548not access the CVS repository, which is a major advantage when the 549repository is far away. But of course, it will not be able to detect 550when a file needs to be updated or merged. 551@end table 552 553@findex cvs-dired-action 554@findex cvs-dired-use-hook 555The first four of 556those commands are also reachable from the menu bar 557under @samp{Tools->PCL-CVS}. Finally, an alternative way is to visit 558the CVS administrative subdirectory in your work area with a simple 559prefix argument. For example @kbd{C-u C-x C-f ~/my/work/CVS @key{RET}}. This 560by default runs @code{cvs-quickdir} but the specific behavior can be 561changed with @code{cvs-dired-action} and @code{cvs-dired-use-hook}. 562 563By default, the commands above will descend recursively into 564subdirectories. You can avoid that behavior by including @samp{-l} in 565the flags for the command. These flags can be set by giving a prefix 566argument to the command (e.g., by typing 567@kbd{C-u M-x cvs-update @key{RET} -l @key{RET}}). 568 569 570@node Setting flags, Updating the buffer, Entering PCL-CVS, Commands 571@section Setting flags for CVS commands 572@cindex Optional switches to CVS 573@cindex Command-line options to CVS 574 575This section describes the convention used by nearly all PCL-CVS 576commands for setting optional flags sent to CVS. A single @kbd{C-u} 577prefix argument is used to cause the command to prompt for flags to be 578used for the current invocation of the command only. Two @kbd{C-u} prefix 579arguments are used to prompt for flags which will be set permanently, for the 580current invocation and all that follow, until the flags are changed, or 581unless temporary flags are set which override them. 582 583Perhaps an example or two is in order. Say you are about to add a 584binary file to the repository, and want to specify the flags @samp{-kb} 585to @samp{cvs add}. You can type @kbd{C-u a -kb @key{RET}}, 586and the file will be added. Subsequent @samp{cvs add} 587commands will use the previously prevailing flags. 588 589As a second example, say you are about to perform a diff and want to see 590the result in unified diff format, i.e. you'd like to pass the flag 591@samp{-u} to both @samp{cvs diff} and @samp{diff}. You'd also like all 592subsequent diffs to use this flag. You can type @kbd{C-u C-u = -u @key{RET}} 593and the diff will be performed, and the default flags will be set to 594@code{("-u")}. You can of course override this flag for a single diff 595by using a single @kbd{C-u} prefix argument. 596 597@cindex Special prefix 598In addition to this, some commands can take @dfn{special prefix} arguments. 599These work as follows: When called with a @kbd{C-u} prefix, the user is 600prompted for a new value of the special prefix and the special prefix is 601activated for the next command. When called without the @kbd{C-u} 602prefix, the special prefix is re-activated (with the same value as last 603time) for the next command. Calling the prefix command again when it's 604already activated deactivates it. Calling it with the @kbd{C-u C-u} 605prefix activates it for all subsequent commands until you deactivate it 606explicitly. The special prefixes are: 607 608@table @kbd 609@item T 610Toggles whether or not marks will be active in the next command.@refill 611 612@item b 613Provide the next command with a branch (can be any version 614specifier) to work on.@refill 615 616@item B 617Secondary branch argument. Only meaningful if @kbd{b} is also used. 618It can be used to provide a second branch argument to 619@code{cvs-mode-diff} or to @code{cvs-mode-update}. 620 621@item M-f 622Forces the next command to apply to every selected file rather than only 623to the ones PCL-CVS thinks are relevant. 624@end table 625 626@node Updating the buffer, Movement commands, Setting flags, Commands 627@section Updating the @samp{*cvs*} buffer 628@findex cvs-update 629@findex cvs-examine 630@findex cvs-status 631@findex cvs-mode-update 632@findex cvs-mode-examine 633@findex cvs-mode-status 634 635The following commands can be used from within the @samp{*cvs*} buffer 636to update the display: 637 638@table @kbd 639@item M-u 640Runs the command @samp{cvs-update}.@refill 641 642@item M-e 643Runs the command @samp{cvs-examine}.@refill 644 645@item M-s 646Runs the command @samp{cvs-status}.@refill 647@end table 648 649In addition to the above commands which operate on the whole module, 650you can run the equivalent CVS command on just a subset of the 651files/directories with these keys: 652 653@table @kbd 654@item O 655Runs @code{cvs-mode-update} on the selected files. When run on the 656top-level directory, this is equivalent to @kbd{M-u}.@refill 657 658@item e 659Runs @code{cvs-mode-examine} on the selected files. When run on the 660top-level directory, this is equivalent to @kbd{M-e}.@refill 661 662@findex cvs-status-mode 663@item s 664Runs @code{cvs-mode-status} on the selected files. When run on the 665top-level directory, this is equivalent to @kbd{M-s}, except that 666CVS output will be shown in a @samp{*cvs-info*} buffer that will be 667put in @samp{cvs-status-mode}.@refill 668@end table 669 670 671@node Movement commands, Marking files, Updating the buffer, Commands 672@section Movement Commands 673@cindex Movement Commands 674@findex cvs-mode-next-line 675@findex cvs-mode-previous-line 676@kindex SPC@r{--Move down one file} 677@kindex n@r{--Move down one file} 678@kindex p@r{--Move up one file} 679 680You can use most normal Emacs commands to move forward and backward in 681the buffer. Some keys are rebound to functions that take advantage of 682the fact that the buffer is a PCL-CVS buffer: 683 684 685@table @kbd 686@item @key{SPC} 687@itemx n 688These keys move the cursor one file forward, towards the end of the 689buffer (@code{cvs-mode-next-line}).@refill 690 691@itemx p 692This key moves one file backward, towards the beginning of the buffer 693(@code{cvs-mode-previous-line}). 694@end table 695 696 697@node Marking files, Committing changes, Movement commands, Commands 698@section Marking files 699@cindex Selecting files (commands to mark files) 700@cindex Marking files 701@kindex m@r{--marking a file} 702@kindex M@r{--marking all files} 703@kindex u@r{--unmark a file} 704@kindex ESC DEL@r{--unmark all files} 705@kindex DEL@r{--unmark previous file} 706@kindex %@r{--mark files matching regexp} 707@kindex S@r{--mark files in a particular state} 708@kindex T@r{--toggle marks} 709@findex cvs-mode-mark 710@findex cvs-mode-unmark 711@findex cvs-mode-mark-all-files 712@findex cvs-mode-unmark-all-files 713@findex cvs-mode-unmark-up 714@findex cvs-mode-mark-matching-files 715@findex cvs-mode-mark-on-state 716@findex cvs-mode-toggle-marks 717 718PCL-CVS works on a set of @dfn{selected files} (@pxref{Selected files}). 719You can mark and unmark files with these commands: 720 721@table @kbd 722@item m 723This marks the file that the cursor is positioned on. If the cursor is 724positioned on a directory all files in that directory are marked 725(@code{cvs-mode-mark}).@refill 726 727@item u 728Unmark the file that the cursor is positioned on. If the cursor is on a 729directory, all files in that directory are unmarked 730(@code{cvs-mode-unmark}).@refill 731 732@item M 733Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}). 734 735@item M-@key{DEL} 736Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}). 737 738@item @key{DEL} 739Unmark the file on the previous line, and move point to that line 740(@code{cvs-mode-unmark-up}). 741 742@item % 743Mark all files matching a regular expression 744(@code{cvs-mode-mark-matching-files}). 745 746@item S 747Mark all files in a particular state, such as ``Modified'' or 748``Removed'' (@code{cvs-mode-mark-on-state}). 749 750@item T 751Toggle use of marks for the next command (@code{cvs-mode-toggle-marks}). 752@end table 753 754 755@node Committing changes, Editing files, Marking files, Commands 756@section Committing changes 757@cindex Committing changes 758@findex cvs-mode-commit 759@findex cvs-mode-commit-setup 760@kindex c@r{--commit files} 761@kindex C@r{--commit files with @file{ChangeLog} message} 762@vindex cvs-auto-revert@r{ (variable)} 763@cindex Commit buffer 764@cindex Edit buffer 765@cindex Erasing commit message 766@cindex Reverting buffers after commit 767 768Committing changes basically works as follows: 769 770@enumerate 771@item 772After having selected the files you want to commit, you type either 773@kbd{c} or @kbd{C} which brings up a special buffer 774@samp{*cvs-commit*}.@refill 775 776@item 777You type in the log message describing the changes you're about to 778commit (@pxref{Log Edit Mode}). 779 780@item 781When you're happy with it, you type @kbd{C-c C-c} to do the actual 782commit.@refill 783@end enumerate 784 785There's no hidden state, so you can abort the process or pick it up 786again at any time. 787 788@vindex log-edit-confirm@r{ (variable)} 789The set of files actually committed is really decided only during the 790very last step, which is a mixed blessing. It allows you to go back and 791change your mind about which files to commit, but it also means that you 792might inadvertently change the set of selected files. To reduce the 793risk of error, @kbd{C-c C-c} will ask for confirmation if the set of 794selected files has changed between the first step and the last. You can 795change this last detail with @code{log-edit-confirm}. 796 797As for the difference between @kbd{c} (i.e. @code{cvs-mode-commit}) and 798@kbd{C} (i.e. @code{cvs-mode-commit-setup}) is that the first gets you 799straight to @samp{*cvs-commit*} without erasing it or changing anything 800to its content, while the second first erases @samp{*cvs-commit*} 801and tries to initialize it with a sane default (it does that by either 802using a template provided by the CVS administrator or by extracting a 803relevant log message from a @file{ChangeLog} file). 804 805If you are editing the files in your Emacs, an automatic 806@samp{revert-buffer} will be performed. (If the file contains 807@samp{$@asis{Id}$} keywords, @samp{cvs commit} will write a new file with 808the new values substituted. The auto-revert makes sure that you get 809them into your buffer.) The revert will not occur if you have modified 810your buffer, or if @samp{cvs-auto-revert} is set to 811@samp{nil}. 812 813 814@node Editing files, Getting info about files, Committing changes, Commands 815@section Editing files 816@cindex Editing files 817@cindex Finding files 818@cindex Loading files 819@cindex Dired 820@cindex Invoking dired 821@findex cvs-mode-find-file 822@findex cvs-mode-find-file-other-window 823@findex cvs-mode-add-change-log-entry-other-window 824@kindex f@r{--find file or directory} 825@kindex o@r{--find file in other window} 826@kindex A@r{--add @file{ChangeLog} entry} 827 828There are currently three commands that can be used to find a file (that 829is, load it into a buffer and start editing it there). These commands 830work on the line that the cursor is situated at. They always ignore any marked 831files. 832 833@table @kbd 834@item f 835Find the file that the cursor points to (@code{cvs-mode-find-file}). If 836the cursor points to a directory, run @code{dired} on that directory; 837@inforef{Dired, , emacs}. 838 839@item o 840Like @kbd{f}, but use another window 841(@code{cvs-mode-find-file-other-window}).@refill 842 843@item A 844Invoke @samp{add-change-log-entry-other-window} to edit a 845@file{ChangeLog} file. The @file{ChangeLog} file will be found in the 846directory of the file the cursor points to, or in a parent of that 847directory (@code{cvs-mode-add-change-log-entry-other-window}).@refill 848@end table 849 850 851@node Getting info about files, Adding and removing files, Editing files, Commands 852@section Getting info about files 853@cindex Status (cvs command) 854@cindex Log (RCS/cvs command) 855@cindex Getting status 856@kindex l@r{--run @samp{cvs log}} 857@kindex s@r{--run @samp{cvs status}} 858@findex cvs-mode-log 859@findex cvs-mode-status 860 861@table @kbd 862@item l 863Call the command @code{cvs-mode-log} which runs @samp{cvs log} on all 864selected files, and show the result in a temporary buffer 865@samp{*cvs-info*} (@pxref{Log View Mode}). 866 867@item s 868Call the command @code{cvs-mode-status} which runs @samp{cvs status} on 869all selected files, and show the result in a temporary buffer 870@samp{*cvs-info*}. 871@c Fixme: reinstate when node is written: 872@c (@pxref{CVS Status Mode}). 873@end table 874 875 876@node Adding and removing files, Undoing changes, Getting info about files, Commands 877@section Adding and removing files 878@cindex Adding files 879@cindex Removing files 880@cindex Resurrecting files 881@cindex Deleting files 882@cindex Putting files under CVS control 883@kindex a@r{--add a file} 884@kindex r@r{--remove a file} 885@findex cvs-mode-add 886@findex cvs-mode-remove-file 887 888The following commands are available to make it easy to add files to 889and remove them from the CVS repository. 890 891@table @kbd 892@item a 893Add all selected files. This command can be used on @samp{Unknown} 894files (@pxref{Buffer contents}). The status of the file will change to 895@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit} 896@pxref{Committing changes}), to really add the file to the 897repository.@refill 898 899This command can also be used on @samp{Removed} files (before you commit 900them) to resurrect them. 901 902The command that is run is @code{cvs-mode-add}. 903 904@item r 905This command removes the selected files (after prompting for 906confirmation). The files are deleted from your directory and 907(unless the status was @samp{Unknown}; @pxref{Buffer contents}) they will 908also be @samp{cvs remove}d. If the files' status was @samp{Unknown} 909they will disappear from the buffer. Otherwise their status will change to 910@samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit}, 911@pxref{Committing changes}) to commit the removal.@refill 912 913The command that is run is @code{cvs-mode-remove-file}. 914@end table 915 916 917@node Undoing changes, Removing handled entries, Adding and removing files, Commands 918@section Undoing changes 919@cindex Undo changes 920@cindex Flush changes 921@kindex U@r{--undo changes} 922@findex cvs-mode-undo-local-changes 923 924@table @kbd 925@item U 926If you have modified a file, and for some reason decide that you don't 927want to keep the changes, you can undo them with this command. It works 928by removing your working copy of the file and then getting the latest 929version from the repository (@code{cvs-mode-undo-local-changes}). 930@end table 931 932 933@node Removing handled entries, Ignoring files, Undoing changes, Commands 934@section Removing handled entries 935@cindex Expunging uninteresting entries 936@cindex Uninteresting entries, getting rid of them 937@cindex Getting rid of uninteresting lines 938@cindex Removing uninteresting (processed) lines 939@cindex Handled lines, removing them 940@kindex x@r{--remove processed entries} 941@kindex C-k@r{--remove selected entries} 942@findex cvs-mode-remove-handled 943@findex cvs-mode-acknowledge 944@findex cvs-mode-ignore 945 946@table @kbd 947@item x 948This command allows you to remove all entries that you have processed. 949More specifically, the lines for @samp{Up-to-date} files (@pxref{Buffer 950contents}) are removed from the buffer. If a directory becomes empty 951the heading for that directory is also removed. This makes it easier to 952get an overview of what needs to be done. 953 954@vindex cvs-mode-remove-handled@r{ (variable)} 955@kbd{x} invokes @code{cvs-mode-remove-handled}. If 956@samp{cvs-auto-remove-handled} is set to non-@code{nil}, this will 957automatically be performed after every commit.@refill 958 959@item C-k 960This command can be used for lines that @samp{cvs-mode-remove-handled} would 961not delete, but that you want to delete (@code{cvs-mode-acknowledge}). 962@end table 963 964 965@node Ignoring files, Viewing differences, Removing handled entries, Commands 966@section Ignoring files 967@cindex Ignoring files 968@kindex i@r{--ignoring files} 969@findex cvs-mode-ignore 970 971@table @kbd 972@item i 973Arrange so that CVS will ignore the selected files. The file names are 974added to the @file{.cvsignore} file in the corresponding directory. If 975the @file{.cvsignore} file doesn't exist, it will be created. 976 977The @file{.cvsignore} file should normally be added to the repository, 978but you could ignore it as well, if you like it better that way. 979 980This runs @code{cvs-mode-ignore}. 981@end table 982 983@node Viewing differences, Invoking Ediff, Ignoring files, Commands 984@section Viewing differences 985@cindex Diff 986@cindex Invoking @code{diff} 987@cindex Conflicts, how to resolve them 988@cindex Viewing differences 989@kindex d=@r{--run @samp{cvs diff}} 990@kindex =@r{--run @samp{cvs diff}} 991@kindex db@r{--diff against base version} 992@kindex dh@r{--diff against head of repository} 993@kindex dr@r{--diff between base and head of repository} 994@kindex dv@r{--diff against vendor branch} 995@kindex dy@r{--diff against yesterday's head} 996@findex cvs-mode-diff 997@findex cvs-mode-diff-backup 998@findex cvs-mode-diff-head 999@findex cvs-mode-diff-repository 1000@findex cvs-mode-diff-vendor 1001@findex cvs-mode-diff-yesterday 1002@vindex cvs-invert-ignore-marks@r{ (variable)} 1003 1004@table @kbd 1005@item = 1006@itemx d = 1007Display a @samp{cvs diff} between the selected files and the version 1008that they are based on (@code{cvs-mode-diff}).@refill 1009 1010@item d b 1011If CVS finds a conflict while merging two versions of a file (during a 1012@samp{cvs update}, @pxref{Updating the buffer}) it will save the 1013original file in a file called @file{.#@var{file}.@var{version}} where 1014@var{file} is the name of the file, and @var{version} is the revision 1015number that @var{file} was based on.@refill 1016 1017With the @kbd{d b} command you can run a @samp{diff} on the files 1018@file{.#@var{file}.@var{version}} and @file{@var{file}}.@refill 1019 1020@item d h 1021Display a @samp{cvs diff} between the selected files and the head 1022revision (the most recent version on the current 1023branch) in the repository (@code{cvs-mode-diff-head}).@refill 1024 1025@item d r 1026Display a @samp{cvs diff} between the base revision of the selected 1027files and the head revision in the repository. This displays the 1028changes anyone has committed to the repository since you last executed 1029a checkout, update or commit operation 1030(@code{cvs-mode-diff-repository}). 1031 1032@item d v 1033Display a @samp{cvs diff} between the selected files and the head 1034revision of the vendor branch in the repository 1035(@code{cvs-mode-diff-vendor}).@refill 1036 1037@item d y 1038Display a @samp{cvs diff} between the selected files and yesterday's 1039head revision in the repository 1040(@code{cvs-mode-diff-yesterday}).@refill 1041@end table 1042 1043By default, @samp{diff} commands ignore the marks. This can be changed 1044with @code{cvs-invert-ignore-marks}. 1045 1046@node Invoking Ediff, Updating files, Viewing differences, Commands 1047@section Running ediff 1048@cindex Ediff 1049@cindex Invoking ediff 1050@cindex Viewing differences 1051@cindex Conflicts, how to resolve them 1052@cindex Resolving conflicts 1053@kindex e@r{--invoke @samp{ediff}} 1054@findex cvs-mode-idiff 1055@findex cvs-mode-imerge 1056 1057@table @kbd 1058@vindex cvs-idiff-imerge-handlers@r{ (variable)} 1059@item d e 1060This uses @code{ediff} (or @code{emerge}, depending on 1061@samp{cvs-idiff-imerge-handlers}) to allow you to view diffs. 1062If a prefix argument is given, PCL-CVS will prompt for a revision against 1063which the diff should be made, else the default will be to use the BASE 1064revision. 1065 1066@cindex Merging with @code{ediff} and @code{emerge} 1067@item d E 1068This command use @code{ediff} (or @code{emerge}, see above) to allow you 1069to do an interactive 3-way merge. 1070 1071@strong{Please note:} when the file status is @samp{Conflict}, 1072CVS has already performed a merge. The resulting file is not used in 1073any way if you use this command. If you use the @kbd{q} command inside 1074@samp{ediff} (to successfully terminate a merge) the file that CVS 1075created will be overwritten.@refill 1076@end table 1077 1078@node Updating files, Tagging files, Invoking Ediff, Commands 1079@section Updating files 1080@findex cvs-mode-update 1081@cindex Updating files 1082@kindex O@r{--update files} 1083 1084@table @kbd 1085@item O 1086Update all selected files with status @samp{Need-update} by running 1087@samp{cvs update} on them (@code{cvs-mode-update}). 1088@end table 1089 1090 1091@node Tagging files, Miscellaneous commands, Updating files, Commands 1092@section Tagging files 1093@findex cvs-mode-tag 1094@findex cvs-mode-untag 1095@findex cvs-rtag 1096@cindex Tagging files 1097@kindex M-t@r{--repository tag files} 1098@kindex t@r{--tag files} 1099@vindex cvs-invert-ignore-marks@r{ (variable)} 1100@vindex cvs-force-dir-tag@r{ (variable)} 1101 1102@table @kbd 1103@item t 1104Tag all selected files by running @samp{cvs tag} on 1105them (@code{cvs-mode-tag}). It's usually preferable to tag a directory 1106at a time. Rather than selecting all files (which too often doesn't 1107select all files but only the few that are displayed), clear the 1108selection with @kbd{M-DEL} (@code{cvs-mode-unmark-all-files}), position 1109the cursor on the directory you want to tag and hit @kbd{t}. 1110@end table 1111 1112By default, @samp{tag} commands ignore the marks. This can be changed 1113with @code{cvs-invert-ignore-marks}. Also, by default @samp{tag} can 1114only be applied to directories, see @code{cvs-force-dir-tag} if you want 1115to change this behavior. 1116 1117 1118@node Miscellaneous commands, , Tagging files, Commands 1119@section Miscellaneous commands 1120@findex cvs-mode-byte-compile-files 1121@cindex Recompiling elisp files 1122@cindex Byte compilation 1123@findex cvs-mode-delete-lock 1124@cindex Getting rid of lock files 1125@cindex Lock files 1126@kindex q@r{--bury the PCL-CVS buffer} 1127@findex cvs-bury-buffer 1128@findex cvs-mode-quit 1129@cindex Quitting 1130@kindex h@r{--help} 1131@kindex ?@r{--help} 1132@findex cvs-help 1133@cindex Help 1134 1135@table @kbd 1136@item M-x cvs-mode-byte-compile-files 1137Byte compile all selected files that end in @file{.el}. 1138 1139@item M-x cvs-mode-delete-lock 1140This command deletes the lock files that 1141the @samp{*cvs*} buffer informs you about. You should normally never have to 1142use this command, since CVS tries very carefully to always remove the 1143lock files itself. 1144 1145You can only use this command when a message in the @samp{*cvs*} buffer tells 1146you so. You should wait a while before using this command in case 1147someone else is running a @code{cvs} command. 1148 1149Also note that this only works if the repository is local. 1150 1151@item ? 1152@itemx h 1153Show a summary of common command key bindings in the echo 1154area (@code{cvs-help}). 1155 1156@item q 1157Bury the PCL-CVS buffer (@code{cvs-bury-buffer}). 1158 1159@item M-x cvs-mode-quit 1160Quit PCL-CVS, killing the @samp{*cvs*} buffer. 1161@end table 1162 1163@node Log Edit Mode, Log View Mode, Commands, Top 1164@chapter Editing a Log Message 1165 1166@cindex Log Edit mode 1167@cindex mode, Log Edit 1168Buffers for entering/editing log messages for changes which are about 1169to be committed are put into Log Edit mode. 1170 1171Sometimes the log buffer contains default text when you enter it, 1172typically the last log message entered. If it does, mark and point 1173are set around the entire contents of the buffer so that it is easy to 1174kill the contents of the buffer with @kbd{C-w}. 1175 1176@findex log-edit-insert-changelog 1177If you work by writing entries in the @file{ChangeLog} 1178(@pxref{(emacs)Change Log}) and then commit the change under revision 1179control, you can generate the Log Edit text from the ChangeLog using 1180@kbd{C-c C-a} (@kbd{log-edit-insert-changelog}). This looks for 1181entries for the file(s) concerned in the top entry in the ChangeLog 1182and uses those paragraphs as the log text. This text is only inserted 1183if the top entry was made under your user name on the current date. 1184@xref{(emacs)Change Logs and VC}, for the opposite way of 1185working---generating ChangeLog entries from the revision control log. 1186 1187In the Log Edit buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files}) 1188shows the list of files to be committed in case you need to check 1189that. 1190 1191When you have finished editing the log message, type @kbd{C-c C-c} to 1192exit the buffer and commit the change. 1193 1194@c Fixme: customization variables 1195 1196@node Log View Mode, Customization, Log Edit Mode, Top 1197@chapter Browsing a Log of Changes 1198 1199@cindex Log View mode 1200@cindex mode, Log View 1201@cindex output, logs 1202 1203@findex cvs-mode-log 1204@findex vc-print-log 1205Log View mode provides a few useful commands for navigating revision 1206control log output. It is used for the output buffers of both 1207@code{cvs-mode-log} and @code{vc-print-log}. 1208 1209In this mode, @kbd{n} goes to the next message and @kbd{p} goes to the 1210previous message and @kbd{N} and @kbd{P} go to the next and previous 1211files, respectively, in multi-file output. With a numeric prefix 1212argument, these commands move that many messages of files. 1213 1214@c @node CVS Status Mode 1215@c @chapter Viewing CVS' Status output 1216 1217@node Customization, Bugs, Log View Mode, Top 1218@chapter Customization 1219@vindex log-edit-changelog-full-paragraphs@r{ (variable)} 1220@vindex cvs-auto-remove-handled@r{ (variable)} 1221@vindex cvs-auto-remove-directories@r{ (variable)} 1222@vindex cvs-update-prog-output-skip-regexp@r{ (variable)} 1223@vindex cvs-cvsroot@r{ (variable)} 1224@vindex cvs-auto-revert@r{ (variable)} 1225@vindex log-edit-require-final-newline@r{ (variable)} 1226@vindex cvs-sort-ignore-file@r{ (variable)} 1227@cindex Customization 1228@cindex Variables, list of all 1229@cindex Erasing input buffer 1230@cindex Context diff, how to get 1231@cindex Unidiff, how to get 1232@cindex Automatically remove handled files 1233@cindex @samp{-u} option in modules file 1234@cindex Modules file (@samp{-u} option) 1235@cindex Update program (@samp{-u} option in modules file) 1236@cindex Reverting buffers after commit 1237@cindex Require final newline 1238@cindex Automatically inserting newline 1239@cindex Commit message, inserting newline 1240@cindex Sorting @file{.cvsignore} file 1241@cindex @file{.cvsignore} file, sorting 1242@cindex Automatically sorting @file{.cvsignore} 1243@cindex @samp{CVSROOT}, overriding 1244 1245If you have an idea about any customization that would be handy but 1246isn't present in this list, please tell us! 1247For info on how to reach us, see @ref{Bugs}.@refill 1248 1249@table @samp 1250@item cvs-auto-remove-handled 1251If this variable is set to any non-@code{nil} value, 1252@samp{cvs-mode-remove-handled} will be called every time you check in 1253files, after the check-in is ready. @xref{Removing handled 1254entries}.@refill 1255 1256@item cvs-auto-remove-directories 1257If this variable is set to any non-@code{nil} value, directories that do 1258not contain any files to be checked in will not be listed in the 1259@samp{*cvs*} buffer.@refill 1260 1261@item cvs-auto-revert 1262If this variable is set to any non-@samp{nil} value any buffers you have 1263that visit a file that is committed will be automatically reverted. 1264This variable defaults to @samp{t}. @xref{Committing changes}.@refill 1265 1266@item cvs-update-prog-output-skip-regexp 1267The @samp{-u} flag in the @file{modules} file can be used to run a command 1268whenever a @samp{cvs update} is performed (see @code{cvs(5)}). This regexp 1269is used to search for the last line in that output. It is normally set 1270to @samp{$}. That setting is only correct if the command outputs 1271nothing. Note that PCL-CVS will get very confused if the command 1272outputs @emph{anything} to @code{stderr}. 1273 1274@item cvs-cvsroot 1275This variable can be set to override @samp{CVSROOT}. It should be a 1276string. If it is set, then every time a @code{cvs} command is run, it 1277will be called as @samp{cvs -d @var{cvs-cvsroot}@dots{}}. This can be 1278useful if your site has several repositories. 1279 1280@item log-edit-require-final-newline 1281@c wordy to avoid unhderfull hbox 1282When you enter a log message by typing into the 1283@samp{*cvs-commit-message*} buffer, PCL-CVS normally automatically 1284inserts a trailing newline, unless there already is one. This behavior 1285can be controlled via @samp{cvs-commit-buffer-require-final-newline}. 1286If it is @samp{t} (the default behavior), a newline will always be 1287appended. If it is @samp{nil}, newlines will never be appended. Any 1288other value causes PCL-CVS to ask the user whenever there is no trailing 1289newline in the commit message buffer. 1290 1291@findex cvs-mode-changelog-commit 1292@item log-edit-changelog-full-paragraphs 1293If this variable is non-@code{nil}, include full @file{ChangeLog} 1294paragraphs in the CVS log created by @samp{cvs-mode-changelog-commit}. 1295This may be set in the local variables section of a @file{ChangeLog} 1296file, to indicate the policy for that @file{ChangeLog}. 1297 1298@cindex @file{ChangeLog} paragraphs 1299A @dfn{@file{ChangeLog} paragraph} is a bunch of log text containing no 1300blank lines; a paragraph usually describes a set of changes with a 1301single purpose, but perhaps spanning several functions in several files. 1302Changes in different paragraphs are unrelated. 1303 1304You could argue that the CVS log entry for a file should contain the 1305full @file{ChangeLog} paragraph mentioning the change to the file, even though 1306it may mention other files, because that gives you the full context you 1307need to understand the change. This is the behavior you get when this 1308variable is set to @code{t}, the default. 1309 1310On the other hand, you could argue that the CVS log entry for a change 1311should contain only the text for the changes which occurred in that 1312file, because the CVS log is per-file. This is the behavior you get 1313when this variable is set to @code{nil}. 1314 1315@findex cvs-mode-ignore@r{, and @file{.cvsignore} sorting} 1316@item cvs-sort-ignore-file 1317If this variable is set to any non-@samp{nil} value, the 1318@file{.cvsignore} file will always be sorted whenever you use 1319@samp{cvs-mode-ignore} to add a file to it. This option is on by 1320default. 1321@end table 1322 1323 1324@menu 1325* Customizing Faces:: 1326@end menu 1327 1328@node Customizing Faces, , Customization, Customization 1329@section Customizing Faces 1330@vindex cvs-header (face) 1331@vindex cvs-filename (face) 1332@vindex cvs-unknown (face) 1333@vindex cvs-handled (face) 1334@vindex cvs-need-action (face) 1335@vindex cvs-marked (face) 1336@vindex cvs-msg (face) 1337 1338PCL-CVS adds a few extra features, including menus, mouse bindings, and 1339fontification of the @samp{*cvs*} buffer. The faces defined for 1340fontification are listed below: 1341 1342@table @samp 1343@item cvs-header 1344used to highlight directory changes. 1345 1346@item cvs-filename 1347Used to highlight file names. 1348 1349@item cvs-unknown 1350Used to highlight the status of files which are @samp{Unknown}. 1351 1352@item cvs-handled 1353Used to highlight the status of files which are handled and 1354need no further action. 1355 1356@item cvs-need-action 1357Used to highlight the status of files which still need action. 1358 1359@item cvs-marked 1360Used to highlight the marked file indicator (@samp{*}). 1361 1362@item cvs-msg 1363Used to highlight CVS messages. 1364@end table 1365 1366 1367@node Bugs, GNU Free Documentation License, Customization, Top 1368@chapter Bugs (known and unknown) 1369@cindex Reporting bugs and ideas 1370@cindex Bugs, how to report them 1371@cindex Author, how to reach 1372@cindex Email to the author 1373@cindex Known bugs 1374@cindex Bugs, known 1375@cindex FAQ 1376@cindex Problems, list of common 1377 1378If you find a bug or misfeature, don't hesitate to tell us! Send email 1379to @email{bug-gnu-emacs@@gnu.org} which is gatewayed to the newsgroup 1380@samp{gnu.emacs.bugs}. Feature requests should also be sent there. We 1381prefer discussing one thing at a time. If you find several unrelated 1382bugs, please report them separately. If you are running PCL-CVS under 1383XEmacs, you should also send a copy of bug reports to 1384@email{xemacs-beta@@xemacs.org}. 1385 1386If you have problems using PCL-CVS or other questions, send them to 1387@email{help-gnu-emacs@@gnu.org}, which is gatewayed to the 1388@samp{gnu.emacs.help} newsgroup. This is a good place to get help, as 1389is @email{cvs-info@@gnu.org}, gatewayed to @samp{gnu.cvs.help}. 1390 1391If you have ideas for improvements, or if you have written some 1392extensions to this package, we would like to hear from you. We hope that 1393you find this package useful! 1394 1395Below is a partial list of currently known problems with PCL-CVS. 1396 1397@table @asis 1398@item Unexpected output from CVS 1399Unexpected output from CVS may confuse PCL-CVS. It will create 1400warning messages in the @samp{*cvs*} buffer alerting you to any parse errors. 1401If you get these messages, please send a bug report to the email 1402addresses listed above. Include the contents of the @samp{*cvs*} buffer, the 1403output of the CVS process (which should be found in the @samp{ *cvs-tmp*} 1404buffer), and the versions of Emacs, PCL-CVS and CVS you are using. 1405@end table 1406 1407@node GNU Free Documentation License, Function and Variable Index, Bugs, Top 1408@appendix GNU Free Documentation License 1409@include doclicense.texi 1410 1411 1412 1413@node Function and Variable Index, Concept Index, GNU Free Documentation License, Top 1414@unnumbered Function and Variable Index 1415 1416This is an index of all the functions and variables documented in this 1417manual. 1418 1419@printindex fn 1420 1421@node Concept Index, Key Index, Function and Variable Index, Top 1422@unnumbered Concept Index 1423 1424This is an index of concepts discussed in this manual. 1425 1426@printindex cp 1427 1428@node Key Index, , Concept Index, Top 1429@unnumbered Key Index 1430 1431This index includes an entry for each PCL-CVS key sequence documented in 1432this manual. 1433 1434@printindex ky 1435 1436@setchapternewpage odd 1437@summarycontents 1438@contents 1439@bye 1440 1441@ignore 1442 arch-tag: 5c7178ce-56fa-40b0-abd7-f4a09758b235 1443@end ignore 1444