Clean up recent VC updates.
This commit is contained in:
parent
12f1370484
commit
7d5e745e86
1 changed files with 180 additions and 173 deletions
353
man/files.texi
353
man/files.texi
|
@ -1061,9 +1061,8 @@ file just once. Version control systems also record history information
|
|||
such as the creation time of each version, who created it, and a
|
||||
description of what was changed in that version.
|
||||
|
||||
The Emacs version control interface is called VC. It allows you to
|
||||
use various version control systems from within
|
||||
Emacs---currently, it supports RCS, CVS, and SCCS. The GNU
|
||||
The Emacs version control interface is called VC. Its commands work
|
||||
with three version control systems---RCS, CVS, and SCCS. The GNU
|
||||
project recommends RCS and CVS, which are free software and available
|
||||
from the Free Software Foundation. We also have free software to
|
||||
replace SCCS, known as CSSC; if you are using SCCS and don't want to
|
||||
|
@ -1226,7 +1225,7 @@ RCS normally use locking; CVS normally does not use locking.
|
|||
@menu
|
||||
* VC with Locking:: RCS in its default mode, SCCS, and optionally CVS.
|
||||
* Without Locking:: Without locking: default mode for CVS.
|
||||
* Extended Actions:: Avanced features available with a prefix argument.
|
||||
* Extended C-x C-q:: Advanced features available with a prefix argument.
|
||||
* Log Buffer:: Features available in log entry buffers.
|
||||
@end menu
|
||||
|
||||
|
@ -1274,11 +1273,11 @@ work file.
|
|||
|
||||
@itemize @bullet
|
||||
@item
|
||||
If some other user has checked in changes into the master file,
|
||||
Emacs asks you whether you want to merge those changes into your own
|
||||
work file. You must do this before you can check in
|
||||
your own changes. (To pick up any recent changes from the master file
|
||||
@emph{without} trying to commit your own changes, type @kbd{C-x v m RET}.)
|
||||
If some other user has checked in changes into the master file, Emacs
|
||||
asks you whether you want to merge those changes into your own work
|
||||
file. You must do this before you can check in your own changes. (To
|
||||
pick up any recent changes from the master file @emph{without} trying
|
||||
to commit your own changes, type @kbd{C-x v m @key{RET}}.)
|
||||
@xref{Merging}.
|
||||
|
||||
@item
|
||||
|
@ -1306,29 +1305,33 @@ with RCS in a future Emacs version.
|
|||
it is not required; @kbd{C-x C-q} with an unmodified file locks the
|
||||
file, just as it does with RCS in its normal (locking) mode.
|
||||
|
||||
@node Extended Actions
|
||||
@subsubsection Calling @code{vc-next-action} with a Prefix Argument
|
||||
@node Advanced C-x C-q
|
||||
@subsubsection Advanced Control in @kbd{C-x C-q}
|
||||
|
||||
When you give a prefix argument to @code{vc-next-action} (@kbd{C-u C-x
|
||||
C-q}), it still performs the next logical version control operation, but
|
||||
in an extended sense.
|
||||
When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
|
||||
C-x C-q}), it still performs the next logical version control
|
||||
operation, but accepts additional arguments to specify precisely how
|
||||
to do the operation.
|
||||
|
||||
@itemize @bullet
|
||||
@item If the file is modified (or locked), you can specify the version
|
||||
number that should be used for check-in. This is also one way to create
|
||||
a new branch (@pxref{Branches}).
|
||||
@item
|
||||
If the file is modified (or locked), you can specify the version
|
||||
number to use for the new verion that you check-in. This is one way
|
||||
to create a new branch (@pxref{Branches}).
|
||||
|
||||
@item If the file is not modified (and unlocked), you can specify a new
|
||||
version to go to; this lets you start working from an older version, or
|
||||
on another branch. If you do not enter any version, that takes you to
|
||||
the highest version on the current branch; therefore @kbd{C-u C-x C-q
|
||||
RET} is a convenient way to get the latest version of a file from the
|
||||
repository.
|
||||
@item
|
||||
If the file is not modified (and unlocked), you can specify the
|
||||
version to select; this lets you start working from an older version,
|
||||
or on another branch. If you do not enter any version, that takes you
|
||||
to the highest version on the current branch; therefore @kbd{C-u C-x
|
||||
C-q @key{RET}} is a convenient way to get the latest version of a file from
|
||||
the repository.
|
||||
|
||||
@item Regardless of the state of the file, you can also enter the name
|
||||
of another version control system instead of a version number. This
|
||||
lets you use more than one version control system for a file
|
||||
(@pxref{Local Version Control}).
|
||||
@item
|
||||
Instead of the version number, you can also specify the name of a
|
||||
version control system. This is useful when one file is being managed
|
||||
with two version control systems at the same time file (@pxref{Local
|
||||
Version Control}).
|
||||
@end itemize
|
||||
|
||||
@node Log Buffer
|
||||
|
@ -1393,33 +1396,33 @@ and create a branch from it. @xref{Branches}.)
|
|||
It is usually more convenient to compare two versions of the file,
|
||||
with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =}
|
||||
compares the current buffer contents (saving them in the file if
|
||||
necessary) with the last checked-in version of the file. @kbd{C-u C-x v
|
||||
=}, with a numeric argument, reads a file name and two version numbers,
|
||||
then compares those versions of the specified file.
|
||||
|
||||
If you supply a directory name instead of the name of a registered
|
||||
file, this command compares the two specified versions of all registered
|
||||
files in that directory and its subdirectories.
|
||||
necessary) with the last checked-in version of the file. @kbd{C-u C-x
|
||||
v =}, with a numeric argument, reads a file name and two version
|
||||
numbers, then compares those versions of the specified file. Both
|
||||
forms display the output in a special buffer in another window.
|
||||
|
||||
You can specify a checked-in version by its number; an empty input
|
||||
specifies the current contents of the work file (which may be different
|
||||
from all the checked-in versions). You can also specify a snapshot name
|
||||
(@pxref{Snapshots}) instead of one or both version numbers.
|
||||
|
||||
If you supply a directory name instead of the name of a registered
|
||||
file, this command compares the two specified versions of all registered
|
||||
files in that directory and its subdirectories.
|
||||
|
||||
@vindex diff-switches
|
||||
@vindex vc-diff-switches
|
||||
This command works by running a variant of the @code{diff} utility
|
||||
that is specific to the version control system in use. Emacs passes the
|
||||
contents of the variable @code{diff-switches} to that utility; you can
|
||||
define specific options for version control in @code{vc-diff-switches},
|
||||
and there are similar variables for each specific system,
|
||||
e.g. @code{vc-rcs-diff-switches}, and the like.
|
||||
@kbd{C-x v =} works by running a variant of the @code{diff} utility
|
||||
designed to work with the version control system in use. Emacs passes
|
||||
the contents of the variable @code{diff-switches} to it; you can
|
||||
specify comparison options for version control in
|
||||
@code{vc-diff-switches}, and there are similar variables for each
|
||||
specific system---@code{vc-rcs-diff-switches}, and so on.
|
||||
|
||||
The output of the @code{diff} command is displayed in a special buffer
|
||||
in another window. Unlike the @kbd{M-x diff} command, @kbd{C-x v =}
|
||||
does not try to locate the changes in the old and new versions. This is
|
||||
because normally one or both versions do not exist as files when you
|
||||
compare them; they exist only in the records of the master file.
|
||||
Unlike the @kbd{M-x diff} command, @kbd{C-x v =} does not try to
|
||||
locate the changes in the old and new versions. This is because
|
||||
normally one or both versions do not exist as files when you compare
|
||||
them; they exist only in the records of the master file.
|
||||
@xref{Comparing Files}, for more information about @kbd{M-x diff}.
|
||||
|
||||
@findex vc-annotate
|
||||
|
@ -1469,9 +1472,8 @@ 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 @var{vc-handled-backends}, this means that
|
||||
Emacs uses RCS if there are any files under RCS control, and CVS if
|
||||
there are any files under CVS. If there are no files under version
|
||||
control, RCS is used.
|
||||
Emacs uses RCS if there are any files under RCS control, or CVS if
|
||||
there are any files under CVS, or RCS as the ultimate default.
|
||||
|
||||
If locking is in use, @kbd{C-x v i} leaves the file unlocked and
|
||||
read-only. Type @kbd{C-x C-q} if you wish to start editing it. After
|
||||
|
@ -1722,7 +1724,7 @@ locked.
|
|||
|
||||
You can omit the minor version number, thus giving only the branch
|
||||
number; this takes you to the head version on the chosen branch. If you
|
||||
only type @kbd{RET}, Emacs goes to the highest version on the trunk.
|
||||
only type @key{RET}, Emacs goes to the highest version on the trunk.
|
||||
|
||||
After you have switched to any branch (including the main branch), you
|
||||
stay on it for subsequent VC commands, until you explicitly select some
|
||||
|
@ -1781,7 +1783,7 @@ Merge changes into the work file.
|
|||
@kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it
|
||||
into the current version of the work file. It firsts asks you in the
|
||||
minibuffer where the changes should come from. If you just type
|
||||
@kbd{RET}, Emacs merges any changes that were made on the same branch
|
||||
@key{RET}, Emacs merges any changes that were made on the same branch
|
||||
since you checked the file out (we call this @dfn{merging the news}).
|
||||
This is the common way to pick up recent changes from the repository,
|
||||
regardless of whether you have already changed the file yourself.
|
||||
|
@ -1795,9 +1797,9 @@ of the current file.
|
|||
branch 1.3.1. In the meantime, development on the trunk has proceeded
|
||||
to version 1.5. To merge the changes from the branch to the trunk,
|
||||
first go to the head version of the trunk, by typing @kbd{C-u C-x C-q
|
||||
RET}. Version 1.5 is now current. If locking is used for the file,
|
||||
@key{RET}}. Version 1.5 is now current. If locking is used for the file,
|
||||
type @kbd{C-x C-q} to lock version 1.5 so that you can change it. Next,
|
||||
type @kbd{C-x v m 1.3.1 RET}. This takes the entire set of changes on
|
||||
type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on
|
||||
branch 1.3.1 (relative to version 1.3, where the branch started, up to
|
||||
the last version on the branch) and merges it into the current version
|
||||
of the work file. You can now check in the changed file, thus creating
|
||||
|
@ -1867,16 +1869,15 @@ during this particular editing session.
|
|||
@subsection Remote Repositories
|
||||
@cindex remote repositories (CVS)
|
||||
|
||||
Many projects set up a central CVS repository somewhere in the Internet,
|
||||
and let each user check out a personal working copy of the files to
|
||||
his local machine. Committing changes to the repository, and picking
|
||||
up changes from other users into one's own working area, then works by
|
||||
direct interactions with the CVS server.
|
||||
A common way of using CVS is to set up a central CVS repository on
|
||||
some Internet host, then have each developer check out a personal
|
||||
working copy of the files on his local machine. Committing changes to
|
||||
the repository, and picking up changes from other users into one's own
|
||||
working area, then works by direct interactions with the CVS server.
|
||||
|
||||
The problem is that access to the CVS server is often slow, and that
|
||||
developers might need to work offline as well. VC therefore offers
|
||||
some features that allow you to keep network interactions to a
|
||||
minimum.
|
||||
One difficulty is that access to the CVS server is often slow, and
|
||||
that developers might need to work offline as well. VC is designed
|
||||
to reduce the amount of network interaction necessary.
|
||||
|
||||
@menu
|
||||
* Version Backups:: Keeping local copies of repository versions.
|
||||
|
@ -1887,45 +1888,50 @@ minimum.
|
|||
@subsubsection Version Backups
|
||||
@cindex version backups
|
||||
|
||||
When VC sees that the CVS repository for a file is on a remote machine,
|
||||
it automatically makes local backups of unmodified versions of the file.
|
||||
This means that you can compare the file to the repository version
|
||||
(@kbd{C-x v =}), or revert to that version (@kbd{C-x v u}), without any
|
||||
network interactions.
|
||||
|
||||
The local copy of the unmodified file is called a @dfn{version backup}.
|
||||
This is to indicate that it corresponds exactly to a version that is
|
||||
stored in the repository. Note that version backups are related to,
|
||||
but distinct from the other kinds of backups that Emacs can make:
|
||||
single backups and numbered backups (@pxref{Backup}).
|
||||
|
||||
@vindex vc-cvs-stay-local
|
||||
For a file that comes from a remote CVS repository, VC makes a version
|
||||
backup whenever you save the first changes to the file, and removes it
|
||||
after you have committed your modified version to the repository. (You
|
||||
can switch this off by setting the variable @code{vc-cvs-stay-local} to
|
||||
@code{nil}.)
|
||||
|
||||
@cindex automatic version backups
|
||||
@cindex manual version backups
|
||||
The name of a version backup for a file named @var{file}, with version
|
||||
@var{version}, is @code{@var{file}.~@var{version}.~}. Note that this
|
||||
naming convention is almost the same as that used by @kbd{C-x v ~}
|
||||
(@pxref{Old Versions}), the only difference being the additional dot
|
||||
(@samp{.}) after the version number. This similarity is intentional,
|
||||
because both kinds of files store the same kind of information. To
|
||||
distinguish between them, we speak of @dfn{automatic version backups}
|
||||
(those created by the mechanism described here) and @dfn{manual version
|
||||
backups} (created by @kbd{C-x v ~}). Their primary difference is that
|
||||
Emacs deletes automatic version backups when you commit to the
|
||||
repository (this is why the trailing dot is needed to identify them),
|
||||
while manual version backups are never deleted automatically.
|
||||
When VC sees that the CVS repository for a file is on a remote
|
||||
machine, it automatically makes local backups of unmodified versions
|
||||
of the file---@dfn{automatic version backups}. This means that you
|
||||
can compare the file to the repository version (@kbd{C-x v =}), or
|
||||
revert to that version (@kbd{C-x v u}), without any network
|
||||
interactions.
|
||||
|
||||
Each of the two mechanisms can use the files created by the other one.
|
||||
For example, if you changed a file outside of Emacs, so that no
|
||||
automatic version backup was created, you can create a manual backup of
|
||||
that version using @kbd{C-x v ~}. Emacs will then use that file for
|
||||
local diff and revert operations.
|
||||
The local copy of the unmodified file is called a @dfn{version
|
||||
backup} to indicate that it corresponds exactly to a version that is
|
||||
stored in the repository. Note that version backups are not the same
|
||||
as ordinary Emacs backup files (@pxref{Backup}). But they follow a
|
||||
similar naming convention.
|
||||
|
||||
For a file that comes from a remote CVS repository, VC makes a
|
||||
version backup whenever you save the first changes to the file, and
|
||||
removes it after you have committed your modified version to the
|
||||
repository. You can disable the making of automatic version backups by
|
||||
setting @code{vc-cvs-stay-local} to @code{nil} (@pxref{CVS Options}).
|
||||
|
||||
@cindex manual version backups
|
||||
The name of the automatic version backup for version @var{version}
|
||||
of file @var{file} is @code{@var{file}.~@var{version}.~}. This is
|
||||
almost the same as the name used by @kbd{C-x v ~} (@pxref{Old
|
||||
Versions}), the only difference being the additional dot (@samp{.})
|
||||
after the version number. This similarity is intentional, because
|
||||
both kinds of files store the same kind of information. The file made
|
||||
by @kbd{C-x v ~} acts as a @dfn{manual version backup}.
|
||||
|
||||
All the VC commands that operate on old versions of a file can use
|
||||
both kinds of version backups. For instance, @kbd{C-x v ~} uses
|
||||
either an automatic or a manual version backup, if possible, to get
|
||||
the contents of the version you request. Likewise, @kbd{C-x v =} and
|
||||
@kbd{C-x v u} use either an automatic or a manual version backup, if
|
||||
one of them exists, to get the contents of a version to compare or
|
||||
revert to. If you changed a file outside of Emacs, so that no
|
||||
automatic version backup was created for the previous text, you can
|
||||
create a manual backup of that version using @kbd{C-x v ~}, and thus
|
||||
obtain the benefit of the local copy for Emacs commands.
|
||||
|
||||
The only difference in Emacs's handling of manual and automatic
|
||||
version backups, once they exist, is that Emacs deletes automatic
|
||||
version backups when you commit to the repository. By contrast,
|
||||
manual version backups remain until you delete them.
|
||||
|
||||
@node Local Version Control
|
||||
@subsubsection Local Version Control
|
||||
|
@ -1945,27 +1951,26 @@ that the remote system is CVS, and you use RCS locally, although the
|
|||
mechanism works with any combination of version control systems
|
||||
(@dfn{back ends}).
|
||||
|
||||
To make it work with other back ends, you must make sure that the "more
|
||||
local" back end comes before the "more remote" back end in the setting
|
||||
of @var{vc-handled-backends} (@pxref{Customizing VC}). By default, this
|
||||
variable is set up correctly so that you can use RCS and CVS as
|
||||
described here.
|
||||
To make it work with other back ends, you must make sure that the
|
||||
``more local'' back end comes before the ``more remote'' back end in
|
||||
the setting of @var{vc-handled-backends} (@pxref{Customizing VC}). By
|
||||
default, this variable is set up so that you can use remote CVS and
|
||||
local RCS as described here.
|
||||
|
||||
To start using local RCS for a file that comes from a remote CVS server,
|
||||
you must @dfn{commit the file to RCS}, by typing @kbd{C-u C-x v v rcs
|
||||
RET}. (In other words, @code{vc-next-action}, when called with a prefix
|
||||
argument, accepts a back end name in place of the version to commit to.)
|
||||
VC then registers the file under RCS.
|
||||
To start using local RCS for a file that comes from a remote CVS
|
||||
server, you must @emph{register the file in RCS}, by typing @kbd{C-u
|
||||
C-x v v rcs @key{RET}}. (In other words, use @code{vc-next-action} with a
|
||||
prefix argument, and specify RCS as the back end.)
|
||||
|
||||
You can commit to RCS at any time; it does not matter whether you have
|
||||
You can do this at any time; it does not matter whether you have
|
||||
already modified the file with respect to the version in the CVS
|
||||
repository. If possible, VC tries to make the RCS master start with
|
||||
the unmodified repository version, then checking in any local changes
|
||||
as a new version. This works if you have not made any changes yet,
|
||||
or if the unmodified repository version exists locally as a version
|
||||
as a new version. This works if you have not made any changes yet, or
|
||||
if the unmodified repository version exists locally as a version
|
||||
backup (@pxref{Version Backups}). If the unmodified version is not
|
||||
available locally, the RCS master starts with the modified version;
|
||||
the only problem with this is that you cannot compare your changes
|
||||
the only drawback of this is that you cannot compare your changes
|
||||
locally to what is stored in the repository.
|
||||
|
||||
The version number of the RCS master is derived from the current CVS
|
||||
|
@ -1973,55 +1978,61 @@ version, starting a branch from it. For example, if the current CVS
|
|||
version is 1.23, the local RCS branch will be 1.23.1. Version 1.23 in
|
||||
the RCS master will be identical to version 1.23 under CVS; your first
|
||||
changes are checked in as 1.23.1.1. (If the unmodified file is not
|
||||
available locally, VC will check-in the modified file twice, both as
|
||||
available locally, VC will check in the modified file twice, both as
|
||||
1.23 and 1.23.1.1, to make the revision numbers consistent.)
|
||||
|
||||
If you do not use locking under CVS (the default), locking is also
|
||||
switched off under RCS, so that editing under RCS works exactly as
|
||||
under CVS.
|
||||
disabled for RCS, so that editing under RCS works exactly as under
|
||||
CVS.
|
||||
|
||||
When you are done with your edits, you can commit the final version back
|
||||
to the CVS repository, typing @kbd{C-u C-x v v cvs RET}. Emacs will
|
||||
initialize the log entry buffer (@pxref{Log Buffer}) to contain all the
|
||||
check-in comments you have made in the RCS master; you can make changes
|
||||
to these comments as needed and then commit to CVS by typing @kbd{C-c
|
||||
C-c}. If the commit is successful, VC finally removes the RCS master,
|
||||
so that the file becomes once again registered under CVS only. (The RCS
|
||||
master is not actually deleted, but renamed by adding a @samp{~} to its
|
||||
name, so that you can get back to it later if you want.)
|
||||
When you are done with your edits, you can commit the final version
|
||||
back to the CVS repository, typing @kbd{C-u C-x v v cvs @key{RET}}. Emacs
|
||||
will initialize the log entry buffer (@pxref{Log Buffer}) to contain
|
||||
all the log entries you have recorded in the RCS master; you can make
|
||||
changes to these comments as needed, and then commit in CVS by typing
|
||||
@kbd{C-c C-c}. If the commit is successful, VC removes the RCS
|
||||
master, so that the file is once again registered under CVS only.
|
||||
(The RCS master is not actually deleted, just renamed by appending
|
||||
@samp{~} to the name, so that you can refer to it later if you wish.)
|
||||
|
||||
While you are working with a local RCS master, you might still want to
|
||||
While you are working with a local RCS master, you may still want to
|
||||
pick up recent changes from the CVS repository into your local file,
|
||||
or you might want to commit some of your changes back to CVS, without
|
||||
actually switching back to CVS completely. VC lets you do this by
|
||||
actually switching back to CVS completely. You can do this by
|
||||
switching to another backend temporarily.
|
||||
|
||||
@table @kbd
|
||||
@item C-x v b
|
||||
Switch to any other back end that the current file is registered
|
||||
Switch to another back end that the current file is registered
|
||||
under (@code{vc-switch-backend}).
|
||||
|
||||
@item C-u C-x v b @var{backend} @key{RET}
|
||||
Switch to @var{backend} for the current file.
|
||||
@end table
|
||||
|
||||
@kindex C-x v b
|
||||
@findex vc-switch-backend
|
||||
@kbd{C-x v b} does not change the buffer contents, or any files; it
|
||||
only changes VC's perspective on how to handle the file. Any
|
||||
subsequent VC commands for that file will operate on the back end that
|
||||
is currently selected.
|
||||
|
||||
If the current file is registered in more than one back end, typing
|
||||
@kbd{C-x v b} lets you ``cycle'' through these back ends. (With a prefix
|
||||
argument, it asks for the back end to use in the minibuffer.) This
|
||||
command does not change any files, it only changes VC's perspective of
|
||||
the file. Any other VC commands that you use on a file will operate on
|
||||
the back end that is currently selected.
|
||||
@kbd{C-x v b} ``cycles'' through all of these back ends. With a
|
||||
prefix argument, it asks for the back end to use in the minibuffer.
|
||||
|
||||
Thus, if you have a file under local RCS, and you want to pick up some
|
||||
recent changes from CVS, type @kbd{C-x v b} to switch to CVS, and then
|
||||
@kbd{C-x v m RET} to merge the news (@pxref{Merging}). You can then switch
|
||||
back to RCS by typing @kbd{C-x v b} again, and continue to edit locally.
|
||||
@kbd{C-x v m @key{RET}} to merge the news (@pxref{Merging}). You can
|
||||
then switch back to RCS by typing @kbd{C-x v b} again, and continue to
|
||||
edit locally.
|
||||
|
||||
Note though, that if you do this, the revision numbers in the RCS
|
||||
master no longer correspond to those of CVS in a meaningful way.
|
||||
Technically, this is not a problem, but it might be more difficult for
|
||||
you to keep track of what is in the repository and what is not. So we
|
||||
suggest that, frequently, you commit your changes back to CVS
|
||||
completely using @kbd{C-u C-x v v cvs RET}.
|
||||
completely using @kbd{C-u C-x v v cvs @key{RET}}.
|
||||
|
||||
@node Snapshots
|
||||
@subsection Snapshots
|
||||
|
@ -2172,9 +2183,8 @@ messages that start with `#'.}. Then @kbd{C-x v a} visits
|
|||
@noindent
|
||||
You can then edit the new change log entry further as you wish.
|
||||
|
||||
Unfortunately, timestamps in ChangeLog files are only dates, so some
|
||||
of the new change log entry may duplicate what's already in ChangeLog.
|
||||
You will have to remove these duplicates by hand.
|
||||
Some of the new change log entry may duplicate what's already in
|
||||
ChangeLog. You will have to remove these duplicates by hand.
|
||||
|
||||
Normally, the log entry for file @file{foo} is displayed as @samp{*
|
||||
foo: @var{text of log entry}}. The @samp{:} after @file{foo} is omitted
|
||||
|
@ -2391,10 +2401,9 @@ default. The order is also significant when you register a file for
|
|||
the first time, @pxref{Registering} for details.
|
||||
|
||||
@menu
|
||||
* General VC Options:: Options not specific for any back end system.
|
||||
* RCS Options:: Options for RCS.
|
||||
* General VC Options:: Options that apply to multiple back ends.
|
||||
* RCS and SCCS:: Options for RCS and SCCS.
|
||||
* CVS Options:: Options for CVS.
|
||||
* SCCS Options:: Options for SCCS.
|
||||
@end menu
|
||||
|
||||
@node General VC Options
|
||||
|
@ -2443,12 +2452,13 @@ additional messages when the commands finish.
|
|||
|
||||
@vindex vc-path
|
||||
You can specify additional directories to search for version control
|
||||
programs by setting the variable @code{vc-path}. These directories are
|
||||
searched before the usual search path. But the proper files are usually
|
||||
found automatically.
|
||||
programs by setting the variable @code{vc-path}. These directories
|
||||
are searched before the usual search path. It is rarely necessary to
|
||||
set this variable, because VC normally finds the proper files
|
||||
automatically.
|
||||
|
||||
@node RCS Options
|
||||
@subsubsection Options specific for RCS
|
||||
@node RCS and SCCS
|
||||
@subsubsection Options for RCS and SCCS
|
||||
|
||||
@cindex non-strict locking (RCS)
|
||||
@cindex locking, non-strict (RCS)
|
||||
|
@ -2456,10 +2466,10 @@ found automatically.
|
|||
users, but there is a mode called @dfn{non-strict locking} in which
|
||||
you can check-in changes without locking the file first. Use
|
||||
@samp{rcs -U} to switch to non-strict locking for a particular file,
|
||||
see the @samp{rcs(1)} manpage for details.
|
||||
see the @code{rcs} manpage for details.
|
||||
|
||||
When deducing the version control state of a file, VC first looks
|
||||
for an RCS version header string in the file (@pxref{Version
|
||||
When deducing the version control state of an RCS file, VC first
|
||||
looks for an RCS version header string in the file (@pxref{Version
|
||||
Headers}). If there is no header string, VC normally looks at the
|
||||
file permissions of the work file; this is fast. But there might be
|
||||
situations when the file permissions cannot be trusted. In this case
|
||||
|
@ -2471,8 +2481,8 @@ version.
|
|||
@vindex vc-consult-headers
|
||||
You can tell VC not to use version headers to determine the file
|
||||
status by setting @code{vc-consult-headers} to @code{nil}. VC then
|
||||
always uses the file permissions (if it can trust them), or else
|
||||
checks the master file.
|
||||
always uses the file permissions (if it is supposed to trust them), or
|
||||
else checks the master file.
|
||||
|
||||
@vindex vc-mistrust-permissions
|
||||
You can specify the criterion for whether to trust the file
|
||||
|
@ -2486,6 +2496,11 @@ permissions. If you find that the file permissions of work files are
|
|||
changed erroneously, set @code{vc-mistrust-permissions} to @code{t}.
|
||||
Then VC always checks the master file to determine the file's status.
|
||||
|
||||
VC determines the version control state of files under SCCS much as
|
||||
with RCS. It does not consider SCCS version headers, though. Thus,
|
||||
the variable @var{vc-mistrust-permissions} affects SCCS use, but
|
||||
@var{vc-consult-headers} does not.
|
||||
|
||||
@node CVS Options
|
||||
@subsubsection Options specific for CVS
|
||||
|
||||
|
@ -2496,14 +2511,15 @@ there are ways to restrict this, resulting in behavior that resembles
|
|||
locking.
|
||||
|
||||
@cindex CVSREAD environment variable (CVS)
|
||||
For one thing, you can set the @env{CVSREAD} environment variable to
|
||||
an arbitrary value. If this variable is defined, CVS makes your work
|
||||
files read-only by default. In Emacs, you must type @kbd{C-x C-q} to
|
||||
make the file writeable, so that editing works in fact similar as if
|
||||
locking was used. Note however, that no actual locking is performed, so
|
||||
several users can make their files writeable at the same time. When
|
||||
setting @env{CVSREAD} for the first time, make sure to check out all
|
||||
your modules anew, so that the file protections are set correctly.
|
||||
For one thing, you can set the @env{CVSREAD} environment variable
|
||||
(the value you use makes no difference). If this variable is defined,
|
||||
CVS makes your work files read-only by default. In Emacs, you must
|
||||
type @kbd{C-x C-q} to make the file writeable, so that editing works
|
||||
in fact similar as if locking was used. Note however, that no actual
|
||||
locking is performed, so several users can make their files writeable
|
||||
at the same time. When setting @env{CVSREAD} for the first time, make
|
||||
sure to check out all your modules anew, so that the file protections
|
||||
are set correctly.
|
||||
|
||||
@cindex cvs watch feature
|
||||
@cindex watching files (CVS)
|
||||
|
@ -2526,7 +2542,7 @@ consequence of this is that when you have modified a file, and somebody
|
|||
else has already checked in other changes to the file, you are not
|
||||
notified of it until you actually try to commit. (But you can try to
|
||||
pick up any recent changes from the repository first, using @kbd{C-x v m
|
||||
RET}, @pxref{Merging}).
|
||||
@key{RET}}, @pxref{Merging}).
|
||||
|
||||
When @var{vc-cvs-stay-local} is @code{t}, VC also makes local
|
||||
version backups, so that simple diff and revert operations are
|
||||
|
@ -2537,18 +2553,9 @@ then VC queries the remote repository @emph{before} it decides what to
|
|||
do in @code{vc-next-action} (@kbd{C-x v v}), just as it does for local
|
||||
repositories. It also does not make any version backups.
|
||||
|
||||
You can also set @var{vc-cvs-stay-local} to a regexp that is matched
|
||||
against the repository hostname; VC then stays local only for
|
||||
repositories from hosts that match the pattern.
|
||||
|
||||
@node SCCS Options
|
||||
@subsubsection Options specific for SCCS
|
||||
|
||||
VC determines the version control state of files under SCCS similar as
|
||||
under RCS. It does not consider SCCS version headers, though. Thus,
|
||||
the variable @var{vc-mistrust-permissions} is used in the same way as
|
||||
under RCS, @pxref{RCS Options} for details.
|
||||
|
||||
You can also set @var{vc-cvs-stay-local} to a regular expression
|
||||
that is matched against the repository hostname; VC then stays local
|
||||
only for repositories from hosts that match the pattern.
|
||||
|
||||
@node Directories
|
||||
@section File Directories
|
||||
|
@ -2789,7 +2796,7 @@ However, not all Dired commands are available in Tar mode.
|
|||
Tar mode is used also for compressed archives---files with extensions
|
||||
@samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}.
|
||||
|
||||
The keys @kbd{e}, @kbd{f} and @kbd{RET} all extract a component file
|
||||
The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
|
||||
into its own buffer. You can edit it there and when you save the buffer
|
||||
the edited version will replace the version in the Tar buffer. @kbd{v}
|
||||
extracts a file into a buffer in View mode. @kbd{o} extracts the file
|
||||
|
|
Loading…
Add table
Reference in a new issue