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