\input texinfo @c -*-texinfo-*-
@c %**start of header
-@setfilename ../../info/pcl-cvs
+@setfilename ../../info/pcl-cvs.info
@settitle PCL-CVS---Emacs Front-End to CVS
@syncodeindex vr fn
+@documentencoding UTF-8
@c %**end of header
@copying
-Copyright @copyright{} 1991--2013 Free Software Foundation, Inc.
+Copyright @copyright{} 1991--2014 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license
is included in the section entitled ``GNU Free Documentation License''.
* 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.
-* Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
+* Invoking Ediff:: Running @samp{ediff} from @file{*cvs*} buffer.
* Updating files:: Updating files that Need-update.
* Tagging files:: Tagging files.
* Miscellaneous commands:: Miscellaneous commands.
Inge Wallin wrote the skeleton of
@file{pcl-cvs.texi}, and gave useful comments on it. He also wrote
the files @file{elib-node.el} and @file{compile-all.el}. The file
-@file{cookie.el} was inspired by Inge.@refill
+@file{cookie.el} was inspired by Inge.
@item
@c linus@@lysator.liu.se
Linus Tolke contributed useful comments
-on both the functionality and the documentation.@refill
+on both the functionality and the documentation.
@item
@c jwz@@jwz.com
Jamie Zawinski contributed
@file{pcl-cvs-lucid.el}, which was later renamed to
-@file{pcl-cvs-xemacs.el}.@refill
+@file{pcl-cvs-xemacs.el}.
@item
Leif Lonnblad contributed RCVS support (since superseded by the new
@samp{cvs -n update} will be run in that directory. (It should contain
files that have been checked out from a CVS archive.) The output from
@code{cvs} will be parsed and presented in a table in a buffer called
-@samp{*cvs*}. It might look something like this:
+@file{*cvs*}. It might look something like this:
@example
Repository : /usr/CVSroot
repository. @xref{Committing changes}. You can also press @kbd{O} to
update any of the files that are marked @samp{Need-Update}. You can
also run @kbd{M-x cvs-update @key{RET}} (bound to @kbd{M-u} in the
-@samp{*cvs*} buffer) to update all the files.@refill
+@file{*cvs*} buffer) to update all the files.
You can then press @kbd{=} to easily get a @samp{diff} between your
modified file and the base version that you started from, or you can
@node Buffer contents
@chapter Buffer contents
@cindex Buffer contents
-@cindex @code{*cvs*} buffer contents
+@cindex @file{*cvs*} buffer contents
The display contains several columns, some of which are optional.
These columns are, from left to right:
@item
An asterisk when the file is @dfn{marked} (@pxref{Selected
-files}).@refill
+files}).
@item
The actual status of the file wrt the repository. See below.
@item merged
The file was modified in your working directory, and there were
modifications in the repository as well, but they were merged
-successfully, without conflict, in your working directory.@refill
+successfully, without conflict, in your working directory.
@end table
@item Conflict
the two versions; an unmodified copy of your file is also in your
working directory, with the name @file{.#@var{file}.@var{version}},
where @var{version} is the RCS revision that your modified file started
-from. @xref{Viewing differences}, for more details.@refill
+from. @xref{Viewing differences}, for more details.
A conflict can also come from a disagreement on the existence of the file
rather than on its content. This case is indicated by the following
@item Added
The file has been added by you, but it still needs to be checked in to
-the repository.@refill
+the repository.
@item Removed
The file has been removed by you, but it still needs to be checked in to
the repository. You can resurrect it by typing @kbd{a} (@pxref{Adding
-and removing files}).@refill
+and removing files}).
@item Unknown
A file that was detected in your directory, but that neither appears in
the repository, nor is present on the list of files that CVS should
-ignore.@refill
+ignore.
@item Up-to-date
The file is up to date with respect to the version in the repository.
@table @samp
@item added
-You have just added the file to the repository.@refill
+You have just added the file to the repository.
@item updated
The file was brought up to date with respect to the repository. This is
done for any file that exists in the repository but not in your source,
and for files that you haven't changed but are not the most recent
-versions available in the repository.@refill
+versions available in the repository.
@item patched
The file was brought up to date with respect to the remote repository by
way of fetching and applying a patch to the file in your source. This
is equivalent to @samp{updated} except that CVS decided to use a hopefully
-more efficient method.@refill
+more efficient method.
@item committed
-You just committed the file.@refill
+You just committed the file.
@end table
@item Need-Update
Either a newer version than the one in your source is available in the
repository and you have not modified your checked out version, or the
file exists in the repository but not in your source. Use
-@samp{cvs-mode-update} bound to @kbd{O} to update the file.@refill
+@samp{cvs-mode-update} bound to @kbd{O} to update the file.
@item Need-Merge
You have modified the checked out version of the file, and a newer
If a directory is selected but the command cannot be applied to a
directory, then it will be applied to the set of files under this
-directory which are in the @samp{*cvs*} buffer.
+directory which are in the @file{*cvs*} buffer.
@findex cvs-mode-force-command
@findex cvs-allow-dir-commit
* 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.
-* Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
+* Invoking Ediff:: Running @samp{ediff} from @file{*cvs*} buffer.
* Updating files:: Updating files that Need-update.
* Tagging files:: Tagging files.
* Miscellaneous commands:: Miscellaneous commands.
@findex cvs-quickdir
@cindex Creating the *cvs* buffer
-Most commands in PCL-CVS require that you have a @samp{*cvs*}
+Most commands in PCL-CVS require that you have a @file{*cvs*}
buffer. The commands that you use to get one are listed below.
For each, a @samp{cvs} process will be run, the output will be parsed by
-PCL-CVS, and the result will be printed in the @samp{*cvs*} buffer (see
+PCL-CVS, and the result will be printed in the @file{*cvs*} buffer (see
@ref{Buffer contents}, for a description of the buffer's contents).
@table @kbd
out.
@item M-x cvs-quickdir
-Populate the @samp{*cvs*} buffer by just looking at the @file{CVS/Entries}
+Populate the @file{*cvs*} buffer by just looking at the @file{CVS/Entries}
files. This is very much like @code{cvs-examine} except that it does
not access the CVS repository, which is a major advantage when the
repository is far away. But of course, it will not be able to detect
@table @kbd
@item T
-Toggles whether or not marks will be active in the next command.@refill
+Toggles whether or not marks will be active in the next command.
@item b
Provide the next command with a branch (can be any version
-specifier) to work on.@refill
+specifier) to work on.
@item B
Secondary branch argument. Only meaningful if @kbd{b} is also used.
@end table
@node Updating the buffer
-@section Updating the @samp{*cvs*} buffer
+@section Updating the @file{*cvs*} buffer
@findex cvs-update
@findex cvs-examine
@findex cvs-status
@findex cvs-mode-examine
@findex cvs-mode-status
-The following commands can be used from within the @samp{*cvs*} buffer
+The following commands can be used from within the @file{*cvs*} buffer
to update the display:
@table @kbd
@item M-u
-Runs the command @samp{cvs-update}.@refill
+Runs the command @samp{cvs-update}.
@item M-e
-Runs the command @samp{cvs-examine}.@refill
+Runs the command @samp{cvs-examine}.
@item M-s
-Runs the command @samp{cvs-status}.@refill
+Runs the command @samp{cvs-status}.
@end table
In addition to the above commands which operate on the whole module,
@table @kbd
@item O
Runs @code{cvs-mode-update} on the selected files. When run on the
-top-level directory, this is equivalent to @kbd{M-u}.@refill
+top-level directory, this is equivalent to @kbd{M-u}.
@item e
Runs @code{cvs-mode-examine} on the selected files. When run on the
-top-level directory, this is equivalent to @kbd{M-e}.@refill
+top-level directory, this is equivalent to @kbd{M-e}.
@findex cvs-status-mode
@item s
Runs @code{cvs-mode-status} on the selected files. When run on the
top-level directory, this is equivalent to @kbd{M-s}, except that
-CVS output will be shown in a @samp{*cvs-info*} buffer that will be
-put in @samp{cvs-status-mode}.@refill
+CVS output will be shown in a @file{*cvs-info*} buffer that will be
+put in @samp{cvs-status-mode}.
@end table
@item @key{SPC}
@itemx n
These keys move the cursor one file forward, towards the end of the
-buffer (@code{cvs-mode-next-line}).@refill
+buffer (@code{cvs-mode-next-line}).
@item p
This key moves one file backward, towards the beginning of the buffer
@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 are marked
-(@code{cvs-mode-mark}).@refill
+(@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 are unmarked
-(@code{cvs-mode-unmark}).@refill
+(@code{cvs-mode-unmark}).
@item M
Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
@item
After having selected the files you want to commit, you type either
@kbd{c} or @kbd{C} which brings up a special buffer
-@samp{*cvs-commit*}.@refill
+@file{*cvs-commit*}.
@item
You type in the log message describing the changes you're about to
@item
When you're happy with it, you type @kbd{C-c C-c} to do the actual
-commit.@refill
+commit.
@end enumerate
There's no hidden state, so you can abort the process or pick it up
As for the difference between @kbd{c} (i.e., @code{cvs-mode-commit}) and
@kbd{C} (i.e., @code{cvs-mode-commit-setup}) is that the first gets you
-straight to @samp{*cvs-commit*} without erasing it or changing anything
-to its content, while the second first erases @samp{*cvs-commit*}
+straight to @file{*cvs-commit*} without erasing it or changing anything
+to its content, while the second first erases @file{*cvs-commit*}
and tries to initialize it with a sane default (it does that by either
using a template provided by the CVS administrator or by extracting a
relevant log message from a @file{ChangeLog} file).
@item o
Like @kbd{f}, but use another window
-(@code{cvs-mode-find-file-other-window}).@refill
+(@code{cvs-mode-find-file-other-window}).
@item A
Invoke @samp{add-change-log-entry-other-window} to edit a
@file{ChangeLog} file. The @file{ChangeLog} file will be found in the
directory of the file the cursor points to, or in a parent of that
-directory (@code{cvs-mode-add-change-log-entry-other-window}).@refill
+directory (@code{cvs-mode-add-change-log-entry-other-window}).
@end table
@item l
Call the command @code{cvs-mode-log} which runs @samp{cvs log} on all
selected files, and show the result in a temporary buffer
-@samp{*cvs-info*} (@pxref{Log View Mode}).
+@file{*cvs-info*} (@pxref{Log View Mode}).
@item s
Call the command @code{cvs-mode-status} which runs @samp{cvs status} on
all selected files, and show the result in a temporary buffer
-@samp{*cvs-info*}.
+@file{*cvs-info*}.
@c Fixme: reinstate when node is written:
@c (@pxref{CVS Status Mode}).
@end table
files (@pxref{Buffer contents}). The status of the file will change to
@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit}
@pxref{Committing changes}), to really add the file to the
-repository.@refill
+repository.
This command can also be used on @samp{Removed} files (before you commit
them) to resurrect them.
also be @samp{cvs remove}d. If the files' status was @samp{Unknown}
they will disappear from the buffer. Otherwise their status will change to
@samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit},
-@pxref{Committing changes}) to commit the removal.@refill
+@pxref{Committing changes}) to commit the removal.
The command that is run is @code{cvs-mode-remove-file}.
@end table
@vindex cvs-mode-remove-handled@r{ (variable)}
@kbd{x} invokes @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
+automatically be performed after every commit.
@item C-k
This command can be used for lines that @samp{cvs-mode-remove-handled} would
@item =
@itemx d =
Display a @samp{cvs diff} between the selected files and the version
-that they are based on (@code{cvs-mode-diff}).@refill
+that they are based on (@code{cvs-mode-diff}).
@item d b
If CVS finds a conflict while merging two versions of a file (during a
@samp{cvs update}, @pxref{Updating the buffer}) 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 revision
-number that @var{file} was based on.@refill
+number that @var{file} was based on.
With the @kbd{d b} command you can run a @samp{diff} on the files
-@file{.#@var{file}.@var{version}} and @file{@var{file}}.@refill
+@file{.#@var{file}.@var{version}} and @file{@var{file}}.
@item d h
Display a @samp{cvs diff} between the selected files and the head
revision (the most recent version on the current
-branch) in the repository (@code{cvs-mode-diff-head}).@refill
+branch) in the repository (@code{cvs-mode-diff-head}).
@item d r
Display a @samp{cvs diff} between the base revision of the selected
@item d v
Display a @samp{cvs diff} between the selected files and the head
revision of the vendor branch in the repository
-(@code{cvs-mode-diff-vendor}).@refill
+(@code{cvs-mode-diff-vendor}).
@item d y
Display a @samp{cvs diff} between the selected files and yesterday's
head revision in the repository
-(@code{cvs-mode-diff-yesterday}).@refill
+(@code{cvs-mode-diff-yesterday}).
@end table
By default, @samp{diff} commands ignore the marks. This can be changed
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{ediff} (to successfully terminate a merge) the file that CVS
-created will be overwritten.@refill
+created will be overwritten.
@end table
@node Updating files
@item M-x cvs-mode-delete-lock
This command deletes the lock files that
-the @samp{*cvs*} buffer informs you about. You should normally never have to
+the @file{*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 @samp{*cvs*} buffer tells
+You can only use this command when a message in the @file{*cvs*} buffer tells
you so. You should wait a while before using this command in case
someone else is running a @code{cvs} command.
Bury the PCL-CVS buffer (@code{cvs-bury-buffer}).
@item M-x cvs-mode-quit
-Quit PCL-CVS, killing the @samp{*cvs*} buffer.
+Quit PCL-CVS, killing the @file{*cvs*} buffer.
@end table
@node Log Edit Mode
If you have an idea about any customization that would be handy but
isn't present in this list, please tell us!
-For info on how to reach us, see @ref{Bugs}.@refill
+For info on how to reach us, see @ref{Bugs}.
@table @samp
@item cvs-auto-remove-handled
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
+entries}.
@item cvs-auto-remove-directories
If this variable is set to any non-@code{nil} value, directories that do
not contain any files to be checked in will not be listed in the
-@samp{*cvs*} buffer.@refill
+@file{*cvs*} buffer.
@item cvs-auto-revert
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 defaults to @samp{t}. @xref{Committing changes}.@refill
+This variable defaults to @samp{t}. @xref{Committing changes}.
@item cvs-update-prog-output-skip-regexp
The @samp{-u} flag in the @file{modules} file can be used to run a command
@item log-edit-require-final-newline
@c wordy to avoid underfull hbox
When you enter a log message by typing into the
-@samp{*cvs-commit-message*} buffer, PCL-CVS normally automatically
+@file{*cvs-commit-message*} buffer, PCL-CVS normally automatically
inserts 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
@vindex cvs-msg (face)
PCL-CVS adds a few extra features, including menus, mouse bindings, and
-fontification of the @samp{*cvs*} buffer. The faces defined for
+fontification of the @file{*cvs*} buffer. The faces defined for
fontification are listed below:
@table @samp
@table @asis
@item Unexpected output from CVS
Unexpected output from CVS may confuse PCL-CVS@. It will create
-warning messages in the @samp{*cvs*} buffer alerting you to any parse errors.
+warning messages in the @file{*cvs*} buffer alerting you to any parse errors.
If you get these messages, please send a bug report to the email
-addresses listed above. Include the contents of the @samp{*cvs*} buffer, the
-output of the CVS process (which should be found in the @samp{ *cvs-tmp*}
+addresses listed above. Include the contents of the @file{*cvs*} buffer, the
+output of the CVS process (which should be found in the @file{ *cvs-tmp*}
buffer), and the versions of Emacs, PCL-CVS and CVS you are using.
@end table