of prompting for the file name in the minibuffer. On Unix and
GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and
Motif toolkits; on MS-Windows, the GUI version does that by default.
-For information on how to customize this, see @xref{Dialog Boxes}.
+For information on how to customize this, see @ref{Dialog Boxes}.
Secondly, Emacs supports the ``drag and drop'' protocol on the X
window system. Dropping a file into an ordinary Emacs window visits
SCCS only if for some reason you cannot use RCS, or one of the
higher-level systems such as CVS or GNU Arch.
+In the following, we discuss mainly RCS, SCCS and CVS. Nearly
+everything said about CVS applies to Gnu Arch, Subversion and Meta-CVS
+as well.
+
@node VC Concepts
@subsubsection Concepts of Version Control
since you began editing it, and when this happens, his changes will be
effectively removed when you check in your version (though they will
remain in the master file, so they will not be entirely lost). You must
-therefore verify the current version is unchanged, before you check in your
-changes. We hope to eliminate this risk and provide automatic merging
-with RCS in a future Emacs version.
+therefore verify that the current version is unchanged, before you
+check in your changes. We hope to eliminate this risk and provide
+automatic merging with RCS in a future Emacs version.
In addition, locking is possible with RCS even in this mode, although
it is not required; @kbd{C-x v v} with an unmodified file locks the
that appears first in @code{vc-handled-backends} (@pxref{Customizing VC}).
On the other hand, if there are no files already registered,
Emacs uses the first system from @code{vc-handled-backends} that could
-register the file---for example, you cannot register a file under CVS if
-its directory is not already part of a CVS tree.
-
- With the default value of @code{vc-handled-backends}, this means
-that Emacs uses RCS if there are any files under RCS control, CVS if
-there are any files under CVS, SCCS if any files are under SCCS, or
-RCS as the ultimate default.
+register the file (for example, you cannot register a file under CVS if
+its directory is not already part of a CVS tree); with the default
+value of @code{vc-handled-backends}, this means that Emacs uses RCS in
+this situation.
If locking is in use, @kbd{C-x v i} leaves the file unlocked and
read-only. Type @kbd{C-x v v} if you wish to start editing it. After
If it operates on more than one file, it handles each file according to
its current state; thus, it might lock one file, but check in another
file. This could be confusing; it is up to you to avoid confusing
-behavior by marking a set of files that are in a similar state.
+behavior by marking a set of files that are in a similar state. If no
+files are marked, @kbd{v v} operates on the file in the current line.
If any files call for check-in, @kbd{v v} reads a single log entry,
then uses it for all the files being checked in. This is convenient for
features. Each such independent line of development is called a
@dfn{branch}. VC allows you to create branches, switch between
different branches, and merge changes from one branch to another.
-Please note, however, that branches are only supported for RCS at the
-moment.
+Please note, however, that branches are not supported for SCCS.
A file's main line of development is usually called the @dfn{trunk}.
The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc. At
correspond to those of CVS. Technically, this is not a problem, but
it can become difficult to keep track of what is in the CVS repository
and what is not. So we suggest that you return from time to time to
-CVS-only operation, using @kbd{C-u C-x v v cvs @key{RET}}.
+CVS-only operation, by committing your local changes back to the
+repository using @kbd{C-u C-x v v cvs @key{RET}}.
@node Snapshots
@subsection Snapshots
Insert headers in a file for use with your version-control system.
@end table
-@vindex vc-header-alist
+@vindex vc-@var{backend}-header
The default header string is @samp{@w{$}Id$} for RCS and
@samp{@w{%}W%} for SCCS. You can specify other headers to insert by
-setting the variable @code{vc-header-alist}. Its value is a list of
-elements of the form @code{(@var{program} . @var{string})} where
-@var{program} is @code{RCS} or @code{SCCS} and @var{string} is the
-string to use.
+setting the variables @code{vc-@var{backend}-header} where
+@var{backend} is @code{rcs} or @code{sccs}.
Instead of a single string, you can specify a list of strings; then
each string in the list is inserted as a separate header on a line of
@var{regexp} matches the buffer name, @var{format} is inserted as part
of the header. A header line is inserted for each element that matches
the buffer name, and for each string specified by
-@code{vc-header-alist}. The header line is made by processing the
-string from @code{vc-header-alist} with the format taken from the
+@code{vc-@var{backend}-header}. The header line is made by processing the
+string from @code{vc-@var{backend}-header} with the format taken from the
element. The default value for @code{vc-static-header-alist} is as follows:
@example
@vindex vc-handled-backends
The variable @code{vc-handled-backends} determines which version
control systems VC should handle. The default value is @code{(RCS CVS
-SCCS)}, so it contains all three version systems that are currently
-supported. If you want VC to ignore one or more of these systems,
-exclude its name from the list. To disable VC entirely, set this
-variable to @code{nil}.
+SVN SCCS Arch MCVS)}, so it contains all six version systems that are
+currently supported. If you want VC to ignore one or more of these
+systems, exclude its name from the list. To disable VC entirely, set
+this variable to @code{nil}.
The order of systems in the list is significant: when you visit a file
registered in more than one system (@pxref{Local Version Control}),
@key{RET}}, @pxref{Merging}).
@vindex vc-cvs-global-switches
- The variable @code{vc-cvs-global-switches} should be a string
-specifying switches to pass to CVS for all CVS operations.
+ The variable @code{vc-cvs-global-switches}, if non-@code{nil},
+should be a string specifying switches to pass to CVS for all CVS
+operations.
When @code{vc-cvs-stay-local} is @code{t}, VC also makes local
version backups, so that simple diff and revert operations are
With a numeric argument, @code{compare-windows} ignores changes in
whitespace. If the variable @code{compare-ignore-case} is
non-@code{nil}, the comparison ignores differences in case as well.
-If the variable @code{compare-ignore-whitespace} is non-nil,
+If the variable @code{compare-ignore-whitespace} is non-@code{nil},
@code{compare-windows} normally ignores changes in whitespace, and a
prefix argument turns that off.