GNU Emacs Manual - Change Logs and VC

Go to the first, previous, next, last section, table of contents.

#### Change Logs and VC

If you use RCS or CVS for a program and also maintain a change log file for it (see section Change Logs), you can generate change log entries automatically from the version control log entries:

`C-x v a`
  Visit the current directory's change log file and, for registered files in that directory, create new entries for versions checked in since the most recent entry in the change log file. (`vc-update-change-log`). This command works with RCS or CVS only, not with SCCS.
`C-u C-x v a`
  As above, but only find entries for the current buffer's file.
`M-1 C-x v a`
  As above, but find entries for all the currently visited files that are maintained with version control. This works only with RCS, and it puts all entries in the log for the default directory, which may not be appropriate.

For example, suppose the first line of ``ChangeLog'` is dated 1999-04-10, and that the only check-in since then was by Nathaniel Bowditch to ``rcs2log'` on 1999-05-22 with log text ``Ignore log messages that start with `#'.'`. Then `C-x v a` visits ``ChangeLog'` and inserts text like this:

@medbreak

    1999-05-22  Nathaniel Bowditch  <nat@apn.org>

            * rcs2log: Ignore log messages that start with `#'.

@medbreak

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.

Normally, the log entry for file ``foo'` is displayed as ``* foo: text of log entry'`. The ``:'` after ``foo'` is omitted if the text of the log entry starts with ``(functionname): '`. For example, if the log entry for ``vc.el'` is ``(vc-do-command): Check call-process status.'`, then the text in ``ChangeLog'` looks like this:

@medbreak

    1999-05-06  Nathaniel Bowditch  <nat@apn.org>

            * vc.el (vc-do-command): Check call-process status.

@medbreak

When `C-x v a` adds several change log entries at once, it groups related log entries together if they all are checked in by the same author at nearly the same time. If the log entries for several such files all have the same text, it coalesces them into a single entry. For example, suppose the most recent check-ins have the following log entries:

    * For `vc.texinfo': `Fix expansion typos.'
    * For `vc.el': `Don't call expand-file-name.'
    * For `vc-hooks.el': `Don't call expand-file-name.'

They appear like this in ``ChangeLog'`:

@medbreak

    1999-04-01  Nathaniel Bowditch  <nat@apn.org>

            * vc.texinfo: Fix expansion typos.

            * vc.el, vc-hooks.el: Don't call expand-file-name.

@medbreak

Normally, `C-x v a` separates log entries by a blank line, but you can mark several related log entries to be clumped together (without an intervening blank line) by starting the text of each related log entry with a label of the form ``{clumpname} '`. The label itself is not copied to ``ChangeLog'`. For example, suppose the log entries are:

    * For `vc.texinfo': `{expand} Fix expansion typos.'
    * For `vc.el': `{expand} Don't call expand-file-name.'
    * For `vc-hooks.el': `{expand} Don't call expand-file-name.'

Then the text in ``ChangeLog'` looks like this:

@medbreak

    1999-04-01  Nathaniel Bowditch  <nat@apn.org>

            * vc.texinfo: Fix expansion typos.
            * vc.el, vc-hooks.el: Don't call expand-file-name.

@medbreak

A log entry whose text begins with ``#'` is not copied to ``ChangeLog'`. For example, if you merely fix some misspellings in comments, you can log the change with an entry beginning with ``#'` to avoid putting such trivia into ``ChangeLog'`.

Go to the first, previous, next, last section, table of contents.