diff options
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.texinfo | 507 |
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 |