comparison man/pcl-cvs.texi @ 29349:8857bdc4f765

New file.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 01 Jun 2000 03:34:57 +0000
parents
children 603d260f7741
comparison
equal deleted inserted replaced
29348:7334585a13ca 29349:8857bdc4f765
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
36 Copyright @copyright{} 1991-2000 Free Software Foundation, Inc.
37
38 Permission is granted to make and distribute verbatim copies of
39 this manual provided the copyright notice and this permission notice
40 are preserved on all copies.
41
42 @ignore
43 Permission is granted to process this file through Tex and print the
44 results, provided the printed document carries copying permission
45 notice 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
49 Permission is granted to copy and distribute modified versions of this
50 manual under the conditions for verbatim copying, provided also that the
51 section entitled ``GNU General Public License'' is included exactly as
52 in the original, and provided that the entire resulting derived work is
53 distributed under the terms of a permission notice identical to this one.
54
55 Permission is granted to copy and distribute translations of this manual
56 into another language, under the above conditions for modified versions,
57 except that the section entitled ``GNU General Public License'' and
58 this permission notice may be included in translations approved by the
59 Free 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
84 Copyright @copyright{} 1991-2000 Free Software Foundation, Inc.
85
86 Permission is granted to make and distribute verbatim copies of
87 this manual provided the copyright notice and this permission notice
88 are preserved on all copies.
89
90 Permission is granted to copy and distribute modified versions of this
91 manual under the conditions for verbatim copying, provided also that the
92 section entitled ``GNU General Public License'' is included exactly as
93 in the original, and provided that the entire resulting derived work is
94 distributed under the terms of a permission notice identical to this one.
95
96 Permission is granted to copy and distribute translations of this manual
97 into another language, under the above conditions for modified versions,
98 except that the section entitled ``GNU General Public License'' and
99 this permission notice may be included in translations approved by the
100 Free 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
111 This info manual describes PCL-CVS, the GNU Emacs front-end to CVS.
112 This 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
136 About PCL-CVS
137
138 * Contributors:: Contributors to PCL-CVS.
139 * Installation::
140
141 Commands
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
163 Customization
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
174 PCL-CVS is a front-end to CVS versions 1.9 and later.
175 It concisely shows the present status of a checked out module in an
176 Emacs buffer and provides single-key access to the most frequently used CVS
177 commands.
178 For Emacs users accustomed to VC, PCL-CVS can be thought of as a replacement
179 for VC-dired (@pxref{(emacs)VC Dired Mode}) specifically designed for CVS.
180
181 PCL-CVS was originally written many years ago by Per Cederqvist who
182 proudly maintained it until January 1996, at which point he released the
183 beta version 2.0b2 and passed on the maintainership to Greg A Woods.
184 Development stayed mostly dormant for a few years during which the
185 version 2.0 never seemed to be able to leave the ``beta'' stage while a
186 separate XEmacs version was slowly splitting away. In late 1999,
187 Stefan Monnier picked up development again, adding some major new
188 functionality and taking over maintenance.
189
190 As 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
202 Contributions to the package are welcome. I have limited time to work
203 on this project, but I will gladly add any code that you contribute to
204 me to this package (@pxref{Bugs}).
205
206 The following persons have made contributions to PCL-CVS.
207
208 @itemize @bullet
209 @item
210 Brian Berliner wrote CVS, together with some other contributors.
211 Without his work on CVS this package would be useless@dots{}
212
213 @item
214 Per Cederqvist wrote most of the otherwise unattributed functions in
215 PCL-CVS as well as all documentation.
216
217 @item
218 Inge Wallin (@samp{inge@@lysator.liu.se}) wrote the skeleton to
219 @file{pcl-cvs.texi}, and gave useful comments on it. He also wrote
220 the files @file{elib-node.el} and @file{compile-all.el}. The file
221 @file{cookie.el} was inspired by Inge.@refill
222
223 @item
224 Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
225 on both the functionality and the documentation.@refill
226
227 @item
228 Jamie 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
233 Leif Lonnblad contributed RCVS support. (Since superceded by the new
234 remote CVS support.)
235
236 @item
237 Jim Blandy (@samp{jimb@@cyclic.com}) contributed hooks to automatically
238 guess CVS log entries from ChangeLog contents; and initial support of
239 the new Cygnus / Cyclic remote CVS; as well as various sundry bug fixes
240 and cleanups.
241
242 @item
243 Jim Kingdon (@samp{kingdon@@cyclic.com}) contributed lots of fixes to
244 the build and install procedure.
245
246 @item
247 Greg A. Woods (@samp{woods@@weird.com}) contributed code to implement
248 the use of per-file diff buffers; and vendor join diffs with emerge and
249 ediff; as well as various and sundry bug fixes and cleanups.
250
251 @item
252 Greg Klanderman (@samp{greg.klanderman@@alum.mit.edu}) implemented
253 toggling of marked files; setting of CVS command flags via prefix
254 arguments; updated the XEmacs support; updated the manual; and fixed
255 numerous bugs.
256
257 @item
258 Stefan Monnier (@samp{monnier@@cs.yale.edu}) added a slew of other
259 features and introduced even more new bugs. If there's any bug left,
260 you can be sure it's his.
261
262 @item
263 Masatake YAMATO (@samp{masata-y@@is.aist-nara.ac.jp}) graciously
264 contributed the cvstree code to display a tree of tags which was later
265 superseded by the new cvs-status-mode.
266
267 @end itemize
268
269 Apart from these, a lot of people have sent us suggestions, ideas,
270 requests, bug reports and encouragement. Thanks a lot! Without you
271 there would be no new releases of PCL-CVS.
272
273
274 @node Installation, , Contributors, About PCL-CVS
275 @section Installation
276 @cindex Installation
277
278 As mentioned above, PCL-CVS comes preinstalled since Emacs-21.
279 If you're using Emacs 20, you can download an older version of PCL-CVS
280 from @url{ftp://flint.cs.yale.edu/pub/monnier/pcl-cvs}. That version
281 also works on XEmacs.
282
283 If you are running XEmacs 21.0 or later, PCL-CVS is available in
284 pre-compiled package form. Please refer to the XEmacs manual for
285 instructions regarding package selection and installation. Currently,
286 that PCL-CVS package also requires you to have installed the xemacs-base,
287 elib, and dired packages.
288
289 If you have @TeX{} installed at your site, you can make a typeset manual
290 from @file{pcl-cvs.texi}.
291
292 @enumerate
293 @item
294 Run @TeX{} by typing @samp{texi2dvi pcl-cvs.texi}.
295 @item
296 Convert the resulting device independent file @file{pcl-cvs.dvi} to a
297 form which your printer can output and print it. If you have a
298 postscript printer there is a program, @code{dvi2ps}, which does. There
299 is also a program which comes together with @TeX{}, @code{dvips}, which
300 you 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
309 This document assumes that you know what CVS is, and that you at least
310 know the fundamental concepts of CVS. If that is not the case you
311 should read the man page for CVS.
312
313 PCL-CVS is only useful once you have checked out a module. So before
314 you invoke it you must have a copy of a module somewhere in the file
315 system.
316
317 You can invoke PCL-CVS by typing @kbd{M-x cvs-examine RET}.
318 You can also invoke it via the menubar, under Tools.
319 Or if you prefer, you can also invoke PCL-CVS by simply visiting the
320 CVS administrative subdirectory of your module, with a prefix argument.
321 F.ex. @kbd{C-u C-x 5 f ~/my/project/CVS RET}.
322
323 The 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
325 files 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
330 Repository : /usr/CVSroot
331 Module : test
332 Working dir: /users/ceder/FOO/test
333
334
335 In directory .:
336 Need-Update bar
337 Need-Update file.txt
338 Modified namechange
339 Need-Update newer
340 In directory sub:
341 Modified ChangeLog
342
343 --------------------- End ---------------------
344 -- last cmd: cvs -f -z6 -n update -d -P --
345 @end example
346
347 In this example, your repository is in @file{/usr/CVSroot} and CVS has
348 been 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
351 by someone else in the CVS repository. Two files (@file{namechange}
352 and @file{sub/ChangeLog}) have been modified locally, and need to be
353 checked in.
354
355 You 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
358 repository. @xref{Committing changes}. You can also press @kbd{O} to
359 update any of the files that are marked @samp{Need-Update}. You can
360 also 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
363 You can then press @kbd{=} to easily get a @samp{diff} between your
364 modified file and the base version that you started from or you can
365 press @kbd{l} to get the output from @samp{cvs log}. Many more such
366 commands are available simply by pressing a key (@pxref{Getting info
367 about files}).
368
369 @node Buffer contents, Selected files, Getting started, Top
370 @chapter Buffer contents
371 @cindex Buffer contents
372
373 The display contains several columns, some of which are optional.
374 They contain, from left to right:
375
376 @itemize @bullet
377
378 @item
379 Optionally, the head revision of the file. This is the latest version
380 found in the repository. It might also contain (instead of the head
381 revision) a sub status which typically gives further information about
382 how we got to the current state, for example @samp{patched},
383 @samp{merged}, ...
384
385 @item
386 An asterisk when the file is @dfn{marked} (@pxref{Selected
387 files}).@refill
388
389 @item
390 The actual status of the file wrt to the repository. @xref{Buffer
391 contents}, for more information.@refill
392
393 @item
394 Optionally, the base revision of the file. This is the version
395 which the copy in your working directory is based upon.
396
397 @item
398 The file name.
399
400 @end itemize
401
402 The @samp{file status} field can have the following values:
403
404 @table @samp
405
406 @item Modified
407 The file is modified in your working directory, and there was no
408 modification to the same file in the repository. This status can have
409 the following substatus:
410
411 @table @samp
412
413 @item merged
414 The file was modified in your working directory, and there were
415 modifications in the repository as well, but they were merged
416 successfully, without conflict, in your working directory.@refill
417
418 @end table
419
420 @item Conflict
421 A conflict was detected while trying to merge your changes to @var{file}
422 with changes from the repository. @var{file} (the copy in your
423 working directory) is now the output of the @samp{rcsmerge} command on
424 the two versions; an unmodified copy of your file is also in your
425 working directory, with the name @file{.#@var{file}.@var{version}},
426 where @var{version} is the RCS revision that your modified file started
427 from. @xref{Viewing differences}, for more details.@refill
428
429 A conflict can also come from a disagreement on the existence of the file
430 rather than on its content. This case is indicated by the following
431 possible substatus:
432
433 @table @samp
434
435 @item removed
436 The file is locally removed but a new revision has been committed to
437 the repository by someone else.
438
439 @item added
440 The file is locally added and has also been added to the repository
441 by someone else.
442
443 @item modified
444 The file is locally modified but someone else has removed it from the
445 repository.
446
447 @end table
448
449 @item Added
450 The file has been added by you, but it still needs to be checked in to
451 the repository.@refill
452
453 @item Removed
454 The file has been removed by you, but it still needs to be checked in to
455 the repository. You can resurrect it by typing @kbd{a} (@pxref{Adding
456 and removing files}).@refill
457
458 @item Unknown
459 A file that was detected in your directory, but that neither appears in
460 the repository, nor is present on the list of files that CVS should
461 ignore.@refill
462
463 @item Up-to-date
464 The file is up to date with respect to the version in the repository.
465 This status can have a substatus of:
466
467 @table @samp
468
469 @item added
470 You have just added the file to the repository.@refill
471
472 @item updated
473 The file was brought up to date with respect to the repository. This is
474 done for any file that exists in the repository but not in your source,
475 and for files that you haven't changed but are not the most recent
476 versions available in the repository.@refill
477
478 @item patched
479 The file was brought up to date with respect to the remote repository by
480 way of fetching and applying a patch to the file in your source. This
481 is equivalent to @samp{updated} except that CVS decided to use a hopefully
482 more efficient method.@refill
483
484 @item committed
485 You just committed the file.@refill
486
487 @end table
488
489 @item Need-Update
490 Either a newer version than the one in your source is available in the
491 repository and you have not modified your checked out version, or the
492 file 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
496 You have modified the checked out version of the file, and a newer
497 version is available in the repository. A merge will take place when
498 you run a @samp{cvs-update}.
499
500 @item Missing
501 The file has been unexpectedly removed from your working directory
502 although 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
514 Many of the commands work on the current set of @dfn{selected} files
515 which can be either the set of marked files (if any file is marked and
516 marks are no ignored) or whichever file or directory the cursor is on.
517
518 If a directory is selected but the command cannot be applied to a
519 directory, then it will be applied to the set of files under this
520 directory which are in the @samp{*cvs*} buffer.
521
522 Furthermore, each command only operates on a subset of the selected
523 files, depending on whether or not the command is @dfn{applicable} to
524 each 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
527 applicability wrong, you can override it with the special prefix
528 @code{cvs-mode-force-command} normally bound to @kbd{M-f} (and file a
529 bug report). The applicability rule can be slightly changed with
530 @code{cvs-allow-dir-commit} and @code{cvs-force-dir-tag}.
531
532 By default, marks are always in effect (you may change this, however, by
533 setting the variable @code{cvs-default-ignore-marks}) except for the
534 commands that @samp{tag} or @samp{diff} a file (which can be changed
535 with the variable @code{cvs-invert-ignore-marks}).
536
537 In addition, you may use the special prefix @code{cvs-mode-toggle-marks}
538 normally bound to @key{T} to toggle the use of marks for the following
539 command.
540
541 This scheme might seem a little complicated, but once one gets used to
542 it, it is quite powerful.
543
544 For 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
550 This chapter describes all the commands that you can use in PCL-CVS.
551 @end iftex
552 @ifinfo
553 The nodes in this menu contains explanations about all the commands that
554 you 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
589 Most commands in PCL-CVS require that you have a @samp{*cvs*}
590 buffer. The commands that you use to get one are listed below.
591 For each, a @samp{cvs} process will be run, the output will be parsed by
592 PCL-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
598 Run a @samp{cvs update} command. You will be asked for the directory
599 in which the @samp{cvs update} will be run.@refill
600
601 @item M-x cvs-examine
602 Run a @samp{cvs -n update} command. This is identical to the previous
603 command, except that it will only check what needs to be done but will
604 not change anything. You will be asked for the directory in
605 which the @samp{cvs -n update} will be run.@refill
606
607 @item M-x cvs-status
608 Run a @samp{cvs status} command. You will be asked for the directory
609 in which the @samp{cvs status} will be run.@refill
610
611 @item M-x cvs-checkout
612 Run a @samp{cvs checkout} command. You will be asked for the directory
613 in which the @samp{cvs update} will be run and the module to be checked
614 out.@refill
615
616 @item M-x cvs-quickdir
617 Populate the @samp{*cvs*} buffer by just looking at the @file{CVS/Entries}
618 files. This is very much like @code{cvs-examine} except that it does
619 not access the CVS repository which is a major advantage when the
620 repository is far away. But of course, it will not be able to detect
621 when a file needs to be updated or merged.
622
623 @end table
624
625 The first four of those commands are also reachable from the menubar
626 under @samp{Tools->PCL-CVS}. Finally an alternative way is to visit
627 with the CVS administrative subdirectory in your work area with a simple
628 prefix argument. For example @kbd{C-u C-x C-f ~/my/work/CVS RET}. This
629 will by default run @code{cvs-examine} but the specific behavior can be
630 changed with @code{cvs-dired-action} and @code{cvs-dired-use-hook}.
631
632 By default, the commands above will descend recursively into
633 subdirectories. You can avoid that behavior by including @samp{-l} in
634 the flags for the command. These flags can be set by giving a prefix
635 argument 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
644 This section describes the convention used by nearly all PCL-CVS
645 commands for setting optional flags sent to CVS. A single @kbd{C-u}
646 prefix argument is used to cause the command to prompt for flags to be
647 used for the current invocation of the command only. Two @kbd{C-u} prefix
648 arguments are used to prompt for flags which will be set permanently, for the
649 current invocation and all that follow, until the flags are changed, or
650 unless temporary flags are set which override them.
651
652 Perhaps an example or two is in order. Say you are about to add a
653 binary file to the repository, and want to specify the flags @samp{-kb}
654 to @samp{cvs add}. You can type @kbd{C-u a -kb RET}, enter the
655 description, and the file will be added. Subsequent adds will use the
656 previously prevailing flags.
657
658 As a second example, say you are about to perform a diff and want to see
659 the 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
661 subsequent diffs to use this flag. You can type @kbd{C-u C-u = -u RET}
662 and 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
664 by using a single @kbd{C-u} prefix argument.
665
666 Additionally to this, some commands can take @dfn{special prefix} arguments.
667 These work as follows: when called with a @kbd{C-u} prefix, the user is
668 prompted for a new value of the special prefix and the special prefix is
669 activated for the next command. When called without the @kbd{C-u}
670 prefix, the special prefix is re-activated (with the same value as last
671 time) for the next command. Calling the prefix command again when it's
672 already activated deactivates it. Calling it with the @kbd{C-u C-u}
673 prefix activates it for all subsequent commands until you deactivate it
674 explicitly. The special prefixes are:
675
676 @table @kbd
677
678 @item T
679 Toggles whether or not marks will be active in the next command.@refill
680
681 @item b
682 Provide the next command with a branch (can be any version
683 specifier) to work on.@refill
684
685 @item B
686 Secondary branch argument. Only meaningful if `b' is also used.
687 It 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
691 Forces the next command to apply to every selected file rather than only
692 to 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
705 The following commands can be used from within the @samp{*cvs*} buffer
706 to update the display:
707
708 @table @kbd
709
710 @item M-u
711 This runs the command @samp{cvs-update}.@refill
712
713 @item M-e
714 This runs the command @samp{cvs-examine}.@refill
715
716 @item M-s
717 This runs the command @samp{cvs-status}.@refill
718
719 @end table
720
721 Additionally to the above commands which operate on the whole module,
722 you can run the equivalent CVS command on just a subset of the
723 files/directories with
724
725 @table @kbd
726
727 @item O
728 Runs @code{cvs-mode-update} on the selected files. When run on the
729 top level directory, this is equivalent to @kbd{M-u}.@refill
730
731 @item e
732 Runs @code{cvs-mode-examine} on the selected files. When run on the
733 top level directory, this is equivalent to @kbd{M-e}.@refill
734
735 @item s
736 Runs @code{cvs-mode-status} on the selected files. When run on the
737 top level directory, this is equivalent to @kbd{M-s} except that
738 CVS output will be shown in a @samp{*cvs-info*} buffer that will be
739 put 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
753 You can use most normal Emacs commands to move forward and backward in
754 the buffer. Some keys are rebound to functions that take advantage of
755 the fact that the buffer is a PCL-CVS buffer:
756
757
758 @table @kbd
759 @item SPC
760 @itemx n
761 These keys move the cursor one file forward, towards the end of the
762 buffer (@code{cvs-mode-next-line}).@refill
763
764 @itemx p
765 This 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
789 PCL-CVS works on a set of @dfn{selected files} (@pxref{Selected files}).
790 You can mark and unmark files with these commands:
791
792 @table @kbd
793 @item m
794 This marks the file that the cursor is positioned on. If the cursor is
795 positioned on a directory all files in that directory will be marked.
796 (@code{cvs-mode-mark}).@refill
797
798 @item u
799 Unmark the file that the cursor is positioned on. If the cursor is on a
800 directory, all files in that directory will be unmarked.
801 (@code{cvs-mode-unmark}).@refill
802
803 @item M
804 Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
805
806 @item M-@key{DEL}
807 Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}).
808
809 @item @key{DEL}
810 Unmark the file on the previous line, and move point to that line
811 (@code{cvs-mode-unmark-up}).
812
813 @item @key{%}
814 Mark all files matching a regular expression
815 (@code{cvs-mode-mark-matching-files}).
816
817 @item @key{T}
818 Toggle 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
836 Committing changes basically works as follows:
837
838 @enumerate
839 @item
840 After 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
845 You type in the log message describing the changes you're about to
846 commit (@pxref{Log Edit Mode}).@refill
847
848 @item
849 When you're happy with it, you type @kbd{C-c C-c} to do the actual
850 commit.@refill
851
852 @end enumerate
853
854 There's no hidden state, so you can abort the process or pick it up
855 again at any time.
856
857 The set of files actually committed is really decided only during the
858 very last step, which is mixed blessing. It allows you to go back and
859 change your mind about which files to commit, but it also means that you
860 might inadvertently change the set of selected files. To reduce the
861 risk of error, @kbd{C-c C-c} will ask for confirmation if the set of
862 selected files has changed between the first step and the last. You can
863 change this last detail with @code{log-edit-confirm}.
864
865 As 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
867 straight to @samp{*cvs-commit*} without erasing it or changing anything
868 to its content, while the second will first erase @samp{*cvs-commit*}
869 and try to initialize it with a sane default (it will do that by either
870 using a template provided by the CVS administrator or by extracting a
871 relevant log message from a ChangeLog file).
872
873 If 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
876 the new values substituted. The auto-revert makes sure that you get
877 them into your buffer). The revert will not occur if you have modified
878 your 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
896 There are currently three commands that can be used to find a file (that
897 is, load it into a buffer and start editing it there). These commands
898 work on the line that the cursor is situated at. They always ignore any marked
899 files.
900
901 @table @kbd
902 @item f
903 Find the file that the cursor points to. Run @samp{dired}
904 @ifinfo
905 (@pxref{Dired,,,Emacs})
906 @end ifinfo
907 if the cursor points to a directory (@code{cvs-mode-find-file}).@refill
908
909 @item o
910 Like @kbd{f}, but use another window
911 (@code{cvs-mode-find-file-other-window}).@refill
912
913 @item A
914 Invoke @samp{add-change-log-entry-other-window} to edit a
915 @samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
916 directory 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
933 Call the command @code{cvs-mode-log} which runs @samp{cvs log} on all
934 selected files, and show the result in a temporary @samp{*cvs-info*}
935 buffer (@pxref{Log View Mode}).
936
937 @item s
938 Call the command @code{cvs-mode-status} which runs @samp{cvs status} on
939 all selected files, and show the result in a temporary @samp{*cvs-info*}
940 buffer (@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
956 The following commands are available to make it easy to add and remove
957 files from the CVS repository.
958
959 @table @kbd
960 @item a
961 Add all selected files. This command can be used on @samp{Unknown}
962 files (@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
965 repository.@refill
966
967 This command can also be used on @samp{Removed} files (before you commit
968 them) to resurrect them.
969
970 The command that is run is @code{cvs-mode-add}.
971
972 @item r
973 This command removes the selected files (after prompting for
974 confirmation). The files are @samp{rm}ed from your directory and
975 (unless the status was @samp{Unknown}; @pxref{Buffer contents}) they will
976 also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
977 disappear 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
981 The 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
994 If you have modified a file, and for some reason decide that you don't
995 want to keep the changes, you can undo them with this command. It works
996 by removing your working copy of the file and then getting the latest
997 version 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
1016 This command allows you to remove all entries that you have processed.
1017 More specifically, the lines for @samp{Up-to-date} files (@pxref{Buffer
1018 contents} are removed from the buffer. If a directory becomes empty the heading
1019 for that directory is also removed. This makes it easier to get an
1020 overview of what needs to be done.
1021
1022 The command is called @code{cvs-mode-remove-handled}. If
1023 @samp{cvs-auto-remove-handled} is set to non-@code{nil} this will
1024 automatically be performed after every commit.@refill
1025
1026 @item C-k
1027 This command can be used for lines that @samp{cvs-mode-remove-handled} would
1028 not 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
1039 Arrange so that CVS will ignore the selected files. The file names are
1040 added to the @file{.cvsignore} file in the corresponding directory. If
1041 the @file{.cvsignore} doesn't exist it will be created.
1042
1043 The @file{.cvsignore} file should normally be added to the repository,
1044 but you could ignore it also if you like it better that way.
1045
1046 This 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 =
1068 Display a @samp{cvs diff} between the selected files and the version
1069 that they are based on. (@code{cvs-mode-diff}).@refill
1070
1071 @item d b
1072 If 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
1074 original 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
1076 number that your file was based on.@refill
1077
1078 With 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
1082 Display a @samp{cvs diff} between the selected files and the head
1083 revision in the repository (the most recent version on the current
1084 branch). (@code{cvs-mode-diff-head}).@refill
1085
1086 @item d v
1087 Display a @samp{cvs diff} between the selected files and the head
1088 revision of the vendor branch in the repository.
1089 (@code{cvs-mode-diff-vendor}).@refill
1090
1091 @end table
1092
1093 By default, @samp{diff} commands ignore the marks. This can be changed
1094 with @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
1109 This command uses ediff (or emerge depending on
1110 @samp{cvs-idiff-imerge-handlers}) to allow you to view diffs.
1111 If a prefix argument is given, PCL-CVS will prompt for a revision against
1112 which the diff should be made, else the default will be to use the BASE
1113 revision.
1114
1115 @item d E
1116 This command use ediff (or emerge, see above) to allow you to do an
1117 interactive 3-way merge.
1118
1119 @strong{Note:} When the file status is @samp{Conflict},
1120 CVS has already performed a merge. The resulting file is not used in
1121 any 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
1123 created 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
1135 Update 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
1153 Tag all selected files by running @samp{cvs tag} on
1154 them. (@code{cvs-mode-tag}). It's usually preferable to tag directories
1155 at a time. Rather than selecting all files (which too often doesn't
1156 select all files but only the few that are displayed), clear the
1157 selection with @kbd{M-DEL} (@code{cvs-mode-unmark-all-files}), position
1158 the cursor on the directory you want to tag and hit @kbd{t}.
1159
1160 @end table
1161
1162 By default, @samp{tag} commands ignore the marks. This can be changed
1163 with @code{cvs-invert-ignore-marks}. Also by default @samp{tag} can
1164 only be applied to directories, see @code{cvs-force-dir-tag} if you want
1165 to 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
1186 Byte compile all selected files that end in .el.
1187
1188 @item M-x cvs-mode-delete-lock
1189 This command deletes the lock files that
1190 the *cvs* buffer informs you about. You should normally never have to
1191 use this command since CVS tries very carefully to always remove the
1192 lock files itself.
1193
1194 You can only use this command when a message in the *cvs* buffer tells
1195 you so. You should wait a while before using this command in case
1196 someone else is running a cvs command.
1197
1198 Also note that this only works if the repository is local.
1199
1200 @item ?
1201 @itemx h
1202 Show a summary of common command key bindings in the echo
1203 area. (@code{cvs-help}).
1204
1205 @item q
1206 Quit 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
1246 If you have an idea about any customization that would be handy but
1247 isn't present in this list, please tell me!
1248 For info on how to reach me, see @xref{Bugs}.@refill
1249
1250 @table @samp
1251 @item cvs-auto-remove-handled
1252 If this variable is set to any non-@code{nil} value
1253 @samp{cvs-mode-remove-handled} will be called every time you check in
1254 files, after the check-in is ready. @xref{Removing handled
1255 entries}.@refill
1256
1257 @item cvs-auto-remove-directories
1258 If this variable is set to any non-@code{nil} value, directories that do
1259 not contain any files to be checked in will not be listed in the
1260 @samp{*cvs*} buffer.@refill
1261
1262 @item cvs-auto-revert
1263 If this variable is set to any non-@samp{nil} value any buffers you have
1264 that visit a file that is committed will be automatically reverted.
1265 This variable defaults to @samp{t}. @xref{Committing changes}.@refill
1266
1267 @item cvs-update-prog-output-skip-regexp
1268 The @samp{-u} flag in the @file{modules} file can be used to run a command
1269 whenever a @samp{cvs update} is performed (see cvs(5)). This regexp
1270 is used to search for the last line in that output. It is normally set
1271 to @samp{"$"}. That setting is only correct if the command outputs
1272 nothing. Note that PCL-CVS will get very confused if the command
1273 outputs @emph{anything} to @samp{stderr}.
1274
1275 @item cvs-cvsroot
1276 This variable can be set to override @samp{CVSROOT}. It should be a
1277 string. If it is set then every time a cvs command is run it will be
1278 called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if
1279 your site has several repositories.
1280
1281 @item log-edit-require-final-newline
1282 When you enter a log message in the @samp{*cvs-commit-message*} buffer
1283 PCL-CVS will normally automatically insert a trailing newline, unless
1284 there already is one. This behavior can be controlled via
1285 @samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the
1286 default behavior), a newline will always be appended. If it is
1287 @samp{nil}, newlines will never be appended. Any other value causes
1288 PCL-CVS to ask the user whenever there is no trailing newline in the
1289 commit message buffer.
1290
1291 @item log-edit-changelog-full-paragraphs
1292 If this variable is non-@code{nil}, include full ChangeLog paragraphs in
1293 the CVS log created by @samp{cvs-mode-changelog-commit}.
1294 This may be set in the local variables section of a ChangeLog, to
1295 indicate the policy for that ChangeLog.
1296
1297 A ChangeLog paragraph is a bunch of log text containing no blank lines;
1298 a paragraph usually describes a set of changes with a single purpose,
1299 but perhaps spanning several functions in several files. Changes in
1300 different paragraphs are unrelated.
1301
1302 You could argue that the CVS log entry for a file should contain the
1303 full ChangeLog paragraph mentioning the change to the file, even though
1304 it may mention other files, because that gives you the full context you
1305 need to understand the change. This is the behavior you get when this
1306 variable is set to t, the default.
1307
1308 On the other hand, you could argue that the CVS log entry for a change
1309 should contain only the text for the changes which occurred in that
1310 file, because the CVS log is per-file. This is the behavior you get
1311 when this variable is set to nil.
1312
1313 @item cvs-sort-ignore-file
1314 If 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
1317 default.
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
1335 The Emacs lisp file @file{pcl-cvs-xemacs.el} included with PCL-CVS adds
1336 a few extra features for XEmacs, including menus, mouse bindings, and
1337 fontification the the @samp{*cvs*} buffer. The faces defined for
1338 fontification are listed below:
1339
1340 @table @samp
1341
1342 @item cvs-header-face
1343 This face is used to highlight directory changes.
1344
1345 @item cvs-filename-face
1346 This face is used to highlight file names.
1347
1348 @item cvs-unknown-face
1349 This face is used to highlight the status of files which are UNKNOWN.
1350
1351 @item cvs-handled-face
1352 This face is used to highlight the status of files which are handled and
1353 need no further action.
1354
1355 @item cvs-need-action-face
1356 This face is used to highlight the status of files which still need action.
1357
1358 @item cvs-marked-face
1359 This 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
1375 If you find a bug or misfeature, don't hesitate to tell us! Send email
1376 to @samp{bugs-gnu-emacs@@gnu.org} which gatewayed to the newsgroup
1377 @samp{gnu.emacs.bugs}. Feature requests should also be sent there. We
1378 prefer discussing one thing at a time. If you find several unrelated
1379 bugs, please report them separately. If you are running PCL-CVS under
1380 XEmacs, you should also send a copy of bug reports to
1381 @samp{xemacs-beta@@xemacs.org}.
1382
1383 If you have problems using PCL-CVS or other questions,
1384 @samp{help-gnu-emacs@@gnu.org} also gatewayed to @samp{gnu.emacs.help}
1385 is a good place to get help as well as @samp{cvs-info@@gnu.org}
1386 yet again gatewayed to @samp{gnu.cvs.help}.
1387
1388 If you have ideas for improvements, or if you have written some
1389 extensions to this package, we would like to hear from you. We hope that
1390 you find this package useful!
1391
1392 Below is a partial list of currently known problems with PCL-CVS version
1393 2.0.
1394
1395 @table @asis
1396 @item Unexpected output from CVS
1397 Unexpected output from CVS may confuse PCL-CVS. It will create
1398 warning messages in the *cvs* buffer alerting you to any parse errors.
1399 If you get these messages, please send a bug report to the email
1400 addresses listed above. Include the contents of the *cvs* buffer, the
1401 output of the CVS process (which should be found in the *cvs-tmp* Emacs
1402 buffer), 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