1 \input texinfo @c -*-texinfo-*-
3 @comment OrigId: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder Exp
4 @comment @@(#)cvs/contrib/pcl-cvs:$Name: $:$Id: pcl-cvs.texinfo,v 1.1 1996/04/14 15:18:04 kfogel Exp $
6 @comment Documentation for the GNU Emacs CVS mode.
7 @comment Copyright (C) 1992 Per Cederqvist
9 @comment This file is part of the pcl-cvs distribution.
11 @comment Pcl-cvs is free software; you can redistribute it and/or modify
12 @comment it under the terms of the GNU General Public License as published by
13 @comment the Free Software Foundation; either version 1, or (at your option)
14 @comment any later version.
16 @comment Pcl-cvs is distributed in the hope that it will be useful,
17 @comment but WITHOUT ANY WARRANTY; without even the implied warranty of
18 @comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 @comment GNU General Public License for more details.
21 @comment You should have received a copy of the GNU General Public License
22 @comment along with pcl-cvs; see the file COPYING. If not, write to
23 @comment the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25 @setfilename pcl-cvs.info
26 @settitle Pcl-cvs - The Emacs Front-End to CVS
30 Copyright @copyright{} 1992 Per Cederqvist
32 Permission is granted to make and distribute verbatim copies of
33 this manual provided the copyright notice and this permission notice
34 are preserved on all copies.
37 Permission is granted to process this file through Tex and print the
38 results, provided the printed document carries copying permission
39 notice identical to this one except for the removal of this paragraph
40 (this paragraph not being relevant to the printed manual).
43 Permission is granted to copy and distribute modified versions of this
44 manual under the conditions for verbatim copying, provided also that the
45 section entitled ``GNU General Public License'' is included exactly as
46 in the original, and provided that the entire resulting derived work is
47 distributed under the terms of a permission notice identical to this one.
49 Permission is granted to copy and distribute translations of this manual
50 into another language, under the above conditions for modified versions,
51 except that the section entitled ``GNU General Public License'' and
52 this permission notice may be included in translations approved by the
53 Free Software Foundation instead of in the original English.
57 @comment The titlepage section does not appear in the Info file.
60 @comment The title is printed in a large font.
61 @center @titlefont{User's Guide}
63 @center @titlefont{to}
65 @center @titlefont{pcl-cvs - the Emacs Front-End to CVS}
67 @center release 1.05-CVS-$Name: $
70 @center Per Cederqvist
72 @center last updated 20 Nov 1995
75 @comment The following two commands start the copyright page
76 @comment for the printed manual. This will not appear in the Info file.
78 @vskip 0pt plus 1filll
79 Copyright @copyright{} 1992 Per Cederqvist
81 Permission is granted to make and distribute verbatim copies of
82 this manual provided the copyright notice and this permission notice
83 are preserved on all copies.
85 Permission is granted to copy and distribute modified versions of this
86 manual under the conditions for verbatim copying, provided also that the
87 section entitled ``GNU General Public License'' is included exactly as
88 in the original, and provided that the entire resulting derived work is
89 distributed under the terms of a permission notice identical to this one.
91 Permission is granted to copy and distribute translations of this manual
92 into another language, under the above conditions for modified versions,
93 except that the section entitled ``GNU General Public License'' and
94 this permission notice may be included in translations approved by the
95 Free Software Foundation instead of in the original English.
98 @comment ================================================================
99 @comment The real text starts here
100 @comment ================================================================
102 @node Top, Installation, (dir), (dir)
103 @comment node-name, next, previous, up
107 This info manual describes pcl-cvs which is a GNU Emacs front-end to
108 CVS. It works with CVS versions 1.5 through 1.7 and newer, and possibly
109 CVS-1.3 and CVS-1.4A2. This manual is updated to release
110 1.05-CVS-$Name: $ of pcl-cvs.
115 * Installation:: How to install pcl-cvs on your system.
116 * About pcl-cvs:: Authors and ftp sites.
118 * Getting started:: An introduction with a walk-through example.
119 * Buffer contents:: An explanation of the buffer contents.
120 * Commands:: All commands, grouped by type.
122 * Customization:: How you can tailor pcl-cvs to suit your needs.
123 * Future enhancements:: Future enhancements of pcl-cvs.
124 * Bugs:: Bugs (known and unknown).
125 * COPYING:: GNU General Public License
126 * Function and Variable Index:: List of functions and variables.
127 * Concept Index:: List of concepts.
128 * Key Index:: List of keystrokes.
130 --- The Detailed Node Listing ---
134 * Pcl-cvs installation:: How to install pcl-cvs on your system.
135 * On-line manual installation:: How to install the on-line manual.
136 * Typeset manual installation:: How to create typeset documentation
141 * Contributors:: Contributors to pcl-cvs.
142 * Archives:: Where can I get a copy of Pcl-Cvs?
146 * File status:: The meaning of the second field.
147 * Selected files:: How selection works.
151 * Updating the directory:: Commands to update the local directory
152 * Movement commands:: How to move up and down in the buffer
153 * Marking files:: How to mark files that other commands
154 will later operate on.
155 * Committing changes:: Checking in your modifications to the
157 * Editing files:: Loading files into Emacs.
158 * Getting info about files:: Display the log and status of files.
159 * Adding and removing files:: Adding and removing files
160 * Undoing changes:: Undoing changes
161 * Removing handled entries:: Uninteresting lines can easily be removed.
162 * Ignoring files:: Telling CVS to ignore generated files.
163 * Viewing differences:: Commands to @samp{diff} different versions.
164 * Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
165 * Invoking Emerge:: Running @samp{emerge} from @samp{*cvs*} buffer.
166 * Reverting your buffers:: Reverting your buffers
167 * Miscellaneous commands:: Miscellaneous commands
171 @node Installation, About pcl-cvs, Top, Top
172 @comment node-name, next, previous, up
174 @chapter Installation
177 This section describes the installation of pcl-cvs, the GNU Emacs CVS
178 front-end. You should install not only the elisp files themselves, but
179 also the on-line documentation so that your users will know how to use
180 it. You can create typeset documentation from the file
181 @file{pcl-cvs.texinfo} as well as an on-line info file. The following
182 steps are also described in the file @file{INSTALL} in the source
186 * Pcl-cvs installation:: How to install pcl-cvs on your system.
187 * On-line manual installation:: How to install the on-line manual.
188 * Typeset manual installation:: How to create typeset documentation
193 @node Pcl-cvs installation, On-line manual installation, Installation, Installation
194 @comment node-name, next, previous, up
195 @section Installation of the pcl-cvs program
196 @cindex Installation of elisp files
200 Possibly edit the file @file{Makefile} to reflect the situation at your
201 site. We say "possibly" because the version of pcl-cvs included with
202 CVS uses a configuration mechanism integrated with the overall
203 mechanisms used by the CVS build and install procedures. Thus the file
204 @code{Makefile} will be generated automatically from the file
205 @code{Makefile.in}, and it should not be necessary to edit it further.
207 If you do have to edit the @file{Makefile}, the only things you have to
208 change is the definition of @code{lispdir} and @code{infodir}. The
209 elisp files will be copied to @code{lispdir}, and the info file(s) to
215 There are a couple of pathnames that you have to check to make sure that
216 they match your system. They appear early in the file
219 @strong{NOTE:} If your system is running emacs 18.57 or earlier you MUST
220 uncomment the line that says:
222 (setq delete-exited-processes nil)
225 Setting @code{delete-exited-processes} to @code{nil} works around a bug
226 in emacs that causes it to dump core. The bug was fixed in emacs
230 Release 1.05 and later of pcl-cvs requires parts of the Elib library,
231 version 1.0 or later. Elib is available via anonymous ftp from
232 prep.ai.mit.edu in @file{pub/gnu/elib-1.0.tar.gz}, and from a lot of
233 other sites that mirror prep. Get Elib, and install it, before
236 @strong{NOTE:} The version of pcl-cvs included with CVS includes a copy
237 of Elib in the sub-directory @file{elib} under the
238 @file{contrib/pcl-cvs} directory.
241 Type @samp{make install} in the source directory. This will
242 byte-compile all @file{.el} files and copy the @file{*.elc} files into
243 the directory you specified in step 1.
245 If you want to install the @file{*.el} files too, you can type
246 @samp{make install-el} to do so.
248 If you only want to create the compiled elisp files, but don't want to
249 install them, you can type @samp{make} without parameters.
252 Edit the file @file{default.el} in your emacs lisp directory (usually
253 @file{/usr/gnu/lib/emacs/site-lisp} or something similar) and enter the
254 contents of the file @file{pcl-cvs-startup.el} into it. It contains a
255 couple of @code{auto-load}s that facilitates the use of pcl-cvs.
260 @node On-line manual installation, Typeset manual installation, Pcl-cvs installation, Installation
261 @comment node-name, next, previous, up
263 @section Installation of the on-line manual.
264 @cindex Manual installation (on-line)
265 @cindex Installation of on-line manual
266 @cindex Generating the on-line manual
267 @cindex On-line manual (how to generate)
268 @cindex Info-file (how to generate)
272 Create the info file(s) @file{pcl-cvs.info*} from @file{pcl-cvs.texinfo}
273 by typing @samp{make info}. If you don't have the program
274 @samp{makeinfo} you can get it by anonymous ftp from
275 e.g. @samp{prep.ai.mit.edu} as @file{pub/gnu/texinfo-3.7.tar.gz} (there
276 might be a newer version there when you read this).@refill
279 Install the info file(s) @file{pcl-cvs.info*} into your standard
280 @file{info} directory. You should be able to do this by typing
281 @samp{make install-info}.@refill
284 Edit the file @file{dir} in the @file{info} directory and enter one line
285 to contain a pointer to the info file(s) @file{pcl-cvs.info*}. The line
286 can, for instance, look like this:@refill
289 * Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
294 @node Typeset manual installation, , On-line manual installation, Installation
295 @comment node-name, next, previous, up
297 @section How to make typeset documentation from pcl-cvs.texinfo
298 @cindex Manual installation (typeset)
299 @cindex Installation of typeset manual
300 @cindex Printing a manual
301 @cindex TeX - generating a typeset manual
302 @cindex Generating a typeset manual
304 If you have @TeX{} installed at your site, you can make a typeset manual
305 from @file{pcl-cvs.texinfo}.
309 Run @TeX{} by typing `@samp{make pcl-cvs.dvi}'. You will not get the
310 indices unless you have the @code{texindex} program.
313 Convert the resulting device independent file @file{pcl-cvs.dvi} to a
314 form which your printer can output and print it. If you have a
315 postscript printer there is a program, @code{dvi2ps}, which does. There
316 is also a program which comes together with @TeX{}, @code{dvips}, which
322 @node About pcl-cvs, Getting started, Installation, Top
323 @comment node-name, next, previous, up
325 @chapter About pcl-cvs
326 @cindex About pcl-cvs
328 Pcl-cvs is a front-end to CVS versions 1.5 through 1.7 and newer; and
329 possibly verison 1.3 and 1.4A2. It integrates the most frequently used
330 CVS commands into an emacs interface.
333 * Contributors:: Contributors to pcl-cvs.
334 * Archives:: Where can I get a copy of Pcl-Cvs?
338 @node Contributors, Archives, About pcl-cvs, About pcl-cvs
339 @comment node-name, next, previous, up
341 @section Contributors to pcl-cvs
345 Contributions to the package are welcome. I have limited time to work
346 on this project, but I will gladly add any code that you contribute to
347 me to this package (@pxref{Bugs}).
349 The following persons have made contributions to pcl-cvs.
353 Brian Berliner wrote CVS, together with some other contributors.
354 Without his work on CVS this package would be useless@dots{}
357 Per Cederqvist wrote most of the otherwise unattributed functions in
358 pcl-cvs as well as all documentation.
361 Inge Wallin (@samp{inge@@lysator.liu.se}) wrote the skeleton to
362 @file{pcl-cvs.texinfo}, and gave useful comments on it. He also wrote
363 the files @file{elib-node.el} and @file{compile-all.el}. The file
364 @file{cookie.el} was inspired by Inge.@refill
367 Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
368 on both the functionality and the documentation.@refill
371 Jamie Zawinski (@samp{jwz@@lucid.com}) contributed
372 @file{pcl-cvs-lucid.el}.
375 Leif Lonnblad contributed RCVS support. (Since superceded by the new
379 Jim Blandy (@samp{jimb@@cyclic.com}) contributed hooks to automatically
380 guess CVS log entries from ChangeLog contents; and initial support of
381 the new Cygnus / Cyclic remote CVS; as well as various sundry bug fixes
385 Jim Kingdon (@samp{kingdon@@cyclic.com}) contributed lots of fixes to
386 the build and install procedure.
389 Greg A. Woods (@samp{woods@@planix.com}) contributed code to implement
390 the use of per-file diff buffers; and vendor join diffs with emerge and
391 ediff; as well as various an sundry bug fixes and cleanups.
394 Apart from these, a lot of people have send me suggestions, ideas,
395 requests, bug reports and encouragement. Thanks a lot! Without your
396 there would be no new releases of pcl-cvs.
399 @node Archives, , Contributors, About pcl-cvs
400 @comment node-name, next, previous, up
402 @section Where can I get pcl-cvs?
406 @cindex Getting pcl-cvs
407 @cindex Email archives
409 The current release of pcl-cvs is included in CVS-1.7.
411 The author's release of pcl-cvs can be fetched via anonymous ftp from
412 @code{ftp.lysator.liu.se}, (IP no. 130.236.254.1) in the directory
413 @code{pub/emacs}. If you don't live in Scandinavia you should probably
414 check with archie to see if there is a site closer to you that archives
417 New releases will be announced to appropriate newsgroups. If you send
418 your email address to me I will add you to my list of people to mail
419 when I make a new release.
422 @node Getting started, Buffer contents, About pcl-cvs, Top
423 @comment node-name, next, previous, up
425 @chapter Getting started
429 This document assumes that you know what CVS is, and that you at least
430 knows the fundamental concepts of CVS. If that is not the case you
431 should read the man page for CVS.
433 Pcl-cvs is only useful once you have checked out a module. So before
434 you invoke it you must have a copy of a module somewhere in the file
437 You invoke pcl-cvs by typing @kbd{M-x cvs-update RET}. If your emacs
438 responds with @samp{[No match]} your system administrator has not
439 installed pcl-cvs properly. Try @kbd{M-x load-library RET pcl-cvs RET}.
440 If that also fails - talk to your root. If it succeeds you might put
441 this line in your @file{.emacs} file so that you don't have to type the
442 @samp{load-library} command every time you wish to use pcl-cvs:
445 (autoload 'cvs-update "pcl-cvs" nil t)
448 The function @code{cvs-update} will ask for a directory. The command
449 @samp{cvs update} will be run in that directory. (It should contain
450 files that have been checked out from a CVS archive.) The output from
451 @code{cvs} will be parsed and presented in a table in a buffer called
452 @samp{*cvs*}. It might look something like this:
455 PCL-CVS release 1.05-CVS-$Name: $.
458 In directory /users/ceder/FOO/test:
461 Modified ci namechange
464 In directory /users/ceder/FOO/test/sub:
465 Modified ci ChangeLog
469 In this example the two files (@file{bar}, @file{file.txt}, and
470 @file{newer}) that are marked with @samp{Updated} have been copied from
471 the CVS repository to @file{/users/ceder/FOO/test/} since someone else
472 have checked in newer versions of them. Two files (@file{namechange}
473 and @file{sub/ChangeLog}) have been modified locally, and needs to be
476 You can move the cursor up and down in the buffer with @kbd{C-n} and
477 @kbd{C-p} or @kbd{n} and @kbd{p}. If you press @kbd{c} on one of the
478 @samp{Modified} files that file will be checked in to the CVS
479 repository. @xref{Committing changes}. You can press @kbd{x} to get rid
480 of the "uninteresting" files that have only been @samp{Updated} (and
481 don't require any further action from you).@refill
483 You can also easily get a @samp{diff} between your modified file and the
484 base version that you started from, and you can get the output from
485 @samp{cvs log} and @samp{cvs status} on the listed files simply by
486 pressing a key (@pxref{Getting info about files}).
489 @node Buffer contents, Commands, Getting started, Top
490 @comment node-name, next, previous, up
492 @chapter Buffer contents
493 @cindex Buffer contents
495 The display contains four columns. They contain, from left to right:
499 An asterisk when the file is @dfn{marked} (@pxref{Selected
502 The status of the file. See @xref{File status}, for more
505 A "need to be checked in"-marker (@samp{ci}).
511 * File status:: The meaning of the second field.
512 * Selected files:: How selection works.
516 @node File status, Selected files, Buffer contents, Buffer contents
517 @comment node-name, next, previous, up
521 @cindex Updated (file status)
522 @cindex Patched (file status)
523 @cindex Modified (file status)
524 @cindex Merged (file status)
525 @cindex Conflict (file status)
526 @cindex Added (file status)
527 @cindex Removed (file status)
528 @cindex Unknown (file status)
529 @cindex Removed from repository (file status)
530 @cindex Removed from repository, changed by you (file status)
531 @cindex Removed by you, changed in repository (file status)
532 @cindex Move away @var{file} - it is in the way (file status)
533 @cindex This repository is missing!@dots{} (file status)
535 The @samp{file status} field can have the following values:
540 The file was brought up to date with respect to the repository. This is
541 done for any file that exists in the repository but not in your source,
542 and for files that you haven't changed but are not the most recent
543 versions available in the repository.@refill
546 The file was brought up to date with respect to a remote repository by
547 way of fetching and applying a patch to the file in your source. This
548 is done for any file that exists in a remote repository and in your
549 source; of which you haven't changed locally but is not the most recent
550 version available in the remote repository.@refill
553 The file is modified in your working directory, and there was no
554 modification to the same file in the repository.@refill
557 The file is modified in your working directory, and there were
558 modifications in the repository as well as in your copy, but they were
559 merged successfully, without conflict, in your working directory.@refill
562 A conflict was detected while trying to merge your changes to @var{file}
563 with changes from the source repository. @var{file} (the copy in your
564 working directory) is now the output of the @samp{rcsmerge} command on
565 the two versions; an unmodified copy of your file is also in your
566 working directory, with the name @file{.#@var{file}.@var{version}},
567 where @var{version} is the RCS revision that your modified file started
568 from. @xref{Viewing differences}, for more details.@refill
571 The file has been added by you, but it still needs to be checked in to
572 the repository.@refill
575 The file has been removed by you, but it needs to be checked in to the
576 repository. You can resurrect it by typing @kbd{a} (@pxref{Adding and
577 removing files}).@refill
580 A file that was detected in your directory, but that neither appears in
581 the repository, nor is present on the list of files that CVS should
586 There are also a few special cases, that rarely occur, which have longer
587 strings in the fields:
590 @item Removed from repository
591 The file has been removed from your directory since someone has removed
592 it from the repository. (It is still present in the Attic directory, so
593 no permanent loss has occurred). This, unlike the other entries in this
594 table, is not an error condition.@refill
596 @item Removed from repository, changed by you
597 You have modified a file that someone have removed from the repository.
598 You can correct this situation by removing the file manually (see
599 @pxref{Adding and removing files}).@refill
601 @item Removed by you, changed in repository
602 You have removed a file, and before you committed the removal someone
603 committed a change to that file. You could use @kbd{a} to resurrect the
604 file (see @pxref{Adding and removing files}).@refill
606 @item Move away @var{file} - it is in the way
607 For some reason CVS does not like the file @var{file}. Rename or remove
610 @item This repository is missing! Remove this dir manually.
611 It is impossible to remove a directory in the CVS repository in a clean
612 way. Someone have tried to remove one, and CVS gets confused. Remove
613 your copy of the directory.@refill
617 @node Selected files, , File status, Buffer contents
618 @comment node-name, next, previous, up
620 @section Selected files
621 @cindex Selected files
623 @cindex File selection
626 Many of the commands works on the current set of @dfn{selected} files.
630 If there are any files that are marked they constitute the set of
631 selected files.@refill
633 Otherwise, if the cursor points to a file, that file is the selected
636 Otherwise, if the cursor points to a directory, all the files in that
637 directory that appears in the buffer are the selected files.
640 This scheme might seem a little complicated, but once one get used to
641 it, it is quite powerful.
643 @xref{Marking files} tells how you mark and unmark files.
646 @node Commands, Customization, Buffer contents, Top
647 @comment node-name, next, previous, up
652 This chapter describes all the commands that you can use in pcl-cvs.
655 The nodes in this menu contains explanations about all the commands that
656 you can use in pcl-cvs. They are grouped together by type.
660 * Updating the directory:: Commands to update the local directory
661 * Movement commands:: How to move up and down in the buffer
662 * Marking files:: How to mark files that other commands
663 will later operate on.
664 * Committing changes:: Checking in your modifications to the
666 * Editing files:: Loading files into Emacs.
667 * Getting info about files:: Display the log and status of files.
668 * Adding and removing files:: Adding and removing files
669 * Undoing changes:: Undoing changes
670 * Removing handled entries:: Uninteresting lines can easily be removed.
671 * Ignoring files:: Telling CVS to ignore generated files.
672 * Viewing differences:: Commands to @samp{diff} different versions.
673 * Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
674 * Invoking Emerge:: Running @samp{emerge} from @samp{*cvs*} buffer.
675 * Reverting your buffers:: Reverting your buffers
676 * Miscellaneous commands:: Miscellaneous commands
680 @node Updating the directory, Movement commands, Commands, Commands
681 @comment node-name, next, previous, up
683 @section Updating the directory
685 @findex cvs-mode-update-no-prompt
686 @findex cvs-delete-lock
687 @cindex Getting the *cvs* buffer
688 @kindex g - Rerun @samp{cvs update}
694 Run a @samp{cvs update} command. You will be asked for the directory in
695 which the @samp{cvs update} will be run. The output will be parsed by
696 pcl-cvs, and the result printed in the @samp{*cvs*} buffer (see
697 @pxref{Buffer contents} for a description of the contents).@refill
699 By default, @samp{cvs-update} will descend recursively into
700 subdirectories. You can avoid that behavior by giving a prefix
701 argument to it (e.g., by typing @kbd{C-u M-x cvs-update RET}).@refill
703 All other commands in pcl-cvs requires that you have a @samp{*cvs*}
704 buffer. This is the command that you use to get one.@refill
706 CVS uses lock files in the repository to ensure the integrity of the
707 data files in the repository. They might be left behind i.e. if a
708 workstation crashes in the middle of a CVS operation. CVS outputs a
709 message when it is waiting for a lock file to go away. Pcl-cvs will
710 show the same message in the *cvs* buffer, together with instructions
711 for deleting the lock files. You should normally not have to delete
712 them manually --- just wait a little while and the problem should fix
713 itself. But if the lock files doesn't disappear you can delete them
714 with @kbd{M-x cvs-delete-lock RET}.@refill
717 This will run @samp{cvs update} again. It will always use the same
718 buffer that was used with the previous @samp{cvs update}. Give a prefix
719 argument to avoid descending into subdirectories. This runs the command
720 @samp{cvs-mode-update-no-prompt}.@refill
723 This will run @samp{cvs update} and prompt for a new directory to
724 update. This runs the command @samp{cvs-update}.@refill
729 @node Movement commands, Marking files, Updating the directory, Commands
730 @comment node-name, next, previous, up
732 @section Movement Commands
733 @cindex Movement Commands
734 @findex cookie-next-cookie
735 @findex cookie-previous-cookie
736 @kindex SPC - Move down one file
737 @kindex C-n - Move down one file
738 @kindex n - Move down one file
739 @kindex C-p - Move up one file
740 @kindex p - Move up on file
742 You can use most normal Emacs commands to move forward and backward in
743 the buffer. Some keys are rebound to functions that take advantage of
744 the fact that the buffer is a pcl-cvs buffer:
751 These keys move the cursor one file forward, towards the end of the
752 buffer (@code{cookie-next-cookie}).
756 These keys move one file backward, towards the beginning of the buffer
757 (@code{cookie-previous-cookie}).
761 @node Marking files, Committing changes, Movement commands, Commands
762 @comment node-name, next, previous, up
764 @section Marking files
765 @cindex Selecting files (commands to mark files)
766 @cindex Marking files
767 @kindex m - marking a file
768 @kindex M - marking all files
769 @kindex u - unmark a file
770 @kindex ESC DEL - unmark all files
771 @kindex DEL - unmark previous file
772 @findex cvs-mode-mark
773 @findex cvs-mode-unmark
774 @findex cvs-mode-mark-all-files
775 @findex cvs-mode-unmark-all-files
776 @findex cvs-mode-unmark-up
778 Pcl-cvs works on a set of @dfn{selected files} (@pxref{Selected files}).
779 You can mark and unmark files with these commands:
783 This marks the file that the cursor is positioned on. If the cursor is
784 positioned on a directory all files in that directory will be marked.
785 (@code{cvs-mode-mark}).
788 Unmark the file that the cursor is positioned on. If the cursor is on a
789 directory, all files in that directory will be unmarked.
790 (@code{cvs-mode-unmark}).@refill
793 Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
795 @item @key{ESC} @key{DEL}
796 Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}).
799 Unmark the file on the previous line, and move point to that line
800 (@code{cvs-mode-unmark-up}).
804 @node Committing changes, Editing files, Marking files, Commands
805 @comment node-name, next, previous, up
807 @section Committing changes
808 @cindex Committing changes
810 @findex cvs-mode-commit
811 @findex cvs-mode-changelog-commit
812 @kindex c - commit files
813 @kindex C - commit files with ChangeLog message
814 @vindex cvs-erase-input-buffer (variable)
815 @vindex cvs-auto-revert-after-commit (variable)
816 @cindex Commit buffer
818 @cindex Erasing commit message
819 @cindex Reverting buffers after commit
824 All files that have a "need to be checked in"-marker (@pxref{Buffer
825 contents}) can be checked in with the @kbd{c} command. It checks in all
826 selected files (@pxref{Selected files}) (except those who lack the
827 "ci"-marker - they are ignored). Pressing @kbd{c} causes
828 @code{cvs-mode-commit} to be run.@refill
830 When you press @kbd{c} you will get a buffer called
831 @samp{*cvs-commit-message*}. Enter the log message for the file(s) in
832 it. When you are ready you should press @kbd{C-c C-c} to actually
833 commit the files (using @code{cvs-edit-done}).
835 Normally the @samp{*cvs-commit-message*} buffer will retain the log
836 message from the previous commit, but if the variable
837 @code{cvs-erase-input-buffer} is set to a non-@code{nil} value the
838 buffer will be erased. Point and mark will always be located around the
839 entire buffer so that you can easily erase it with @kbd{C-w}
840 (@samp{kill-region}).@refill
842 If you are editing the files in your emacs an automatic
843 @samp{revert-buffer} will be performed. (If the file contains
844 @samp{$@asis{Id}$} keywords @samp{cvs commit} will write a new file with
845 the new values substituted. The auto-revert makes sure that you get
846 them into your buffer). The revert will not occur if you have modified
847 your buffer, or if @samp{cvs-auto-revert-after-commit} is set to
851 This is just like @samp{cvs-mode-commit}, except that it tries to
852 provide appropriate default log messages by looking at the
853 @samp{ChangeLog}s in the current directory. The idea is to write your
854 ChangeLog entries first, and then use this command to commit your
855 changes. Pressing @kbd{C} causes @code{cvs-mode-changelog-commit} to be
858 To select default log text, pcl-cvs:
861 finds the ChangeLogs for the files to be checked in;
863 verifies that the top entry in the ChangeLog is on the current date and
864 by the current user; if not, no default text is provided;
866 search the ChangeLog entry for paragraphs containing the names of the
867 files we're checking in; and finally
869 uses those paragraphs as the default log text in the
870 @samp{*cvs-commit-message*} buffer.
873 You can then commit the @samp{ChangeLog} file once per day without any
879 @node Editing files, Getting info about files, Committing changes, Commands
880 @comment node-name, next, previous, up
882 @section Editing files
883 @cindex Editing files
884 @cindex Finding files
885 @cindex Loading files
887 @cindex Invoking dired
888 @findex cvs-mode-find-file
889 @findex cvs-mode-find-file-other-window
890 @findex cvs-mode-add-change-log-entry-other-window
891 @kindex f - find file or directory
892 @kindex o - find file in other window
893 @kindex A - add ChangeLog entry
895 There are currently three commands that can be used to find a file (that
896 is, load it into a buffer and start editing it there). These commands
897 work on the line that the cursor is situated at. They ignore any marked
902 Find the file that the cursor points to. Run @samp{dired}
904 (@pxref{Dired,,,Emacs})
906 if the cursor points to a directory (@code{cvs-mode-find-file}).@refill
909 Like @kbd{f}, but use another window
910 (@code{cvs-mode-find-file-other-window}).@refill
913 Invoke @samp{add-change-log-entry-other-window} to edit a
914 @samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
915 directory of the file the cursor points to.
916 (@code{cvs-mode-add-change-log-entry-other-window}).@refill
920 @node Getting info about files, Adding and removing files, Editing files, Commands
921 @comment node-name, next, previous, up
923 @section Getting info about files
924 @cindex Status (cvs command)
925 @cindex Log (RCS/cvs command)
926 @cindex Getting status
927 @kindex l - run @samp{cvs log}
928 @kindex s - run @samp{cvs status}
930 @findex cvs-mode-status
932 Both of the following commands can be customized.
933 @xref{Customization}.@refill
937 Run @samp{cvs log} on all selected files, and show the result in a
938 temporary buffer (@code{cvs-mode-log}).
941 Run @samp{cvs status} on all selected files, and show the result in a
942 temporary buffer (@code{cvs-mode-status}).
946 @node Adding and removing files, Undoing changes, Getting info about files, Commands
947 @comment node-name, next, previous, up
949 @section Adding and removing files
951 @cindex Removing files
952 @cindex Resurrecting files
953 @cindex Deleting files
954 @cindex Putting files under CVS control
955 @kindex a - add a file
956 @kindex r - remove a file
958 @findex cvs-mode-remove-file
960 The following commands are available to make it easy to add and remove
961 files from the CVS repository.
965 Add all selected files. This command can be used on @samp{Unknown}
966 files (see @pxref{File status}). The status of the file will change to
967 @samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit}, see
968 @pxref{Committing changes}) to really add the file to the
971 This command can also be used on @samp{Removed} files (before you commit
972 them) to resurrect them.
974 Selected files that are neither @samp{Unknown} nor @samp{Removed} will
975 be ignored by this command.
977 The command that is run is @code{cvs-mode-add}.
980 This command removes the selected files (after prompting for
981 confirmation). The files are @samp{rm}ed from your directory and
982 (unless the status was @samp{Unknown}; @pxref{File status}) they will
983 also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
984 disappear from the buffer. Otherwise their status will change to
985 @samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit},
986 @pxref{Committing changes}) to commit the removal.@refill
988 The command that is run is @code{cvs-mode-remove-file}.
992 @node Undoing changes, Removing handled entries, Adding and removing files, Commands
993 @comment node-name, next, previous, up
995 @section Undoing changes
997 @cindex Flush changes
998 @kindex U - undo changes
999 @findex cvs-mode-undo-local-changes
1003 If you have modified a file, and for some reason decide that you don't
1004 want to keep the changes, you can undo them with this command. It works
1005 by removing your working copy of the file and then getting the latest
1006 version from the repository (@code{cvs-mode-undo-local-changes}.
1010 @node Removing handled entries, Ignoring files, Undoing changes, Commands
1011 @comment node-name, next, previous, up
1013 @section Removing handled entries
1014 @cindex Expunging uninteresting entries
1015 @cindex Uninteresting entries, getting rid of them
1016 @cindex Getting rid of uninteresting lines
1017 @cindex Removing uninteresting (processed) lines
1018 @cindex Handled lines, removing them
1019 @kindex x - remove processed entries
1020 @kindex C-k - remove selected entries
1021 @findex cvs-mode-remove-handled
1022 @findex cvs-mode-acknowledge
1026 This command allows you to remove all entries that you have processed.
1027 More specifically, the lines for @samp{Updated} files (@pxref{File
1028 status} and files that have been checked in (@pxref{Committing changes})
1029 are removed from the buffer. If a directory becomes empty the heading
1030 for that directory is also removed. This makes it easier to get an
1031 overview of what needs to be done.
1033 The command is called @code{cvs-mode-remove-handled}. If
1034 @samp{cvs-auto-remove-handled} is set to non-@code{nil} this will
1035 automatically be performed after every commit.@refill
1038 This command can be used for lines that @samp{cvs-mode-remove-handled} would
1039 not delete, but that you want to delete (@code{cvs-mode-acknowledge}).
1043 @node Ignoring files, Viewing differences, Removing handled entries, Commands
1044 @comment node-name, next, previous, up
1046 @section Ignoring files
1047 @kindex i - ignoring files
1048 @findex cvs-mode-ignore
1052 Arrange so that CVS will ignore the selected files. The file names are
1053 added to the @file{.cvsignore} file in the corresponding directory. If
1054 the @file{.cvsignore} doesn't exist it will be created.
1056 The @file{.cvsignore} file should normally be added to the repository,
1057 but you could ignore it also if you like it better that way.
1059 This runs @code{cvs-mode-ignore}.
1063 @node Viewing differences, Invoking Ediff, Ignoring files, Commands
1064 @comment node-name, next, previous, up
1066 @section Viewing differences
1069 @cindex Invoking ediff
1070 @cindex Conflicts, how to resolve them
1071 @cindex Viewing differences
1072 @kindex d - run @samp{cvs diff}
1073 @kindex b - diff backup file
1074 @findex cvs-mode-diff-cvs
1075 @findex cvs-mode-diff-backup
1076 @vindex cvs-diff-ignore-marks (variable)
1080 Display a @samp{cvs diff} between the selected files and the RCS version
1081 that they are based on. @xref{Customization} describes how you can send
1082 flags to @samp{cvs diff}. If @var{cvs-diff-ignore-marks} is set to a
1083 non-@code{nil} value or if a prefix argument is given (but not both) any
1084 marked files will not be considered to be selected.
1085 (@code{cvs-mode-diff-cvs}).@refill
1088 If CVS finds a conflict while merging two versions of a file (during a
1089 @samp{cvs update}, @pxref{Updating the directory}) it will save the
1090 original file in a file called @file{.#@var{FILE}.@var{VERSION}} where
1091 @var{FILE} is the name of the file, and @var{VERSION} is the RCS version
1092 number that your file was based on.@refill
1094 With the @kbd{b} command you can run a @samp{diff} on the files
1095 @file{.#@var{FILE}.@var{VERSION}} and @file{@var{FILE}}. You can get a
1096 context- or Unidiff by setting @samp{cvs-diff-flags} -
1097 @pxref{Customization}. This command only works on files that have
1098 status @samp{Conflict} or @samp{Merged}.@refill
1100 If @var{cvs-diff-ignore-marks} is set to a non-@code{nil} value or if a
1101 prefix argument is given (but not both) any marked files will not be
1102 considered to be selected. (@code{cvs-mode-diff-backup}).@refill
1106 @node Invoking Ediff, Invoking Emerge, Viewing differences, Commands
1107 @comment node-name, next, previous, up
1109 @section Running ediff
1111 @cindex Invoking ediff
1112 @cindex Viewing differences
1113 @cindex Conflicts, resolving
1114 @cindex Resolving conflicts
1115 @kindex e - invoke @samp{ediff}
1116 @findex cvs-mode-ediff
1117 @findex run-ediff-from-cvs-buffer
1118 @findex cvs-old-ediff-interface
1123 slightly different depending on the version of @samp{ediff} and the file
1126 With modern versions of @samp{ediff}, this command invokes
1127 @samp{run-ediff-from-cvs-buffer} on one file.@refill
1129 @strong{Note:} When the file status is @samp{Merged} or @samp{Conflict},
1130 CVS has already performed a merge. The resulting file is not used in
1131 any way if you use this command. If you use the @kbd{q} command inside
1132 @samp{ediff} (to successfully terminate a merge) the file that CVS
1133 created will be overwritten.@refill
1135 Older versions of @samp{ediff} use an interface similar to
1136 @samp{emerge}. The function @samp{cvs-old-ediff-interface} is invoked
1137 if the version of @samp{ediff} you have doesn't support
1138 @samp{run-ediff-from-cvs-buffer}. These older versions do not support
1139 merging of revisions.@refill
1142 @item @samp{Modified}
1143 Run @samp{ediff-files} with your working file as file A, and the latest
1144 revision in the repository as file B.
1147 @itemx @samp{Conflict}
1148 Run @samp{ediff-files3} with your working file (as it was prior to your
1149 invocation of @samp{cvs-update}) as file A, the latest revision in the
1150 repository as file B, and the revision that you based your local
1151 modifications on as ancestor.
1153 @item @samp{Updated}
1154 @itemx @samp{Patched}
1155 Run @samp{ediff-files} with your working file as file A, and a given
1156 revision in the repository as file B. You are prompted for the revision
1157 to ediff against, and you may specify either a tag name or a numerical
1158 revision number (@pxref{Getting info about files}).
1163 @node Invoking Emerge, Reverting your buffers, Invoking Ediff, Commands
1164 @comment node-name, next, previous, up
1166 @section Running emerge
1169 @cindex Viewing differences
1170 @cindex Invoking emerge
1171 @cindex Conflicts, resolving
1172 @cindex Resolving conflicts
1173 @kindex E - invoke @samp{emerge}
1174 @findex cvs-mode-emerge
1178 Invoke @samp{emerge} on one file. This command works slightly different
1179 depending on the file status.
1182 @item @samp{Modified}
1183 Run @samp{emerge-files} with your working file as file A, and the latest
1184 revision in the repository as file B.
1187 @itemx @samp{Conflict}
1188 Run @samp{emerge-files-with-ancestor} with your working file (as it was
1189 prior to your invocation of @samp{cvs-update}) as file A, the latest
1190 revision in the repository as file B, and the revision that you based
1191 your local modifications on as ancestor.
1194 @strong{Note:} When the file status is @samp{Merged} or @samp{Conflict},
1195 CVS has already performed a merge. The resulting file is not used in
1196 any way if you use this command. If you use the @kbd{q} command inside
1197 @samp{emerge} (to successfully terminate the merge) the file that CVS
1198 created will be overwritten.
1203 @node Reverting your buffers, Miscellaneous commands, Invoking Emerge, Commands
1204 @comment node-name, next, previous, up
1206 @section Reverting your buffers
1207 @findex cvs-mode-revert-updated-buffers
1208 @kindex R - revert buffers
1209 @cindex Syncing buffers
1210 @cindex Reverting buffers
1214 If you are editing (or just viewing) a file in a buffer, and that file
1215 is changed by CVS during a @samp{cvs-update}, all you have to do is type
1216 @kbd{R} in the *cvs* buffer to read in the new versions of the
1219 All files that are @samp{Updated}, @samp{Merged} or in @samp{Conflict}
1220 are reverted from the disk. Any other files are ignored. Only files
1221 that you were already editing are read.@refill
1223 An error is signalled if you have modified the buffer since it was last
1224 changed. (@code{cvs-mode-revert-updated-buffers}).@refill
1228 @node Miscellaneous commands, , Reverting your buffers, Commands
1229 @comment node-name, next, previous, up
1231 @section Miscellaneous commands
1232 @findex cvs-byte-compile-files
1233 @cindex Recompiling elisp files
1234 @cindex Byte compilation
1235 @cindex Getting rid of lock files
1237 @kindex q - bury the *cvs* buffer
1241 @item M-x cvs-byte-compile-files
1242 Byte compile all selected files that end in .el.
1244 @item M-x cvs-delete-lock
1245 This command can be used in any buffer, and deletes the lock files that
1246 the *cvs* buffer informs you about. You should normally never have to
1247 use this command since CVS tries very carefully to always remove the
1250 You can only use this command when a message in the *cvs* buffer tells
1251 you so. You should wait a while before using this command in case
1252 someone else is running a cvs command.
1255 Bury the *cvs* buffer. (@code{bury-buffer}).
1260 @node Customization, Future enhancements, Commands, Top
1261 @comment node-name, next, previous, up
1263 @chapter Customization
1264 @vindex cvs-erase-input-buffer (variable)
1265 @vindex cvs-inhibit-copyright-message (variable)
1266 @vindex cvs-diff-flags (variable)
1267 @vindex cvs-diff-ignore-marks (variable)
1268 @vindex cvs-log-flags (variable)
1269 @vindex cvs-status-flags (variable)
1270 @vindex cvs-auto-remove-handled (variable)
1271 @vindex cvs-update-prog-output-skip-regexp (variable)
1272 @vindex cvs-cvsroot (variable)
1273 @vindex TMPDIR (environment variable)
1274 @vindex cvs-auto-revert-after-commit (variable)
1275 @vindex cvs-commit-buffer-require-final-newline (variable)
1276 @vindex cvs-sort-ignore-file (variable)
1277 @cindex Inhibiting the Copyright message.
1278 @cindex Copyright message, getting rid of it
1279 @cindex Getting rid of the Copyright message.
1280 @cindex Customization
1281 @cindex Variables, list of all
1282 @cindex Erasing the input buffer
1283 @cindex Context diff, how to get
1284 @cindex Unidiff, how to get
1285 @cindex Automatically remove handled files
1286 @cindex -u option in modules file
1287 @cindex Modules file (-u option)
1288 @cindex Update program (-u option in modules file)
1289 @cindex Reverting buffers after commit
1290 @cindex Require final newline
1291 @cindex Automatically inserting newline
1292 @cindex Commit message, inserting newline
1293 @cindex Sorting the .cvsignore file
1294 @cindex .cvsignore file, sorting
1295 @cindex Automatically sorting .cvsignore
1297 If you have an idea about any customization that would be handy but
1298 isn't present in this list, please tell me! @xref{Bugs} for info on how
1302 @item cvs-erase-input-buffer
1303 If set to anything else than @code{nil} the edit buffer will be erased
1304 before you write the log message (@pxref{Committing changes}).
1306 @item cvs-inhibit-copyright-message
1307 The copyright message that is displayed on startup can be annoying after
1308 a while. Set this variable to @samp{t} if you want to get rid of it.
1309 (But don't set this to @samp{t} in the system defaults file - new users
1310 should see this message at least once).
1312 @item cvs-diff-flags
1313 A list of strings to pass as arguments to the @samp{cvs diff} and
1314 @samp{diff} programs. This is used by @samp{cvs-mode-diff-cvs} and
1315 @samp{cvs-mode-diff-backup} (key @kbd{b}, @pxref{Viewing differences}). If
1316 you prefer the Unidiff format you could add this line to your
1317 @file{.emacs} file:@refill
1320 (setq cvs-diff-flags '("-u"))
1323 @item cvs-diff-ignore-marks
1324 If this variable is non-@code{nil} or if a prefix argument is given (but
1325 not both) to @samp{cvs-mode-diff-cvs} or @samp{cvs-mode-diff-backup}
1326 marked files are not considered selected.
1329 List of strings to send to @samp{cvs log}. Used by @samp{cvs-mode-log}
1330 (key @kbd{l}, @pxref{Getting info about files}).
1332 @item cvs-status-flags
1333 List of strings to send to @samp{cvs status}. Used by @samp{cvs-mode-status}
1334 (key @kbd{s}, @pxref{Getting info about files}).
1336 @item cvs-auto-remove-handled
1337 If this variable is set to any non-@code{nil} value
1338 @samp{cvs-mode-remove-handled} will be called every time you check in
1339 files, after the check-in is ready. @xref{Removing handled
1342 @item cvs-auto-revert-after-commit
1343 If this variable is set to any non-@samp{nil} value any buffers you have
1344 that visit a file that is committed will be automatically reverted.
1345 This variable is default @samp{t}. @xref{Committing changes}.@refill
1347 @item cvs-update-prog-output-skip-regexp
1348 The @samp{-u} flag in the @file{modules} file can be used to run a command
1349 whenever a @samp{cvs update} is performed (see cvs(5)). This regexp
1350 is used to search for the last line in that output. It is normally set
1351 to @samp{"$"}. That setting is only correct if the command outputs
1352 nothing. Note that pcl-cvs will get very confused if the command
1353 outputs @emph{anything} to @samp{stderr}.
1356 This variable can be set to override @samp{CVSROOT}. It should be a
1357 string. If it is set then everytime a cvs command is run it will be
1358 called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if
1359 your site has several repositories.
1362 Pcl-cvs uses this @emph{environment variable} to decide where to put the
1363 temporary files it needs. It defaults to @file{/tmp} if it is not set.
1365 @item cvs-commit-buffer-require-final-newline
1366 When you enter a log message in the @samp{*cvs-commit-message*} buffer
1367 pcl-cvs will normally automatically insert a trailing newline, unless
1368 there already is one. This behavior can be controlled via
1369 @samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the
1370 default behavior), a newline will always be appended. If it is
1371 @samp{nil}, newlines will never be appended. Any other value causes
1372 pcl-cvs to ask the user whenever there is no trailing newline in the
1373 commit message buffer.
1375 @item cvs-sort-ignore-file
1376 If this variable is set to any non-@samp{nil} value the
1377 @file{.cvsignore} will always be sorted whenever you use
1378 @samp{cvs-mode-ignore} to add a file to it. This option is on by
1384 @node Future enhancements, Bugs, Customization, Top
1385 @comment node-name, next, previous, up
1387 @chapter Future enhancements
1388 @cindex Enhancements
1390 Pcl-cvs is still under development and needs a number of enhancements to
1391 be called complete. Below is my current wish-list for future releases
1392 of pcl-cvs. Please, let me know which of these features you want most.
1393 They are listed below in approximately the order that I currently think
1394 I will implement them in.
1398 Rewritten parser code. There are many situations where pcl-cvs will
1399 fail to recognize the output from CVS. The situation could be greatly
1403 @samp{cvs-status}. This will run @samp{cvs status} in a directory and
1404 produce a buffer that looks pretty much like the current *cvs* buffer.
1405 That buffer will include information for all version-controlled files.
1406 (There will be a simple keystroke to remove all "uninteresting" files,
1407 that is, files that are "Up-to-date"). In this new buffer you will be
1408 able to update a file, commit a file, et c. The big win with this is
1409 that you will be able to watch the differences between your current
1410 working file and the head revision in the repository before you update
1411 the file, and you can then choose to update it or let it wait for a
1415 Log mode. When this mode is finished you will be able to move around
1416 (using @kbd{n} and @kbd{p}) between the revisions of a file, mark two of
1417 them, and run a diff between them. You will be able to hide branches
1418 (similar to the way you can hide sub-paragraphs in outline-mode) and do
1419 merges between revisions. Other ideas about this are welcome.
1422 The current model for marks in the *cvs* buffer seems to be confusing.
1423 I am considering to use the VM model instead, where marks are normally
1424 inactive. To activate the mark, you issue a command like
1425 @samp{cvs-mode-next-command-uses-marks}. I might implement a flag so
1426 that you can use either version. Feedback on this before I start coding
1430 It should be possible to run commands such as @samp{cvs log}, @samp{cvs
1431 status} and @samp{cvs commit} directly from a buffer containing a file,
1432 instead of having to @samp{cvs-update}. If the directory contains many
1433 files the @samp{cvs-update} can take quite some time, especially on a
1434 slow machine. I planed to put these kind of commands on the prefix
1435 @kbd{C-c C-v}, but that turned out to be used by for instance c++-mode.
1436 If you have any suggestions for a better prefix key, please let me know.
1439 Increased robustness. For instance, you can not currently press
1440 @kbd{C-g} when you are entering the description of a file that you are
1441 adding without confusing pcl-cvs.
1444 Support for multiple active *cvs* buffers.
1447 Dired support. I have an experimental @file{dired-cvs.el} that works
1448 together with CVS 1.2. Unfortunately I wrote it on top of a
1449 non-standard @file{dired.el}, so it must be rewritten.@refill
1452 An ability to send user-supplied options to all the cvs commands.
1455 Pcl-cvs is not at all clever about what it should do when @samp{cvs
1456 update} runs a program (due to the @samp{-u} option in the
1457 @file{modules} file --- see @samp{cvs(5)}). The current release uses a
1458 regexp to search for the end. At the very least that regexp should be
1459 configured for different modules. Tell me if you have any idea about
1460 what is the right thing to do. In a perfect world the program should
1461 also be allowed to print to @samp{stderr} without causing pcl-cvs to
1466 If you miss something in this wish-list, let me know! I don't promise
1467 that I will write it, but I will at least try to coordinate the efforts
1468 of making a good Emacs front end to CVS. See @xref{Bugs} for
1469 information about how to reach me.@refill
1471 So far, I have written most of pcl-cvs in my all-to-rare spare time. If
1472 you want pcl-cvs to be developed faster you can write a contract with
1473 Signum Support to do the extension. You can reach Signum Support by
1474 email to @samp{info@@signum.se} or via mail to Signum Support AB, Box
1475 2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 - 21 46 00. Fax:
1476 +46 (0) 13 - 21 47 00.
1479 @node Bugs, COPYING, Future enhancements, Top
1480 @comment node-name, next, previous, up
1482 @chapter Bugs (known and unknown)
1483 @cindex Reporting bugs and ideas
1484 @cindex Bugs, how to report them
1485 @cindex Author, how to reach
1486 @cindex Email to the author
1490 @cindex Problems, list of common
1492 If you find a bug or misfeature, don't hesitate to tell me! Send email
1493 to @samp{ceder@@lysator.liu.se}.
1495 If you have ideas for improvements, or if you have written some
1496 extensions to this package, I would like to hear from you. I hope that
1497 you find this package useful!
1499 Below is a partial list of currently known problems with pcl-cvs version
1503 @item Commit causes Emacs to hang
1504 Emacs waits for the @samp{cvs commit} command to finish before you can
1505 do anything. If you start a background job from the loginfo file you
1506 must take care that it closes @samp{stdout} and @samp{stderr} if you do
1507 not want to wait for it. (You do that with @samp{background-command &>-
1508 2&>- &} if you are starting @samp{background-command} from a
1509 @samp{/bin/sh} shell script).
1511 Your emacs will also hang if there was a lock file in the repository.
1512 In this case you can type @kbd{C-g} to get control over your emacs
1515 @item Name clash in Emacs 19
1516 This is really a bug in Elib or the Emacs 19 distribution. Both Elib and
1517 Emacs 19.6 through at least 19.10 contains a file named
1518 @file{cookie.el}. One of the files will have to be renamed, and we are
1519 currently negotiating about which of the files to rename.
1521 @item Commands while cvs-update is running
1522 It is possible to type commands in the *cvs* buffer while the update is
1523 running, but error messages is all that you will get. The error
1524 messages should be better.
1526 @item Unexpected output from CVS
1527 Unexpected output from CVS confuses pcl-cvs. It will currently create a
1528 bug report that you can mail to me. It should do something more
1533 @node COPYING, Function and Variable Index, Bugs, Top
1534 @comment node-name, next, previous, up
1536 @appendix GNU GENERAL PUBLIC LICENSE
1537 @c @include gpl.texinfo
1540 @node Function and Variable Index, Concept Index, COPYING, Top
1541 @comment node-name, next, previous, up
1543 @unnumbered Function and Variable Index
1548 @node Concept Index, Key Index, Function and Variable Index, Top
1549 @comment node-name, next, previous, up
1551 @unnumbered Concept Index
1556 @node Key Index, , Concept Index, Top
1557 @comment node-name, next, previous, up
1559 @unnumbered Key Index