summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo')
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo507
1 files changed, 407 insertions, 100 deletions
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
index 5ad8db1..0b51f77 100644
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
+++ b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
-@comment pcl-cvs.texinfo,v 1.2 1992/04/07 20:49:23 berliner Exp
+@comment Id: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder Exp
@comment Documentation for the GNU Emacs CVS mode.
@comment Copyright (C) 1992 Per Cederqvist
@@ -62,12 +62,12 @@ Free Software Foundation instead of in the original English.
@sp
@center @titlefont{pcl-cvs - the Emacs Front-End to CVS}
@sp 2
-@center release 1.02
+@center release 1.05
@comment -release-
@sp 3
@center Per Cederqvist
@sp 3
-@center last updated 29 Mar 1992
+@center last updated 31 May 1993
@comment -date-
@comment The following two commands start the copyright page
@@ -104,7 +104,7 @@ Free Software Foundation instead of in the original English.
@ifinfo
This info manual describes pcl-cvs which is a GNU Emacs front-end to
CVS. It works with CVS version 1.3. This manual is updated to release
-1.02 of pcl-cvs.
+1.05 of pcl-cvs.
@end ifinfo
@comment -release-
@@ -119,9 +119,8 @@ CVS. It works with CVS version 1.3. This manual is updated to release
* Customization:: How you can tailor pcl-cvs to suit your needs.
* Future enhancements:: Future enhancements of pcl-cvs.
-* Reporting bugs and ideas:: Where to report bugs.
-
-* Function and Variable Index:: List of functions and variables.
+* Bugs:: Bugs (known and unknown).
+* Function and Variable Index:: List of functions and variables.
* Concept Index:: List of concepts.
* Key Index:: List of keystrokes.
@@ -129,7 +128,7 @@ CVS. It works with CVS version 1.3. This manual is updated to release
Installation
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
+* Pcl-cvs installation:: How to install pcl-cvs on your system.
* On-line manual installation:: How to install the on-line manual.
* Typeset manual installation:: How to create typeset documentation
about pcl-cvs.
@@ -155,9 +154,13 @@ Commands
* Editing files:: Loading files into Emacs.
* Getting info about files:: Display the log and status of files.
* Adding and removing files:: Adding and removing files
+* Undoing changes:: Undoing changes
* Removing handled entries:: Uninteresting lines can easily be removed.
* Ignoring files:: Telling CVS to ignore generated files.
* Viewing differences:: Commands to @samp{diff} different versions.
+* Emerge::
+* Reverting your buffers:: Reverting your buffers
+* Miscellaneous commands:: Miscellaneous commands
@end menu
@node Copying, Installation, Top, Top
@@ -565,7 +568,7 @@ steps are also described in the file @file{INSTALL} in the source
directory.
@menu
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
+* Pcl-cvs installation:: How to install pcl-cvs on your system.
* On-line manual installation:: How to install the on-line manual.
* Typeset manual installation:: How to create typeset documentation
about pcl-cvs.
@@ -601,6 +604,13 @@ in emacs that causes it to dump core. The bug was fixed in emacs
18.58.@refill
@item
+Release 1.05 and later of pcl-cvs requires parts of the Elib library,
+version 0.07 or later. Elib is available via anonymous ftp from
+prep.ai.mit.edu in @file{pub/gnu/elib-0.07.tar.z}, and from a lot of
+other sites that mirrors prep. Get Elib, and install it, before
+proceeding.
+
+@item
Type @samp{make install} in the source directory. This will
byte-compile all @file{.el} files and copy both the @file{.el} and the
@file{.elc} into the directory you specified in step 1.
@@ -701,7 +711,7 @@ frequently used CVS commands into emacs.
Contributions to the package are welcome. I have limited time to work
on this project, but I will gladly add any code that you contribute to
-me to this package (@pxref{Reporting bugs and ideas}).
+me to this package (@pxref{Bugs}).
The following persons have made contributions to pcl-cvs.
@@ -724,8 +734,17 @@ the files @file{elib-node.el} and @file{compile-all.el}. The file
Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
on both the functionality and the documentation.@refill
+@item
+Jamie Zawinski (@samp{jwz@@lucid.com}) contributed
+@file{pcl-cvs-lucid.el}.
+
+@item
+Leif Lonnblad contributed RCVS support.
@end itemize
+Apart from these, a lot of people have send me suggestions, ideas,
+requests, bug reports and encouragement. Thanks a lot! Without your
+there would be no new releases of pcl-cvs.
@node Archives, , Contributors, About pcl-cvs
@comment node-name, next, previous, up
@@ -736,11 +755,6 @@ on both the functionality and the documentation.@refill
@cindex Getting pcl-cvs
@cindex Email archives
-This release of pcl-cvs is included in the CVS 1.3 distribution.
-However, since pcl-cvs has had less time to mature (the first line of
-code was written less than a year ago) it is likely that there will be a
-new release of pcl-cvs before the next release of CVS.
-
The latest release of pcl-cvs can be fetched via anonymous ftp from
@code{ftp.lysator.liu.se}, (IP no. 130.236.254.1) in the directory
@code{pub/emacs}. If you don't live in Scandinavia you should probably
@@ -765,7 +779,7 @@ Pcl-cvs is only useful once you have checked out a module. So before
you invoke it you must have a copy of a module somewhere in the file
system.
-You invoke pcl-cvs by typing @kbd{M-x pcl-cvs RET}. If your emacs
+You invoke pcl-cvs by typing @kbd{M-x cvs-update RET}. If your emacs
responds with @samp{[No match]} your system administrator has not
installed pcl-cvs properly. Try @kbd{M-x load-library RET pcl-cvs RET}.
If that also fails - talk to your root. If it succeeds you might put
@@ -783,7 +797,7 @@ files that have been checked out from a CVS archive.) The output from
@samp{*cvs*}. It might look something like this:
@example
-PCL-CVS release 1.02.
+PCL-CVS release 1.05.
@comment -release-
In directory /users/ceder/FOO/test:
@@ -979,16 +993,22 @@ you can use in pcl-cvs. They are grouped together by type.
* Editing files:: Loading files into Emacs.
* Getting info about files:: Display the log and status of files.
* Adding and removing files:: Adding and removing files
+* Undoing changes:: Undoing changes
* Removing handled entries:: Uninteresting lines can easily be removed.
* Ignoring files:: Telling CVS to ignore generated files.
* Viewing differences:: Commands to @samp{diff} different versions.
+* Emerge::
+* Reverting your buffers:: Reverting your buffers
+* Miscellaneous commands:: Miscellaneous commands
@end menu
@node Updating the directory, Movement commands, Commands, Commands
@comment node-name, next, previous, up
@section Updating the directory
@findex cvs-update
-@findex cvs-update-no-prompt
+@findex cvs-mode-update-no-prompt
+@findex cvs-delete-lock
+@cindex Getting the *cvs* buffer
@kindex g - Rerun @samp{cvs update}
@@ -1007,11 +1027,21 @@ argument to it (e.g., by typing @kbd{C-u M-x cvs-update RET}).@refill
All other commands in pcl-cvs requires that you have a @samp{*cvs*}
buffer. This is the command that you use to get one.@refill
+CVS uses lock files in the repository to ensure the integrity of the
+data files in the repository. They might be left behind i.e. if a
+workstation crashes in the middle of a CVS operation. CVS outputs a
+message when it is waiting for a lock file to go away. Pcl-cvs will
+show the same message in the *cvs* buffer, together with instructions
+for deleting the lock files. You should normally not have to delete
+them manually --- just wait a little while and the problem should fix
+itself. But if the lock files doesn't disappear you can delete them
+with @kbd{M-x cvs-delete-lock RET}.@refill
+
@item g
This will run @samp{cvs update} again. It will always use the same
buffer that was used with the previous @samp{cvs update}. Give a prefix
argument to avoid descending into subdirectories. This runs the command
-@samp{cvs-update-no-prompt}.@refill
+@samp{cvs-mode-update-no-prompt}.@refill
@end table
@node Movement commands, Marking files, Updating the directory, Commands
@comment node-name, next, previous, up
@@ -1051,13 +1081,13 @@ These keys move one file backward, towards the beginning of the buffer
@kindex m - marking a file
@kindex M - marking all files
@kindex u - unmark a file
-@kindex U - unmark all files
+@kindex ESC DEL - unmark all files
@kindex DEL - unmark previous file
-@findex cvs-mark
-@findex cvs-unmark
-@findex cvs-mark-all-files
-@findex cvs-unmark-all-files
-@findex cvs-unmark-up
+@findex cvs-mode-mark
+@findex cvs-mode-unmark
+@findex cvs-mode-mark-all-files
+@findex cvs-mode-unmark-all-files
+@findex cvs-mode-unmark-up
Pcl-cvs works on a set of @dfn{selected files} (@pxref{Selected files}).
You can mark and unmark files with these commands:
@@ -1066,22 +1096,22 @@ You can mark and unmark files with these commands:
@item m
This marks the file that the cursor is positioned on. If the cursor is
positioned on a directory all files in that directory will be marked.
-(@code{cvs-mark}).
+(@code{cvs-mode-mark}).
@item u
Unmark the file that the cursor is positioned on. If the cursor is on a
directory, all files in that directory will be unmarked.
-(@code{cvs-unmark}).@refill
+(@code{cvs-mode-unmark}).@refill
@item M
-Mark @emph{all} files in the buffer (@code{cvs-mark-all-files}).
+Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
-@item U
-Unmark @emph{all} files (@code{cvs-unmark-all-files}).
+@item @key{ESC} @key{DEL}
+Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}).
@item @key{DEL}
Unmark the file on the previous line, and move point to that line
-(@code{cvs-unmark-up}).
+(@code{cvs-mode-unmark-up}).
@end table
@node Committing changes, Editing files, Marking files, Commands
@@ -1089,12 +1119,14 @@ Unmark the file on the previous line, and move point to that line
@section Committing changes
@cindex Committing changes
@cindex Ci
-@findex cvs-commit
+@findex cvs-mode-commit
@kindex c - commit files
@vindex cvs-erase-input-buffer (variable)
+@vindex cvs-auto-revert-after-commit (variable)
@cindex Commit buffer
@cindex Edit buffer
@cindex Erasing commit message
+@cindex Reverting buffers after commit
@table @kbd
@item c
@@ -1102,7 +1134,7 @@ All files that have a "need to be checked in"-marker (@pxref{Buffer
contents}) can be checked in with the @kbd{c} command. It checks in all
selected files (@pxref{Selected files}) (except those who lack the
"ci"-marker - they are ignored). Pressing @kbd{c} causes
-@code{cvs-commit} to be run.@refill
+@code{cvs-mode-commit} to be run.@refill
When you press @kbd{c} you will get a buffer called
@samp{*cvs-commit-message*}. Enter the log message for the file(s) in
@@ -1111,10 +1143,18 @@ commit the files (using @code{cvs-edit-done}).
Normally the @samp{*cvs-commit-message*} buffer will retain the log
message from the previous commit, but if the variable
-@code{cvs-erase-input-buffer} is set to a non-nil value the buffer will
-be erased. Point and mark will always be located around the entire
-buffer so that you can easily erase it with @kbd{C-w}
+@code{cvs-erase-input-buffer} is set to a non-@code{nil} value the
+buffer will be erased. Point and mark will always be located around the
+entire buffer so that you can easily erase it with @kbd{C-w}
(@samp{kill-region}).@refill
+
+If you are editing the files in your emacs an automatic
+@samp{revert-buffer} will be performed. (If the file contains
+@samp{$@asis{Id}$} keywords @samp{cvs commit} will write a new file with
+the new values substituted. The auto-revert makes sure that you get
+them into your buffer). The revert will not occur if you have modified
+your buffer, or if @samp{cvs-auto-revert-after-commit} is set to
+@samp{nil}.@refill
@end table
@node Editing files, Getting info about files, Committing changes, Commands
@@ -1126,9 +1166,9 @@ buffer so that you can easily erase it with @kbd{C-w}
@cindex Loading files
@cindex Dired
@cindex Invoking dired
-@findex cvs-find-file
-@findex cvs-find-file-other-window
-@findex cvs-add-change-log-entry-other-window
+@findex cvs-mode-find-file
+@findex cvs-mode-find-file-other-window
+@findex cvs-mode-add-change-log-entry-other-window
@kindex f - find file or directory
@kindex o - find file in other window
@kindex A - add ChangeLog entry
@@ -1144,17 +1184,17 @@ Find the file that the cursor points to. Run @samp{dired}
@ifinfo
(@pxref{Dired,,,Emacs})
@end ifinfo
-if the cursor points to a directory (@code{cvs-find-file}).@refill
+if the cursor points to a directory (@code{cvs-mode-find-file}).@refill
@item o
Like @kbd{f}, but use another window
-(@code{cvs-find-file-other-window}).@refill
+(@code{cvs-mode-find-file-other-window}).@refill
@item A
Invoke @samp{add-change-log-entry-other-window} to edit a
@samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
directory of the file the cursor points to.
-(@code{cvs-add-change-log-entry-other-window}).@refill
+(@code{cvs-mode-add-change-log-entry-other-window}).@refill
@end table
@node Getting info about files, Adding and removing files, Editing files, Commands
@@ -1165,8 +1205,8 @@ directory of the file the cursor points to.
@cindex Getting status
@kindex l - run @samp{cvs log}
@kindex s - run @samp{cvs status}
-@findex cvs-log
-@findex cvs-status
+@findex cvs-mode-log
+@findex cvs-mode-status
Both of the following commands can be customized.
@xref{Customization}.@refill
@@ -1174,14 +1214,14 @@ Both of the following commands can be customized.
@table @kbd
@item l
Run @samp{cvs log} on all selected files, and show the result in a
-temporary buffer (@code{cvs-log}).
+temporary buffer (@code{cvs-mode-log}).
@item s
Run @samp{cvs status} on all selected files, and show the result in a
-temporary buffer (@code{cvs-status}).
+temporary buffer (@code{cvs-mode-status}).
@end table
-@node Adding and removing files, Removing handled entries, Getting info about files, Commands
+@node Adding and removing files, Undoing changes, Getting info about files, Commands
@comment node-name, next, previous, up
@section Adding and removing files
@cindex Adding files
@@ -1191,8 +1231,8 @@ temporary buffer (@code{cvs-status}).
@cindex Putting files under CVS control
@kindex a - add a file
@kindex r - remove a file
-@findex cvs-add
-@findex cvs-remove-file
+@findex cvs-mode-add
+@findex cvs-mode-remove-file
The following commands are available to make it easy to add and remove
files from the CVS repository.
@@ -1201,7 +1241,7 @@ files from the CVS repository.
@item a
Add all selected files. This command can be used on @samp{Unknown}
files (see @pxref{File status}). The status of the file will change to
-@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-commit}, see
+@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit}, see
@pxref{Committing changes}) to really add the file to the
repository.@refill
@@ -1211,7 +1251,7 @@ them) to resurrect them.
Selected files that are neither @samp{Unknown} nor @samp{Removed} will
be ignored by this command.
-The command that is run is @code{cvs-add}.
+The command that is run is @code{cvs-mode-add}.
@item r
This command removes the selected files (after prompting for
@@ -1219,13 +1259,29 @@ confirmation). The files are @samp{rm}ed from your directory and
(unless the status was @samp{Unknown}; @pxref{File status}) they will
also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
disappear from the buffer. Otherwise their status will change to
-@samp{Removed}, and you must use @kbd{c} (@samp{cvs-commit},
+@samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit},
@pxref{Committing changes}) to commit the removal.@refill
-The command that is run is @code{cvs-remove-file}.
+The command that is run is @code{cvs-mode-remove-file}.
+@end table
+
+@node Undoing changes, Removing handled entries, Adding and removing files, Commands
+@comment node-name, next, previous, up
+@section Undoing changes
+@cindex Undo changes
+@cindex Flush changes
+@kindex U - undo changes
+@findex cvs-mode-undo-local-changes
+
+@table @kbd
+@item U
+If you have modified a file, and for some reason decide that you don't
+want to keep the changes, you can undo them with this command. It works
+by removing your working copy of the file and then getting the latest
+version from the repository (@code{cvs-mode-undo-local-changes}.
@end table
-@node Removing handled entries, Ignoring files, Adding and removing files, Commands
+@node Removing handled entries, Ignoring files, Undoing changes, Commands
@comment node-name, next, previous, up
@section Removing handled entries
@cindex Expunging uninteresting entries
@@ -1235,8 +1291,9 @@ The command that is run is @code{cvs-remove-file}.
@cindex Handled lines, removing them
@kindex x - remove processed entries
@kindex C-k - remove selected entries
-@findex cvs-remove-handled
-@findex cvs-acknowledge
+@findex cvs-mode-remove-handled
+@findex cvs-mode-acknowledge
+@findex cvs-mode-ignore
@table @kbd
@item x
@@ -1247,13 +1304,13 @@ are removed from the buffer. If a directory becomes empty the heading
for that directory is also removed. This makes it easier to get an
overview of what needs to be done.
-The command is called @code{cvs-remove-handled}. If
-@samp{cvs-auto-remove-handled} is set to non-@samp{nil} this will
+The command is called @code{cvs-mode-remove-handled}. If
+@samp{cvs-auto-remove-handled} is set to non-@code{nil} this will
automatically be performed after every commit.@refill
@item C-k
-This command can be used for lines that @samp{cvs-remove-handled} would
-not delete, but that you want to delete (@code{cvs-acknowledge}).
+This command can be used for lines that @samp{cvs-mode-remove-handled} would
+not delete, but that you want to delete (@code{cvs-mode-acknowledge}).
@end table
@node Ignoring files, Viewing differences, Removing handled entries, Commands
@@ -1269,10 +1326,10 @@ the @file{.cvsignore} doesn't exist it will be created.
The @file{.cvsignore} file should normally be added to the repository,
but you could ignore it also if you like it better that way.
-This runs @code{cvs-ignore}.
+This runs @code{cvs-mode-ignore}.
@end table
-@node Viewing differences, , Ignoring files, Commands
+@node Viewing differences, Emerge, Ignoring files, Commands
@comment node-name, next, previous, up
@section Viewing differences
@cindex Diff
@@ -1280,29 +1337,122 @@ This runs @code{cvs-ignore}.
@cindex Viewing differences
@kindex d - run @samp{cvs diff}
@kindex b - diff backup file
-@findex cvs-diff-cvs
-@findex cvs-diff-backup
+@findex cvs-mode-diff-cvs
+@findex cvs-mode-diff-backup
+@vindex cvs-diff-ignore-marks (variable)
@table @kbd
@item d
Display a @samp{cvs diff} between the selected files and the RCS version
that they are based on. @xref{Customization} describes how you can send
-flags to @samp{cvs diff}. (The function that does the job is
-@code{cvs-diff-cvs}).@refill
+flags to @samp{cvs diff}. If @var{cvs-diff-ignore-marks} is set to a
+non-@code{nil} value or if a prefix argument is given (but not both) any
+marked files will not be considered to be selected.
+(@code{cvs-mode-diff-cvs}).@refill
@item b
If CVS finds a conflict while merging two versions of a file (during a
@samp{cvs update}, @pxref{Updating the directory}) it will save the
original file in a file called @file{.#@var{FILE}.@var{VERSION}} where
@var{FILE} is the name of the file, and @var{VERSION} is the RCS version
-number that your file was based on.
+number that your file was based on.@refill
With the @kbd{b} command you can run a @samp{diff} on the files
@file{.#@var{FILE}.@var{VERSION}} and @file{@var{FILE}}. You can get a
context- or Unidiff by setting @samp{cvs-diff-flags} -
@pxref{Customization}. This command only works on files that have
-status @samp{Conflict} or @samp{Merged}. The name of the command is
-@code{cvs-diff-backup}. @refill
+status @samp{Conflict} or @samp{Merged}.@refill
+
+If @var{cvs-diff-ignore-marks} is set to a non-@code{nil} value or if a
+prefix argument is given (but not both) any marked files will not be
+considered to be selected. (@code{cvs-mode-diff-backup}).@refill
+@end table
+
+@node Emerge, Reverting your buffers, Viewing differences, Commands
+@comment node-name, next, previous, up
+@section Running emerge
+@cindex Emerge
+@cindex Invoking emerge
+@cindex Conflicts, resolving
+@cindex Resolving conflicts
+@kindex e - invoke @samp{emerge}
+@findex cvs-mode-emerge
+
+@table @kbd
+@item e
+Invoke @samp{emerge} on one file. This command works slightly different
+depending on the file status.
+
+@table @asis
+@item @samp{Modified}
+Run @samp{emerge-files} with your working file as file A, and the latest
+revision in the repository as file B.
+
+@item @samp{Merged}
+@itemx @samp{Conflict}
+Run @samp{emerge-files-with-ancestor} with your working file (as it was
+prior to your invocation of @samp{cvs-update}) as file A, the latest
+revision in the repository as file B, and the revision that you based
+your local modifications on as ancestor.
+@end table
+
+@strong{Note:} CVS has already performed a merge. The resulting file is
+not used in any way if you use this command. If you use the @kbd{q}
+command inside @samp{emerge} (to successfully terminate the merge) the
+file that CVS created will be overwritten.
+@end table
+
+@node Reverting your buffers, Miscellaneous commands, Emerge, Commands
+@comment node-name, next, previous, up
+@section Reverting your buffers
+@findex cvs-mode-revert-updated-buffers
+@kindex R - revert buffers
+@cindex Syncing buffers
+@cindex Reverting buffers
+
+@table @kbd
+@item R
+If you are editing (or just viewing) a file in a buffer, and that file
+is changed by CVS during a @samp{cvs-update}, all you have to do is type
+@kbd{R} in the *cvs* buffer to read in the new versions of the
+files.@refill
+
+All files that are @samp{Updated}, @samp{Merged} or in @samp{Conflict}
+are reverted from the disk. Any other files are ignored. Only files
+that you were already editing are read.@refill
+
+An error is signalled if you have modified the buffer since it was last
+changed. (@code{cvs-mode-revert-updated-buffers}).@refill
+@end table
+
+@node Miscellaneous commands, , Reverting your buffers, Commands
+@comment node-name, next, previous, up
+@section Miscellaneous commands
+@findex cvs-byte-compile-files
+@cindex Recompiling elisp files
+@cindex Byte compilation
+@cindex Getting rid of lock files
+@cindex Lock files
+@kindex q - bury the *cvs* buffer
+@findex bury-buffer
+
+@table @kbd
+@item M-x cvs-byte-compile-files
+Byte compile all selected files that end in .el.
+
+@item M-x cvs-delete-lock
+This command can be used in any buffer, and deletes the lock files that
+the *cvs* buffer informs you about. You should normally never have to
+use this command since CVS tries very carefully to always remove the
+lock files itself.
+
+You can only use this command when a message in the *cvs* buffer tells
+you so. You should wait a while before using this command in case
+someone else is running a cvs command.
+
+@item q
+Bury the *cvs* buffer. (@code{bury-buffer}).
+
@end table
@node Customization, Future enhancements, Commands, Top
@@ -1310,11 +1460,17 @@ status @samp{Conflict} or @samp{Merged}. The name of the command is
@chapter Customization
@vindex cvs-erase-input-buffer (variable)
@vindex cvs-inhibit-copyright-message (variable)
-@vindex cvs-cvs-diff-flags (variable)
@vindex cvs-diff-flags (variable)
+@vindex cvs-diff-ignore-marks (variable)
@vindex cvs-log-flags (variable)
@vindex cvs-status-flags (variable)
@vindex cvs-auto-remove-handled (variable)
+@vindex cvs-update-prog-output-skip-regexp (variable)
+@vindex cvs-cvsroot (variable)
+@vindex TMPDIR (environment variable)
+@vindex cvs-auto-revert-after-commit (variable)
+@vindex cvs-commit-buffer-require-final-newline (variable)
+@vindex cvs-sort-ignore-file (variable)
@cindex Inhibiting the Copyright message.
@cindex Copyright message, getting rid of it
@cindex Getting rid of the Copyright message.
@@ -1324,14 +1480,24 @@ status @samp{Conflict} or @samp{Merged}. The name of the command is
@cindex Context diff, how to get
@cindex Unidiff, how to get
@cindex Automatically remove handled files
+@cindex -u option in modules file
+@cindex Modules file (-u option)
+@cindex Update program (-u option in modules file)
+@cindex Reverting buffers after commit
+@cindex Require final newline
+@cindex Automatically inserting newline
+@cindex Commit message, inserting newline
+@cindex Sorting the .cvsignore file
+@cindex .cvsignore file, sorting
+@cindex Automatically sorting .cvsignore
If you have an idea about any customization that would be handy but
-isn't present in this list, please tell me! @xref{Reporting bugs and
-ideas} for info on how to reach me.@refill
+isn't present in this list, please tell me! @xref{Bugs} for info on how
+to reach me.@refill
@table @samp
@item cvs-erase-input-buffer
-If set to anything else than @samp{nil} the edit buffer will be erased
+If set to anything else than @code{nil} the edit buffer will be erased
before you write the log message (@pxref{Committing changes}).
@item cvs-inhibit-copyright-message
@@ -1340,71 +1506,180 @@ a while. Set this variable to @samp{t} if you want to get rid of it.
(But don't set this to @samp{t} in the system defaults file - new users
should see this message at least once).
-@item cvs-cvs-diff-flags
-A list of strings to pass as arguments to the @samp{cvs diff} program.
-This is used by @samp{cvs-diff-cvs} (key @kbd{d}, @pxref{Viewing
-differences}). If you prefer the Unidiff format you could add this line
-to your @file{.emacs} file:@refill
+@item cvs-diff-flags
+A list of strings to pass as arguments to the @samp{cvs diff} and
+@samp{diff} programs. This is used by @samp{cvs-mode-diff-cvs} and
+@samp{cvs-mode-diff-backup} (key @kbd{b}, @pxref{Viewing differences}). If
+you prefer the Unidiff format you could add this line to your
+@file{.emacs} file:@refill
@example
-(setq cvs-cvs-diff-flags '("-u"))
+(setq cvs-diff-flags '("-u"))
@end example
-@item cvs-diff-flags
-Like @samp{cvs-cvs-diff-flags}, but passed to @samp{diff}. This is used
-by @samp{cvs-diff-backup} (key @kbd{b}, @pxref{Viewing differences}).
+@item cvs-diff-ignore-marks
+If this variable is non-@code{nil} or if a prefix argument is given (but
+not both) to @samp{cvs-mode-diff-cvs} or @samp{cvs-mode-diff-backup}
+marked files are not considered selected.
@item cvs-log-flags
-List of strings to send to @samp{cvs log}. Used by @samp{cvs-log} (key
-@kbd{l}, @pxref{Getting info about files}).
+List of strings to send to @samp{cvs log}. Used by @samp{cvs-mode-log}
+(key @kbd{l}, @pxref{Getting info about files}).
@item cvs-status-flags
-List of strings to send to @samp{cvs status}. Used by @samp{cvs-status}
+List of strings to send to @samp{cvs status}. Used by @samp{cvs-mode-status}
(key @kbd{s}, @pxref{Getting info about files}).
@item cvs-auto-remove-handled
-If this variable is set to any non-@samp{nil} value
-@samp{cvs-remove-handled} will be called every time you check in files,
-after the check-in is ready. @xref{Removing handled entries}.@refill
+If this variable is set to any non-@code{nil} value
+@samp{cvs-mode-remove-handled} will be called every time you check in
+files, after the check-in is ready. @xref{Removing handled
+entries}.@refill
+
+@item cvs-auto-revert-after-commit
+If this variable is set to any non-@samp{nil} value any buffers you have
+that visit a file that is committed will be automatically reverted.
+This variable is default @samp{t}. @xref{Committing changes}.@refill
+
+@item cvs-update-prog-output-skip-regexp
+The @samp{-u} flag in the @file{modules} file can be used to run a command
+whenever a @samp{cvs update} is performed (see cvs(5)). This regexp
+is used to search for the last line in that output. It is normally set
+to @samp{"$"}. That setting is only correct if the command outputs
+nothing. Note that pcl-cvs will get very confused if the command
+outputs @emph{anything} to @samp{stderr}.
+
+@item cvs-cvsroot
+This variable can be set to override @samp{CVSROOT}. It should be a
+string. If it is set then everytime a cvs command is run it will be
+called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if
+your site has several repositories.
+
+@item TMPDIR
+Pcl-cvs uses this @emph{environment variable} to decide where to put the
+temporary files it needs. It defaults to @file{/tmp} if it is not set.
+
+@item cvs-commit-buffer-require-final-newline
+When you enter a log message in the @samp{*cvs-commit-message*} buffer
+pcl-cvs will normally automatically insert a trailing newline, unless
+there already is one. This behavior can be controlled via
+@samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the
+default behavior), a newline will always be appended. If it is
+@samp{nil}, newlines will never be appended. Any other value causes
+pcl-cvs to ask the user whenever there is no trailing newline in the
+commit message buffer.
+
+@item cvs-sort-ignore-file
+If this variable is set to any non-@samp{nil} value the
+@file{.cvsignore} will always be sorted whenever you use
+@samp{cvs-mode-ignore} to add a file to it. This option is on by
+default.
@end table
-@node Future enhancements, Reporting bugs and ideas, Customization, Top
+@node Future enhancements, Bugs, Customization, Top
@comment node-name, next, previous, up
@chapter Future enhancements
@cindex Enhancements
Pcl-cvs is still under development and needs a number of enhancements to
-be called complete. Here is my current wish-list for future releases of
-pcl-cvs:
+be called complete. Below is my current wish-list for future releases
+of pcl-cvs. Please, let me know which of these features you want most.
+They are listed below in approximately the order that I currently think
+I will implement them in.
@itemize @bullet
@item
-Dired support. I have an experimental @file{dired-cvs.el} that works
-together with CVS 1.2. Unfortunately I wrote it on top of a
-non-standard @file{dired.el}, so it must be rewritten.@refill
+Rewritten parser code. There are many situations where pcl-cvs will
+fail to recognize the output from CVS. The situation could be greatly
+increased.
+
+@item
+@samp{cvs-status}. This will run @samp{cvs status} in a directory and
+produce a buffer that looks pretty much like the current *cvs* buffer.
+That buffer will include information for all version-controlled files.
+(There will be a simple keystroke to remove all "uninteresting" files,
+that is, files that are "Up-to-date"). In this new buffer you will be
+able to update a file, commit a file, et c. The big win with this is
+that you will be able to watch the differences between your current
+working file and the head revision in the repository before you update
+the file, and you can then choose to update it or let it wait for a
+while longer.
+
+@item
+Log mode. When this mode is finished you will be able to move around
+(using @kbd{n} and @kbd{p}) between the revisions of a file, mark two of
+them, and run a diff between them. You will be able to hide branches
+(similar to the way you can hide sub-paragraphs in outline-mode) and do
+merges between revisions. Other ideas about this are welcome.
+
+@item
+The current model for marks in the *cvs* buffer seems to be confusing.
+I am considering to use the VM model instead, where marks are normally
+inactive. To activate the mark, you issue a command like
+@samp{cvs-mode-next-command-uses-marks}. I might implement a flag so
+that you can use either version. Feedback on this before I start coding
+it is very welcome.
@item
It should be possible to run commands such as @samp{cvs log}, @samp{cvs
status} and @samp{cvs commit} directly from a buffer containing a file,
instead of having to @samp{cvs-update}. If the directory contains many
files the @samp{cvs-update} can take quite some time, especially on a
-slow machine.
+slow machine. I planed to put these kind of commands on the prefix
+@kbd{C-c C-v}, but that turned out to be used by for instance c++-mode.
+If you have any suggestions for a better prefix key, please let me know.
+
+@item
+Increased robustness. For instance, you can not currently press
+@kbd{C-g} when you are entering the description of a file that you are
+adding without confusing pcl-cvs.
+
+@item
+Support for multiple active *cvs* buffers.
+
+@item
+Dired support. I have an experimental @file{dired-cvs.el} that works
+together with CVS 1.2. Unfortunately I wrote it on top of a
+non-standard @file{dired.el}, so it must be rewritten.@refill
+
+@item
+An ability to send user-supplied options to all the cvs commands.
+
+@item
+Pcl-cvs is not at all clever about what it should do when @samp{cvs
+update} runs a program (due to the @samp{-u} option in the
+@file{modules} file --- see @samp{cvs(5)}). The current release uses a
+regexp to search for the end. At the very least that regexp should be
+configured for different modules. Tell me if you have any idea about
+what is the right thing to do. In a perfect world the program should
+also be allowed to print to @samp{stderr} without causing pcl-cvs to
+crash.
@end itemize
If you miss something in this wish-list, let me know! I don't promise
that I will write it, but I will at least try to coordinate the efforts
-of making a good Emacs front end to CVS. See @xref{Reporting bugs and
-ideas} for information about how to reach me.@refill
+of making a good Emacs front end to CVS. See @xref{Bugs} for
+information about how to reach me.@refill
+So far, I have written most of pcl-cvs in my all-to-rare spare time. If
+you want pcl-cvs to be developed faster you can write a contract with
+Signum Support to do the extension. You can reach Signum Support by
+email to @samp{info@@signum.se} or via mail to Signum Support AB, Box
+2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 - 21 46 00. Fax: +46
+(0) 13 - 21 47 00.
-@node Reporting bugs and ideas, Function and Variable Index, Future enhancements, Top
+@node Bugs, Function and Variable Index, Future enhancements, Top
@comment node-name, next, previous, up
-@chapter Reporting bugs and ideas
+@chapter Bugs (known and unknown)
@cindex Reporting bugs and ideas
@cindex Bugs, how to report them
@cindex Author, how to reach
@cindex Email to the author
+@cindex Known bugs
+@cindex Bugs, known
+@cindex FAQ
+@cindex Problems, list of common
If you find a bug or misfeature, don't hesitate to tell me! Send email
to @samp{ceder@@lysator.liu.se}.
@@ -1413,8 +1688,40 @@ If you have ideas for improvements, or if you have written some
extensions to this package, I would like to hear from you. I hope that
you find this package useful!
+Below is a partial list of currently known problems with pcl-cvs version
+1.05.
+
+@table @asis
+@item Commit causes Emacs to hang
+Emacs waits for the @samp{cvs commit} command to finish before you can
+do anything. If you start a background job from the loginfo file you
+must take care that it closes @samp{stdout} and @samp{stderr} if you do
+not want to wait for it. (You do that with @samp{background-command &>-
+2&>- &} if you are starting @samp{background-command} from a
+@samp{/bin/sh} shell script).
+
+Your emacs will also hang if there was a lock file in the repository.
+In this case you can type @kbd{C-g} to get control over your emacs
+again.
+
+@item Name clash in Emacs 19
+This is really a bug in Elib or the Emacs 19 distribution. Both Elib and
+Emacs 19.6 through at least 19.10 contains a file named
+@file{cookie.el}. One of the files will have to be renamed, and we are
+currently negotiating about which of the files to rename.
+
+@item Commands while cvs-update is running
+It is possible to type commands in the *cvs* buffer while the update is
+running, but error messages is all that you will get. The error
+messages should be better.
+
+@item Unexpected output from CVS
+Unexpected output from CVS confuses pcl-cvs. It will currently create a
+bug report that you can mail to me. It should do something more
+civilized.
+@end table
-@node Function and Variable Index, Concept Index, Reporting bugs and ideas, Top
+@node Function and Variable Index, Concept Index, Bugs, Top
@comment node-name, next, previous, up
@unnumbered Function and Variable Index
OpenPOWER on IntegriCloud