Committing changes basically works as follows:
There's no hidden state, so you can abort the process or pick it up again at any time.
The set of files actually committed is really decided only during the
very last step, which is a mixed blessing. It allows you to go back and
change your mind about which files to commit, but it also means that you
might inadvertently change the set of selected files. To reduce the
risk of error, C-c C-c will ask for confirmation if the set of
selected files has changed between the first step and the last. You can
change this last detail with
As for the difference between c (i.e.,
cvs-mode-commit-setup) is that the first gets you
straight to *cvs-commit* without erasing it or changing anything
to its content, while the second first erases *cvs-commit*
and tries to initialize it with a sane default (it does that by either
using a template provided by the CVS administrator or by extracting a
relevant log message from a ChangeLog file).
If you are editing the files in your Emacs, an automatic ‘revert-buffer’ will be performed. (If the file contains ‘$Id: Committing-changes.html,v 1.12 2019/04/16 21:35:23 gm Exp $’ keywords, ‘cvs commit’ will write a new file with the new values substituted. The auto-revert makes sure that you get them into your buffer.) The revert will not occur if you have modified your buffer, or if ‘cvs-auto-revert’ is set to ‘nil’.