Emacs normally does not save backup files for source files that are
maintained with version control. If you want to make backup files even
for files that use version control, set the variable
vc-make-backup-files to a non-nil value.
Editing a version-controlled file through a symbolic link may cause
unexpected results, if you are unaware that the underlying file is
version-controlled. The variable vc-follow-symlinks controls
what Emacs does if you try to visit a symbolic link pointing to a
version-controlled file. If the value is ask (the default),
Emacs asks for confirmation. If it is nil, Emacs just displays
a warning message. If it is t, Emacs automatically follows the
link and visits the real file instead.
If vc-suppress-confirm is non-nil, then C-x v v
and C-x v i can save the current buffer without asking, and
C-x v u also operates without asking for confirmation.
VC mode does much of its work by running the shell commands for the
appropriate version control system. If vc-command-messages has
the value log, VC logs messages to the *Messages* buffer
to indicate which shell commands it runs, and logs additional messages
when the commands finish. If the variable has any other non-nil
value, Emacs both logs and displays these messages.
VC mode runs certain shell commands asynchronously, allowing you to
continue to use Emacs for other purposes while the command completes.
This is mostly used for commands which access the network, such as
pulling and pushing for distributed VCS (see Pulling/Pushing Changes into/from a Branch).
When the command starts, VC displays a buffer into which the commands
output will be written. If vc-display-failed-async-commands is
non-nil, VC will additionally ensure that this buffer is
displayed when the command finishes running but failed. This means you
can freely close the window displaying the command’s buffer and know
that it’ll pop up again in the case that running the command failed.
Normally checkin operations are done synchronously; that is, Emacs waits until the checkin has completed before doing anything else. This can be inconvenient for repositories in which the checkin operation is slow, such as Git repositories where you check in changes to very large files, or Mercurial repositories with a very large number of files.
For those backends which support it, setting vc-async-checkin
to non-nil switches to doing checkin operations asynchronously.
This is particularly useful as a directory local variable in
repositories where checkin operations are slow (see Directory Local
Variables in GNU Emacs Lisp Reference Manual).
While an asynchronous checkin operation is in progress, if you use C-x C-s to save a buffer visiting any file within the current VC tree, then the operation reverts to a synchronous checkin and Emacs waits for it to complete before saving the buffer. This is to avoid nondeterminism regarding exactly what changes get checked in.