Emacs provides several commands for navigating the VC Directory buffer, and for “marking” files as belonging to the current VC fileset.
vc-dir-mark), putting it in the current VC fileset. If the region is active, mark all files in the region.
A file cannot be marked with this command if it is already in a marked
directory, or one of its subdirectories. Similarly, a directory
cannot be marked with this command if any file in its tree is marked.
vc-dir-mark-all-files). With a prefix argument, mark all listed files and directories.
vc-dir-unmark-all-files). With a prefix argument, unmark all files and directories.
vc-dir-hide-up-to-date). With a prefix argument, hide items whose state is that of the item at point.
While in the VC Directory buffer, all the files that you mark with
vc-dir-mark) or M (
vc-dir-mark) are in
the current VC fileset. If you mark a directory entry with m,
all the listed files in that directory tree are in the current VC
fileset. The files and directories that belong to the current VC
fileset are indicated with a ‘*’ character in the VC Directory
buffer, next to their VC status. In this way, you can set up a
multi-file VC fileset to be acted on by VC commands like C-x v v (see Basic VC Editing), C-x v = (see Old Revisions), and C-x v u (see VC Undo).
The VC Directory buffer also defines some single-key shortcuts for VC commands with the C-x v prefix: =, +, l, i, D, L, G, I and v.
For example, you can commit a set of edited files by opening a VC
Directory buffer, where the files are listed with the ‘edited’
status; marking the files; and typing v or C-x v v
vc-next-action). If the version control system is
changeset-based, Emacs will commit the files in a single revision.
While in the VC Directory buffer, you can also perform search and replace on the current VC fileset, with the following commands:
Apart from acting on multiple files, these commands behave much like their single-buffer counterparts (see Search).
The above commands are also available via the menu bar, and via a context menu invoked by Mouse-2. Furthermore, some VC backends use the menu to provide extra backend-specific commands. For example, Git and Bazaar allow you to manipulate stashes and shelves (where are a way to temporarily put aside uncommitted changes, and bring them back at a later time).