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