Improve documentation of VC commands, including in Dired
* doc/emacs/dired.texi (Operating on Files): * doc/emacs/maintaining.texi (VC Change Log, VC Directory Mode) (Version Control, Basic VC Editing): Document VC command invocation from Dired buffers. Improve documentation of vc-log commands. * lisp/dired-aux.el (dired-vc-next-action): * lisp/vc/vc.el (vc-print-log, vc-log-search, vc-log-mergebase) (vc-log-view-type, vc-print-root-log, vc-next-action): Doc fixes.
This commit is contained in:
parent
990f402713
commit
5286111ea1
4 changed files with 101 additions and 35 deletions
|
@ -715,6 +715,10 @@ Otherwise, the command operates on the current file only.
|
||||||
Certain other Dired commands, such as @kbd{!} and the @samp{%}
|
Certain other Dired commands, such as @kbd{!} and the @samp{%}
|
||||||
commands, use the same conventions to decide which files to work on.
|
commands, use the same conventions to decide which files to work on.
|
||||||
|
|
||||||
|
In addition to Dired commands described here, you can also invoke
|
||||||
|
Version Control (VC) commands on one or more files shown in a Dired
|
||||||
|
buffer. @xref{Version Control}.
|
||||||
|
|
||||||
@vindex dired-dwim-target
|
@vindex dired-dwim-target
|
||||||
@cindex two directories (in Dired)
|
@cindex two directories (in Dired)
|
||||||
Commands which ask for a destination directory, such as those which
|
Commands which ask for a destination directory, such as those which
|
||||||
|
|
|
@ -94,6 +94,20 @@ is useful when you perform version control commands outside Emacs
|
||||||
different version control system, or remove it from version control
|
different version control system, or remove it from version control
|
||||||
entirely.
|
entirely.
|
||||||
|
|
||||||
|
@cindex VC commands, in Dired buffers
|
||||||
|
@cindex filesets, VC, in Dired buffers
|
||||||
|
VC is also enabled automatically in Dired buffers (@pxref{Dired})
|
||||||
|
showing directories whose files are controlled by a VCS@. All VC
|
||||||
|
commands described in this section can be invoked from any Dired
|
||||||
|
buffer showing a directory with VC-controlled files; any files that
|
||||||
|
are marked in a Dired buffer (@pxref{Marks vs Flags}) are considered
|
||||||
|
to belong to the current fileset, and VC commands operate on the files
|
||||||
|
in this fileset. This allows you to construct VC filesets including
|
||||||
|
any files you want, regardless of their VC state. (If no files are
|
||||||
|
marked when a VC command is invoked from a Dired buffer, the file
|
||||||
|
shown on the current line in the buffer is considered the only file in
|
||||||
|
the fileset.)
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Introduction to VC:: How version control works in general.
|
* Introduction to VC:: How version control works in general.
|
||||||
* VC Mode Line:: How the mode line shows version control status.
|
* VC Mode Line:: How the mode line shows version control status.
|
||||||
|
@ -471,9 +485,10 @@ collection of one or more files that a VC operation acts on. When you
|
||||||
type VC commands in a buffer visiting a version-controlled file, the
|
type VC commands in a buffer visiting a version-controlled file, the
|
||||||
VC fileset is simply that one file. When you type them in a VC
|
VC fileset is simply that one file. When you type them in a VC
|
||||||
Directory buffer, and some files in it are marked, the VC fileset
|
Directory buffer, and some files in it are marked, the VC fileset
|
||||||
consists of the marked files (@pxref{VC Directory Mode}). The VC
|
consists of the marked files (@pxref{VC Directory Mode}). Likewise,
|
||||||
fileset also consists of the marked files in a Dired buffer
|
when you invoke a VC command from a Dired buffer, the VC fileset
|
||||||
(@pxref{Dired}).
|
consists of the marked files (@pxref{Marks vs Flags}), defaulting to
|
||||||
|
the file shown on the current line if no files are marked.
|
||||||
|
|
||||||
On modern changeset-based version control systems (@pxref{VCS
|
On modern changeset-based version control systems (@pxref{VCS
|
||||||
Changesets}), VC commands handle multi-file VC filesets as a group.
|
Changesets}), VC commands handle multi-file VC filesets as a group.
|
||||||
|
@ -497,7 +512,9 @@ action on the current VC fileset: either registering it with a version
|
||||||
control system, or committing it, or unlocking it, or merging changes
|
control system, or committing it, or unlocking it, or merging changes
|
||||||
into it. The precise actions are described in detail in the following
|
into it. The precise actions are described in detail in the following
|
||||||
subsections. You can use @kbd{C-x v v} either in a file-visiting
|
subsections. You can use @kbd{C-x v v} either in a file-visiting
|
||||||
buffer, in a Dired buffer, or in a VC Directory buffer.
|
buffer, in a Dired buffer, or in a VC Directory buffer; in the latter
|
||||||
|
two cases the command operates on the fileset consisting of the marked
|
||||||
|
files.
|
||||||
|
|
||||||
Note that VC filesets are distinct from the named filesets used
|
Note that VC filesets are distinct from the named filesets used
|
||||||
for viewing and visiting files in functional groups
|
for viewing and visiting files in functional groups
|
||||||
|
@ -1002,16 +1019,25 @@ Search the change history for a specified pattern.
|
||||||
@findex vc-print-log
|
@findex vc-print-log
|
||||||
@kbd{C-x v l} (@code{vc-print-log}) displays a buffer named
|
@kbd{C-x v l} (@code{vc-print-log}) displays a buffer named
|
||||||
@file{*vc-change-log*}, showing the history of changes made to the
|
@file{*vc-change-log*}, showing the history of changes made to the
|
||||||
current file, including who made the changes, the dates, and the log
|
current fileset in the long form, including who made the changes, the
|
||||||
entry for each change (these are the same log entries you would enter
|
dates, and the log entry for each change (these are the same log
|
||||||
via the @file{*vc-log*} buffer; @pxref{Log Buffer}). Point is
|
entries you would enter via the @file{*vc-log*} buffer; @pxref{Log
|
||||||
centered at the revision of the file currently being visited. With a
|
Buffer}). When invoked from a buffer visiting a file, the current
|
||||||
prefix argument, the command prompts for the revision to center on,
|
fileset consists of that single file, and point in the displayed
|
||||||
and the maximum number of revisions to display.
|
@file{*vc-change-log*} buffer is centered at the revision of that
|
||||||
|
file. When invoked from a VC Directory buffer (@pxref{VC Directory
|
||||||
|
Mode}) or from a Dired buffer (@pxref{Dired}), the fileset consists of
|
||||||
|
all the marked files, defaulting to the file shown on the current line
|
||||||
|
in the directory buffer if no file is marked.
|
||||||
|
|
||||||
If you call @kbd{C-x v l} from a VC Directory buffer (@pxref{VC
|
If the fileset includes one or more directories, the resulting
|
||||||
Directory Mode}) or a Dired buffer (@pxref{Dired}), it applies to the
|
@file{*vc-change-log*} buffer shows a short log of changes (one line
|
||||||
file listed on the current line or to all the marked files.
|
for each change), if the VC backend supports that; otherwise it shows
|
||||||
|
the log in the long form.
|
||||||
|
|
||||||
|
With a prefix argument, the command prompts for the revision to
|
||||||
|
center on in the @file{*vc-change-log*} buffer and for the maximum
|
||||||
|
number of revisions to display.
|
||||||
|
|
||||||
@kindex C-x v L
|
@kindex C-x v L
|
||||||
@findex vc-print-root-log
|
@findex vc-print-root-log
|
||||||
|
@ -1217,6 +1243,11 @@ called PCL-CVS which is specialized for CVS@. @xref{Top, , About
|
||||||
PCL-CVS, pcl-cvs, PCL-CVS---The Emacs Front-End to CVS}.
|
PCL-CVS, pcl-cvs, PCL-CVS---The Emacs Front-End to CVS}.
|
||||||
@end ifnottex
|
@end ifnottex
|
||||||
|
|
||||||
|
You can also invoke VC commands from Dired buffers (@pxref{Dired}).
|
||||||
|
In that case, any VC command you invoke considers the marked files as
|
||||||
|
the current fileset (@pxref{Basic VC Editing}), defaulting to the file
|
||||||
|
on the current line if no files are marked.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Buffer: VC Directory Buffer. What the buffer looks like and means.
|
* Buffer: VC Directory Buffer. What the buffer looks like and means.
|
||||||
* Commands: VC Directory Commands. Commands to use in a VC directory buffer.
|
* Commands: VC Directory Commands. Commands to use in a VC directory buffer.
|
||||||
|
|
|
@ -3741,12 +3741,21 @@ of the target of the link instead."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun dired-vc-next-action (verbose)
|
(defun dired-vc-next-action (verbose)
|
||||||
"Do the next version control operation on marked files/directories.
|
"Do the next logical version control operation on marked files/directories.
|
||||||
When only files are marked then call `vc-next-action' with the
|
The VC control operation will operate on a fileset which includes
|
||||||
same value of the VERBOSE argument.
|
the marked files/directories. If no files/directories are marked, the
|
||||||
When also directories are marked then call `vc-dir' and mark
|
fileset will include the single file/directory shown on the current line.
|
||||||
the same files/directories in the VC-Dir buffer that were marked
|
|
||||||
in the Dired buffer."
|
If only regular files are in the fileset, call `vc-next-action' with
|
||||||
|
the same value of the VERBOSE argument (interactively, the prefix
|
||||||
|
argument).
|
||||||
|
|
||||||
|
If one or more directories are in the fileset, start `vc-dir' in the root
|
||||||
|
directory of the repository that includes the current directory, with
|
||||||
|
the same files/directories marked in the VC-Directory buffer that were
|
||||||
|
marked in the original Dired buffer. If the current directory doesn't
|
||||||
|
belong to a VCS repository, prompt for a repository directory. In this
|
||||||
|
case, the VERBOSE argument is ignored."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(let* ((marked-files
|
(let* ((marked-files
|
||||||
(dired-get-marked-files nil nil nil nil t))
|
(dired-get-marked-files nil nil nil nil t))
|
||||||
|
|
|
@ -1239,7 +1239,11 @@ For old-style locking-based version control systems, like RCS:
|
||||||
|
|
||||||
When using this command to register a new file (or files), it
|
When using this command to register a new file (or files), it
|
||||||
will automatically deduce which VC repository to register it
|
will automatically deduce which VC repository to register it
|
||||||
with, using the most specific one."
|
with, using the most specific one.
|
||||||
|
|
||||||
|
If VERBOSE is non-nil (interactively, the prefix argument),
|
||||||
|
you can specify a VC backend or (for centralized VCS only)
|
||||||
|
the revision ID or branch ID."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(let* ((vc-fileset (vc-deduce-fileset nil t 'state-model-only-files))
|
(let* ((vc-fileset (vc-deduce-fileset nil t 'state-model-only-files))
|
||||||
(backend (car vc-fileset))
|
(backend (car vc-fileset))
|
||||||
|
@ -2696,7 +2700,16 @@ earlier revisions. Show up to LIMIT entries (non-nil means unlimited)."
|
||||||
is-start-revision limit type)))))
|
is-start-revision limit type)))))
|
||||||
|
|
||||||
(defvar vc-log-view-type nil
|
(defvar vc-log-view-type nil
|
||||||
"Set this to differentiate the different types of logs.")
|
"Set this to record the type of VC log shown in the current buffer.
|
||||||
|
Supported values are:
|
||||||
|
|
||||||
|
`short' -- short log form, one line for each commit
|
||||||
|
`long' -- long log form, including full log message and author
|
||||||
|
`with-diff' -- log including diffs
|
||||||
|
`log-outgoing' -- log of changes to be pushed to upstream
|
||||||
|
`log-incoming' -- log of changes to be brought by pulling from upstream
|
||||||
|
`log-search' -- log entries matching a pattern; shown in long format
|
||||||
|
`mergebase' -- log created by `vc-log-mergebase'.")
|
||||||
(put 'vc-log-view-type 'permanent-local t)
|
(put 'vc-log-view-type 'permanent-local t)
|
||||||
(defvar vc-sentinel-movepoint)
|
(defvar vc-sentinel-movepoint)
|
||||||
|
|
||||||
|
@ -2753,13 +2766,20 @@ Each function runs in the log output buffer without args.")
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun vc-print-log (&optional working-revision limit)
|
(defun vc-print-log (&optional working-revision limit)
|
||||||
"List the change log of the current fileset in a window.
|
"Show in another window the VC change history of the current fileset.
|
||||||
If WORKING-REVISION is non-nil, leave point at that revision.
|
If WORKING-REVISION is non-nil, it should be a revision ID; position
|
||||||
|
point in the change history buffer at that revision.
|
||||||
If LIMIT is non-nil, it should be a number specifying the maximum
|
If LIMIT is non-nil, it should be a number specifying the maximum
|
||||||
number of revisions to show; the default is `vc-log-show-limit'.
|
number of revisions to show; the default is `vc-log-show-limit'.
|
||||||
|
|
||||||
When called interactively with a prefix argument, prompt for
|
When called interactively with a prefix argument, prompt for
|
||||||
WORKING-REVISION and LIMIT."
|
WORKING-REVISION and LIMIT.
|
||||||
|
|
||||||
|
This shows a short log (one line for each commit) if the current
|
||||||
|
fileset includes directories and the VC backend supports that;
|
||||||
|
otherwise it shows the detailed log of each commit, which includes
|
||||||
|
the full log message and the author. Additional control of the
|
||||||
|
shown log style is available via `vc-log-short-style'."
|
||||||
(interactive
|
(interactive
|
||||||
(cond
|
(cond
|
||||||
(current-prefix-arg
|
(current-prefix-arg
|
||||||
|
@ -2784,14 +2804,14 @@ WORKING-REVISION and LIMIT."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun vc-print-root-log (&optional limit revision)
|
(defun vc-print-root-log (&optional limit revision)
|
||||||
"List the revision history for the current VC controlled tree in a window.
|
"Show in another window VC change history of the current VC controlled tree.
|
||||||
If LIMIT is non-nil, it should be a number specifying the maximum
|
If LIMIT is non-nil, it should be a number specifying the maximum
|
||||||
number of revisions to show; the default is `vc-log-show-limit'.
|
number of revisions to show; the default is `vc-log-show-limit'.
|
||||||
When called interactively with a prefix argument, prompt for LIMIT.
|
When called interactively with a prefix argument, prompt for LIMIT, but
|
||||||
When the prefix argument is a number, use it as LIMIT.
|
if the prefix argument is a number, use it as LIMIT.
|
||||||
A special case is when the prefix argument is 1: in this case
|
A special case is when the prefix argument is 1: in this case
|
||||||
the command asks for the ID of a revision, and shows that revision
|
the command prompts for the ID of a revision, and shows that revision
|
||||||
with its diffs (if the underlying VCS supports that)."
|
with its diffs (if the underlying VCS backend supports that)."
|
||||||
(interactive
|
(interactive
|
||||||
(cond
|
(cond
|
||||||
((eq current-prefix-arg 1)
|
((eq current-prefix-arg 1)
|
||||||
|
@ -2875,15 +2895,17 @@ In some version control systems REMOTE-LOCATION can be a remote branch name."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun vc-log-search (pattern)
|
(defun vc-log-search (pattern)
|
||||||
"Search the log of changes for PATTERN.
|
"Search the VC log of changes for PATTERN and show log of matching changes.
|
||||||
|
|
||||||
PATTERN is usually interpreted as a regular expression. However, its
|
PATTERN is usually interpreted as a regular expression. However, its
|
||||||
exact semantics is up to the backend's log search command; some can
|
exact semantics is up to the backend's log search command; some can
|
||||||
only match fixed strings.
|
only match fixed strings.
|
||||||
|
|
||||||
Display all entries that match log messages in long format.
|
This command displays in long format all the changes whose log messages
|
||||||
With a prefix argument, ask for a command to run that will output
|
match PATTERN.
|
||||||
log entries."
|
|
||||||
|
With a prefix argument, the command asks for a shell command to run that
|
||||||
|
will output log entries, and displays those log entries instead."
|
||||||
(interactive (list (unless current-prefix-arg
|
(interactive (list (unless current-prefix-arg
|
||||||
(read-regexp "Search log with pattern: "))))
|
(read-regexp "Search log with pattern: "))))
|
||||||
(let ((backend (vc-deduce-backend)))
|
(let ((backend (vc-deduce-backend)))
|
||||||
|
@ -2894,8 +2916,8 @@ log entries."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun vc-log-mergebase (_files rev1 rev2)
|
(defun vc-log-mergebase (_files rev1 rev2)
|
||||||
"Show a log of changes between the merge base of REV1 and REV2 revisions.
|
"Show a log of changes between the merge base of revisions REV1 and REV2.
|
||||||
The merge base is a common ancestor between REV1 and REV2 revisions."
|
The merge base is a common ancestor of revisions REV1 and REV2."
|
||||||
(interactive
|
(interactive
|
||||||
(vc-diff-build-argument-list-internal
|
(vc-diff-build-argument-list-internal
|
||||||
(or (ignore-errors (vc-deduce-fileset t))
|
(or (ignore-errors (vc-deduce-fileset t))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue