When you visit a file that is maintained using version control, the mode line displays ‘RCS’ or ‘SCCS’ to inform you that version control is in use, and also (in case you care) which low-level system the file is actually stored in. Normally, such a source file is read-only, and the mode line indicates this with ‘%%’. With RCS, the mode line also indicates the number of the head version, which is normally also the version you are looking at.
These are the commands for editing a file maintained with version control:
Check the visited file in or out.
Revert the buffer and the file to the last checked in version.
Remove the last-entered change from the master for the visited file. This undoes your last check-in.
Register the visited file in version control.
(C-x v is the prefix key for version control commands; all of these commands except for C-x C-q start with C-x v.)
When you want to modify a file maintained with version control, type
C-x C-q (
vc-toggle-read-only). This checks out the
file, and tells RCS or SCCS to lock the file. This means making the
file writable for you (but not for anyone else).
When you are finished editing the file, type C-x C-q again. When used on a file that is checked out, this command checks the file in. But check-in does not start immediately; first, you must enter the log entry—a description of the changes in the new version. C-x C-q pops up a buffer for you to enter this in. When you are finished typing in the log entry, type C-c C-c to terminate it; this is when actual check-in takes place.
Once you have checked in your changes, the file is unlocked, so that other users can lock it and modify it.
Emacs does not save backup files for source files that are maintained
with version control. If you want to make backup files despite version
control, set the variable
vc-make-backup-files to a
Normally the work file exists all the time, whether it is locked or
not. If you set
nil, then checking
in a new version with C-x C-q deletes the work file; but any
attempt to visit the file with Emacs creates it again.
It is not impossible to lock a file that someone else has locked. If you try to check out a file that is locked, C-x C-q asks you whether you want to “steal the lock.” If you say yes, the file becomes locked by you, but a message is sent to the person who had formerly locked the file, to inform him of what has happened. The mode line indicates that a file is locked by someone else by displaying the login name of that person, before the version number.
If you want to discard your current set of changes and revert to the
last version checked in, use C-x v u (
This cancels your last check-out, leaving the file unlocked. If you want
to make a different set of changes, you must first check the file out
again. C-x v u requires confirmation, unless it sees that
you haven’t made any changes since the last checked-in version.
C-x v u is also the command to use if you lock a file and then don’t actually change it.
You can cancel a change after checking it in, with C-x v c
vc-cancel-version). This command discards all record of the
most recent checked in version, so be careful about using it. It
requires confirmation with yes. By default, C-x v c reverts
your workfile and buffer to the previous version (the one that precedes
the version that is deleted), but you can prevent the reversion by
giving the command a prefix argument. Then the buffer does not change.
This command with a prefix argument is useful when you have checked in a change and then discover a trivial error in it; you can cancel the erroneous check-in, fix the error, and repeat the check-in.
Be careful when invoking C-x v c, as it is easy to throw away a lot of work with it. To help you be careful, this command always requires confirmation with ‘yes’.
You can register the visited file for version control using
C-x v i (
vc-register). If the variable
vc-default-back-end is non-
nil, it specifies which
version control system to use; otherwise, this uses RCS if it is
installed on your system and SCCS if not. After C-x v i,
the file is unlocked and read-only. Type C-x C-q if you wish to
By default, the initial version number is 1.1. If you want to use a different number, give C-x v i a prefix argument; then it reads the initial version number using the minibuffer.
vc-initial-comment is non-
nil, C-x v i reads
an initial comment (much like a log entry) to describe the purpose of
this source file.
To specify the version number for a subsequent checkin, use the
command C-u C-x v v. C-x v v (
vc-next-action) is the
command that C-x C-q uses to do the “real work” when the visited
file uses version control. When used for checkin, and given a prefix
argument, it reads the version number with the minibuffer.