GNU Emacs Manual - Old Versions

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

### Examining And Comparing Old Versions

One of the convenient features of version control is the ability to examine any version of a file, or compare two versions.

`C-x v ~ version `RET``
  Examine version version of the visited file, in a buffer of its own.
`C-x v =`
  Compare the current buffer contents with the latest checked-in version of the file.
`C-u C-x v = file `RET` oldvers `RET` newvers `RET``
  Compare the specified two versions of file.
`C-x v g`
  Display the result of the CVS annotate command using colors.

To examine an old version in toto, visit the file and then type `C-x v ~ version `RET`` (`vc-version-other-window`). This puts the text of version version in a file named ``filename.~version~'`, and visits it in its own buffer in a separate window. (In RCS, you can also select an old version and create a branch from it. See section Multiple Branches of a File.)

But usually it is more convenient to compare two versions of the file, with the command `C-x v =` (`vc-diff`). Plain `C-x v =` compares the current buffer contents (saving them in the file if necessary) with the last checked-in version of the file. `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.

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 (see section Snapshots) instead of one or both version numbers.

This command works by running the `diff` utility, getting the options from the variable `diff-switches`. It displays the output in a special buffer in another window. Unlike the `M-x diff` command, `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. See section Comparing Files, for more information about `M-x diff`.

For CVS-controlled files, you can display the result of the CVS annotate command, using colors to enhance the visual appearance. Use the command `M-x vc-annotate` to do this. Red means new, blue means old, and intermediate colors indicate intermediate ages. A prefix argument n specifies a stretch factor for the time scale; it makes each color cover a period n times as long.

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