@c This is part of the Emacs manual.@c Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.@c See file emacs.texi for copying conditions.@c@c This file is included either in vc-xtra.texi (when producing the@c printed version) or in the main Emacs manual (for the on-line version).@node VC Dired Mode@subsection Dired under VC@cindex PCL-CVS@pindex cvs@cindex CVS Dired Mode The VC Dired Mode described here works with all the version controlsystems that VC supports. Another more powerful facility, designedspecifically for CVS, is called PCL-CVS. @xref{Top, , About PCL-CVS,pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.@kindex C-x v d@findex vc-directory When you are working on a large program, it is often useful to findout which files have changed within an entire directory tree, or to viewthe status of all files under version control at once, and to performversion control operations on collections of files. You can use thecommand @kbd{C-x v d} (@code{vc-directory}) to make a directory listingthat includes only files relevant for version control.@vindex vc-dired-terse-display @kbd{C-x v d} creates a buffer which uses VC Dired Mode. This looksmuch like an ordinary Dired buffer@iftex(@pxref{Dired,,,emacs, the Emacs Manual});@end iftex@ifnottex(@pxref{Dired});@end ifnottexhowever, normally it shows only the noteworthy files (those locked ornot up-to-date). This is called @dfn{terse display}. If you set thevariable @code{vc-dired-terse-display} to @code{nil}, then VC Diredshows all relevant files---those managed under version control, plusall subdirectories (@dfn{full display}). The command @kbd{v t} in aVC Dired buffer toggles between terse display and full display(@pxref{VC Dired Commands}).@vindex vc-dired-recurse By default, VC Dired produces a recursive listing of noteworthy orrelevant files at or below the given directory. You can change this bysetting the variable @code{vc-dired-recurse} to @code{nil}; then VCDired shows only the files in the given directory. The line for an individual file shows the version control state in theplace of the hard link count, owner, group, and size of the file. Ifthe file is unmodified, in sync with the master file, the versioncontrol state shown is blank. Otherwise it consists of text inparentheses. Under RCS and SCCS, the name of the user locking the fileis shown; under CVS, an abbreviated version of the @samp{cvs status}output is used. Here is an example using RCS:@smallexample@group /home/jim/project: -rw-r--r-- (jim) Apr 2 23:39 file1 -r--r--r-- Apr 5 20:21 file2@end group@end smallexample@noindentThe files @samp{file1} and @samp{file2} are under version control,@samp{file1} is locked by user jim, and @samp{file2} is unlocked. Here is an example using CVS:@smallexample@group /home/joe/develop: -rw-r--r-- (modified) Aug 2 1997 file1.c -rw-r--r-- Apr 4 20:09 file2.c -rw-r--r-- (merge) Sep 13 1996 file3.c@end group@end smallexample Here @samp{file1.c} is modified with respect to the repository, and@samp{file2.c} is not. @samp{file3.c} is modified, but other changeshave also been checked in to the repository---you need to merge themwith the work file before you can check it in.@vindex vc-stay-local@vindex vc-cvs-stay-local In the above, if the repository were on a remote machine, VC wouldonly contact it when the variable @code{vc-stay-local} (or@code{vc-cvs-stay-local}) is nil (@pxref{CVS Options}). This isbecause access to the repository may be slow, or you may be workingoffline and not have access to the repository at all. As aconsequence, VC would not be able to tell you that @samp{file3.c} isin the ``merge'' state; you would learn that only when you try tocheck-in your modified copy of the file, or use a command such as@kbd{C-x v m}. In practice, this is not a problem because CVS handles this caseconsistently whenever it arises. In VC, you'll simply get prompted tomerge the remote changes into your work file first. The benefits ofless network communication usually outweigh the disadvantage of notseeing remote changes immediately.@vindex vc-directory-exclusion-list When VC Dired displays subdirectories (in the ``full'' display mode),it omits some that should never contain any files under version control.By default, this includes Version Control subdirectories such as@samp{RCS} and @samp{CVS}; you can customize this by setting thevariable @code{vc-directory-exclusion-list}. You can fine-tune VC Dired's format by typing @kbd{C-u C-x v d}---as inordinary Dired, that allows you to specify additional switches for the@samp{ls} command.@node VC Dired Commands@subsection VC Dired Commands All the usual Dired commands work normally in VC Dired mode, exceptfor @kbd{v}, which is redefined as the version control prefix. You caninvoke VC commands such as @code{vc-diff} and @code{vc-print-log} bytyping @kbd{v =}, or @kbd{v l}, and so on. Most of these commands applyto the file name on the current line. The command @kbd{v v} (@code{vc-next-action}) operates on all themarked files, so that you can lock or check in several files at once.If it operates on more than one file, it handles each file according toits current state; thus, it might lock one file, but check in anotherfile. This could be confusing; it is up to you to avoid confusingbehavior by marking a set of files that are in a similar state. If nofiles are marked, @kbd{v v} operates on the file in the current line. If any files call for check-in, @kbd{v v} reads a single log entry,then uses it for all the files being checked in. This is convenient forregistering or checking in several files at once, as part of the samechange.@findex vc-dired-toggle-terse-mode@findex vc-dired-mark-locked You can toggle between terse display (only locked files, or files notup-to-date) and full display at any time by typing @kbd{v t}(@code{vc-dired-toggle-terse-mode}). There is also a special command@kbd{* l} (@code{vc-dired-mark-locked}), which marks all files currentlylocked (or, with CVS, all files not up-to-date). Thus, typing @kbd{* lt k} is another way to delete from the buffer all files except thosecurrently locked.@ignore arch-tag: 8e8c2a01-ad41-4e61-a89a-60131ad67263@end ignore