]> code.delx.au - gnu-emacs/blob - man/files.texi
(Visiting, File Names): Mention that completion ignores some file names,
[gnu-emacs] / man / files.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985,86,87,93,94,95,97,99, 2000, 2001
3 @c Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Files, Buffers, Fixit, Top
6 @chapter File Handling
7 @cindex files
8
9 The operating system stores data permanently in named @dfn{files}, so
10 most of the text you edit with Emacs comes from a file and is ultimately
11 stored in a file.
12
13 To edit a file, you must tell Emacs to read the file and prepare a
14 buffer containing a copy of the file's text. This is called
15 @dfn{visiting} the file. Editing commands apply directly to text in the
16 buffer; that is, to the copy inside Emacs. Your changes appear in the
17 file itself only when you @dfn{save} the buffer back into the file.
18
19 In addition to visiting and saving files, Emacs can delete, copy,
20 rename, and append to files, keep multiple versions of them, and operate
21 on file directories.
22
23 @menu
24 * File Names:: How to type and edit file-name arguments.
25 * Visiting:: Visiting a file prepares Emacs to edit the file.
26 * Saving:: Saving makes your changes permanent.
27 * Reverting:: Reverting cancels all the changes not saved.
28 * Auto Save:: Auto Save periodically protects against loss of data.
29 * File Aliases:: Handling multiple names for one file.
30 * Version Control:: Version control systems (RCS, CVS and SCCS).
31 * Directories:: Creating, deleting, and listing file directories.
32 * Comparing Files:: Finding where two files differ.
33 * Misc File Ops:: Other things you can do on files.
34 * Compressed Files:: Accessing compressed files.
35 * File Archives:: Operating on tar, zip, jar etc. archive files.
36 * Remote Files:: Accessing files on other sites.
37 * Quoted File Names:: Quoting special characters in file names.
38 * File Name Cache:: Completion against a list of files you often use.
39 * File Conveniences:: Convenience Features for Finding Files.
40 @end menu
41
42 @node File Names
43 @section File Names
44 @cindex file names
45
46 Most Emacs commands that operate on a file require you to specify the
47 file name. (Saving and reverting are exceptions; the buffer knows which
48 file name to use for them.) You enter the file name using the
49 minibuffer (@pxref{Minibuffer}). @dfn{Completion} is available, to make
50 it easier to specify long file names. @xref{Completion}. When
51 completing file names, Emacs ignores those whose file-name extensions
52 appear in the variable @code{completion-ignored-extensions}, see
53 @ref{Completion Options}.
54
55 For most operations, there is a @dfn{default file name} which is used
56 if you type just @key{RET} to enter an empty argument. Normally the
57 default file name is the name of the file visited in the current buffer;
58 this makes it easy to operate on that file with any of the Emacs file
59 commands.
60
61 @vindex default-directory
62 Each buffer has a default directory which is normally the same as the
63 directory of the file visited in that buffer. When you enter a file
64 name without a directory, the default directory is used. If you specify
65 a directory in a relative fashion, with a name that does not start with
66 a slash, it is interpreted with respect to the default directory. The
67 default directory is kept in the variable @code{default-directory},
68 which has a separate value in every buffer.
69
70 For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
71 the default directory is @file{/u/rms/gnu/}. If you type just @samp{foo},
72 which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
73 @samp{../.login} would stand for @file{/u/rms/.login}. @samp{new/foo}
74 would stand for the file name @file{/u/rms/gnu/new/foo}.
75
76 @findex cd
77 @findex pwd
78 The command @kbd{M-x pwd} prints the current buffer's default
79 directory, and the command @kbd{M-x cd} sets it (to a value read using
80 the minibuffer). A buffer's default directory changes only when the
81 @code{cd} command is used. A file-visiting buffer's default directory
82 is initialized to the directory of the file that is visited there. If
83 you create a buffer with @kbd{C-x b}, its default directory is copied
84 from that of the buffer that was current at the time.
85
86 @vindex insert-default-directory
87 The default directory actually appears in the minibuffer when the
88 minibuffer becomes active to read a file name. This serves two
89 purposes: it @emph{shows} you what the default is, so that you can type
90 a relative file name and know with certainty what it will mean, and it
91 allows you to @emph{edit} the default to specify a different directory.
92 This insertion of the default directory is inhibited if the variable
93 @code{insert-default-directory} is set to @code{nil}.
94
95 Note that it is legitimate to type an absolute file name after you
96 enter the minibuffer, ignoring the presence of the default directory
97 name as part of the text. The final minibuffer contents may look
98 invalid, but that is not so. For example, if the minibuffer starts out
99 with @samp{/usr/tmp/} and you add @samp{/x1/rms/foo}, you get
100 @samp{/usr/tmp//x1/rms/foo}; but Emacs ignores everything through the
101 first slash in the double slash; the result is @samp{/x1/rms/foo}.
102 @xref{Minibuffer File}.
103
104 @cindex environment variables in file names
105 @cindex expansion of environment variables
106 @samp{$} in a file name is used to substitute environment variables.
107 For example, if you have used the shell command @command{export
108 FOO=rms/hacks} to set up an environment variable named @env{FOO}, then
109 you can use @file{/u/$FOO/test.c} or @file{/u/$@{FOO@}/test.c} as an
110 abbreviation for @file{/u/rms/hacks/test.c}. The environment variable
111 name consists of all the alphanumeric characters after the @samp{$};
112 alternatively, it may be enclosed in braces after the @samp{$}. Note
113 that shell commands to set environment variables affect Emacs only if
114 done before Emacs is started.
115
116 @cindex home directory shorthand
117 You can use the @file{~/} in a file name to mean your home directory,
118 or @file{~@var{user-id}/} to mean the home directory of a user whose
119 login name is @code{user-id}. (On DOS and Windows systems, where a user
120 doesn't have a home directory, Emacs substitutes @file{~/} with the
121 value of the environment variable @code{HOME}; see @ref{General
122 Variables}.)
123
124 To access a file with @samp{$} in its name, type @samp{$$}. This pair
125 is converted to a single @samp{$} at the same time as variable
126 substitution is performed for a single @samp{$}. Alternatively, quote the
127 whole file name with @samp{/:} (@pxref{Quoted File Names}). File names
128 which begin with a literal @samp{~} should also be quoted with @samp{/:}.
129
130 @findex substitute-in-file-name
131 The Lisp function that performs the substitution is called
132 @code{substitute-in-file-name}. The substitution is performed only on
133 file names read as such using the minibuffer.
134
135 You can include non-ASCII characters in file names if you set the
136 variable @code{file-name-coding-system} to a non-@code{nil} value.
137 @xref{Specify Coding}.
138
139 @node Visiting
140 @section Visiting Files
141 @cindex visiting files
142
143 @c WideCommands
144 @table @kbd
145 @item C-x C-f
146 Visit a file (@code{find-file}).
147 @item C-x C-r
148 Visit a file for viewing, without allowing changes to it
149 (@code{find-file-read-only}).
150 @item C-x C-v
151 Visit a different file instead of the one visited last
152 (@code{find-alternate-file}).
153 @item C-x 4 f
154 Visit a file, in another window (@code{find-file-other-window}). Don't
155 alter what is displayed in the selected window.
156 @item C-x 5 f
157 Visit a file, in a new frame (@code{find-file-other-frame}). Don't
158 alter what is displayed in the selected frame.
159 @item M-x find-file-literally
160 Visit a file with no conversion of the contents.
161 @end table
162
163 @cindex files, visiting and saving
164 @cindex saving files
165 @dfn{Visiting} a file means copying its contents into an Emacs buffer
166 so you can edit them. Emacs makes a new buffer for each file that you
167 visit. We say that this buffer is visiting the file that it was created
168 to hold. Emacs constructs the buffer name from the file name by
169 throwing away the directory, keeping just the name proper. For example,
170 a file named @file{/usr/rms/emacs.tex} would get a buffer named
171 @samp{emacs.tex}. If there is already a buffer with that name, a unique
172 name is constructed by appending @samp{<2>}, @samp{<3>}, and so on, using
173 the lowest number that makes a name that is not already in use.
174
175 Each window's mode line shows the name of the buffer that is being displayed
176 in that window, so you can always tell what buffer you are editing.
177
178 The changes you make with editing commands are made in the Emacs
179 buffer. They do not take effect in the file that you visited, or any
180 place permanent, until you @dfn{save} the buffer. Saving the buffer
181 means that Emacs writes the current contents of the buffer into its
182 visited file. @xref{Saving}.
183
184 @cindex modified (buffer)
185 If a buffer contains changes that have not been saved, we say the
186 buffer is @dfn{modified}. This is important because it implies that
187 some changes will be lost if the buffer is not saved. The mode line
188 displays two stars near the left margin to indicate that the buffer is
189 modified.
190
191 @kindex C-x C-f
192 @findex find-file
193 To visit a file, use the command @kbd{C-x C-f} (@code{find-file}). Follow
194 the command with the name of the file you wish to visit, terminated by a
195 @key{RET}.
196
197 The file name is read using the minibuffer (@pxref{Minibuffer}), with
198 defaulting and completion in the standard manner (@pxref{File Names}).
199 While in the minibuffer, you can abort @kbd{C-x C-f} by typing
200 @kbd{C-g}. File-name completion ignores certain filenames; for more
201 about this, see @ref{Completion Options}.
202
203 @cindex file selection dialog
204 When Emacs is built with a suitable GUI toolkit, it pops up the
205 standard File Selection dialog of that toolkit instead of prompting for
206 the file name in the minibuffer. On Unix and GNU/Linux platforms, Emacs
207 does that when built with LessTif and Motif toolkits; on MS-Windows, the
208 GUI version does that by default.
209
210 Your confirmation that @kbd{C-x C-f} has completed successfully is the
211 appearance of new text on the screen and a new buffer name in the mode
212 line. If the specified file does not exist and could not be created, or
213 cannot be read, then you get an error, with an error message displayed
214 in the echo area.
215
216 If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
217 another copy. It selects the existing buffer containing that file.
218 However, before doing so, it checks that the file itself has not changed
219 since you visited or saved it last. If the file has changed, a warning
220 message is printed. @xref{Interlocking,,Simultaneous Editing}.
221
222 @cindex maximum buffer size exceeded, error message
223 Since Emacs reads the visited file in its entirety, files whose size
224 is larger than the maximum Emacs buffer size (@pxref{Buffers}) cannot be
225 visited; if you try, Emacs will print an error message saying that the
226 maximum buffer size has been exceeded.
227
228 @cindex creating files
229 What if you want to create a new file? Just visit it. Emacs prints
230 @samp{(New file)} in the echo area, but in other respects behaves as if
231 you had visited an existing empty file. If you make any changes and
232 save them, the file is created.
233
234 Emacs recognizes from the contents of a file which convention it uses
235 to separate lines---newline (used on GNU/Linux and on Unix),
236 carriage-return linefeed (used on Microsoft systems), or just
237 carriage-return (used on the Macintosh)---and automatically converts the
238 contents to the normal Emacs convention, which is that the newline
239 character separates lines. This is a part of the general feature of
240 coding system conversion (@pxref{Coding Systems}), and makes it possible
241 to edit files imported from different operating systems with
242 equal convenience. If you change the text and save the file, Emacs
243 performs the inverse conversion, changing newlines back into
244 carriage-return linefeed or just carriage-return if appropriate.
245
246 @vindex find-file-run-dired
247 If the file you specify is actually a directory, @kbd{C-x C-f} invokes
248 Dired, the Emacs directory browser, so that you can ``edit'' the contents
249 of the directory (@pxref{Dired}). Dired is a convenient way to delete,
250 look at, or operate on the files in the directory. However, if the
251 variable @code{find-file-run-dired} is @code{nil}, then it is an error
252 to try to visit a directory.
253
254 Files which are actually collections of other files, or @dfn{file
255 archives}, are visited in special modes which invoke a Dired-like
256 environment to allow operations on archive members. @xref{File
257 Archives}, for more about these features.
258
259 @cindex wildcard characters in file names
260 @vindex find-file-wildcards
261 If the file name you specify contains shell-style wildcard characters,
262 Emacs visits all the files that match it. Wildcards comprise @samp{?},
263 @samp{*} and @samp{[@dots{}]} sequences. @xref{Quoted File Names}, for
264 information on how to visit a file whose name actually contains wildcard
265 characters. You can disable the wildcard feature by customizing
266 @code{find-file-wildcards}.
267
268 If you visit a file that the operating system won't let you modify,
269 Emacs makes the buffer read-only, so that you won't go ahead and make
270 changes that you'll have trouble saving afterward. You can make the
271 buffer writable with @kbd{C-x C-q} (@code{vc-toggle-read-only}).
272 @xref{Misc Buffer}.
273
274 @kindex C-x C-r
275 @findex find-file-read-only
276 Occasionally you might want to visit a file as read-only in order to
277 protect yourself from entering changes accidentally; do so by visiting
278 the file with the command @kbd{C-x C-r} (@code{find-file-read-only}).
279
280 @kindex C-x C-v
281 @findex find-alternate-file
282 If you visit a nonexistent file unintentionally (because you typed the
283 wrong file name), use the @kbd{C-x C-v} command
284 (@code{find-alternate-file}) to visit the file you really wanted.
285 @kbd{C-x C-v} is similar to @kbd{C-x C-f}, but it kills the current
286 buffer (after first offering to save it if it is modified). When
287 @kbd{C-x C-v} reads the file name to visit, it inserts the entire
288 default file name in the buffer, with point just after the directory
289 part; this is convenient if you made a slight error in typing the name.
290
291 If you find a file which exists but cannot be read, @kbd{C-x C-f}
292 signals an error.
293
294 @kindex C-x 4 f
295 @findex find-file-other-window
296 @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
297 except that the buffer containing the specified file is selected in another
298 window. The window that was selected before @kbd{C-x 4 f} continues to
299 show the same buffer it was already showing. If this command is used when
300 only one window is being displayed, that window is split in two, with one
301 window showing the same buffer as before, and the other one showing the
302 newly requested file. @xref{Windows}.
303
304 @kindex C-x 5 f
305 @findex find-file-other-frame
306 @kbd{C-x 5 f} (@code{find-file-other-frame}) is similar, but opens a
307 new frame, or makes visible any existing frame showing the file you
308 seek. This feature is available only when you are using a window
309 system. @xref{Frames}.
310
311 @findex find-file-literally
312 If you wish to edit a file as a sequence of ASCII characters with no special
313 encoding or conversion, use the @kbd{M-x find-file-literally} command.
314 It visits a file, like @kbd{C-x C-f}, but does not do format conversion
315 (@pxref{Formatted Text}), character code conversion (@pxref{Coding
316 Systems}), or automatic uncompression (@pxref{Compressed Files}), and
317 does not add a final newline because of @code{require-final-newline}.
318 If you already have visited the same file in the usual (non-literal)
319 manner, this command asks you whether to visit it literally instead.
320
321 @vindex find-file-hooks
322 @vindex find-file-not-found-hooks
323 Two special hook variables allow extensions to modify the operation of
324 visiting files. Visiting a file that does not exist runs the functions
325 in the list @code{find-file-not-found-hooks}; this variable holds a list
326 of functions, and the functions are called one by one (with no
327 arguments) until one of them returns non-@code{nil}. This is not a
328 normal hook, and the name ends in @samp{-hooks} rather than @samp{-hook}
329 to indicate that fact.
330
331 Any visiting of a file, whether extant or not, expects
332 @code{find-file-hooks} to contain a list of functions, and calls them
333 all, one by one, with no arguments. This variable is really a normal
334 hook, but it has an abnormal name for historical compatibility. In the
335 case of a nonexistent file, the @code{find-file-not-found-hooks} are run
336 first. @xref{Hooks}.
337
338 There are several ways to specify automatically the major mode for
339 editing the file (@pxref{Choosing Modes}), and to specify local
340 variables defined for that file (@pxref{File Variables}).
341
342 @node Saving
343 @section Saving Files
344
345 @dfn{Saving} a buffer in Emacs means writing its contents back into the file
346 that was visited in the buffer.
347
348 @table @kbd
349 @item C-x C-s
350 Save the current buffer in its visited file (@code{save-buffer}).
351 @item C-x s
352 Save any or all buffers in their visited files (@code{save-some-buffers}).
353 @item M-~
354 Forget that the current buffer has been changed (@code{not-modified}).
355 With prefix argument (@kbd{C-u}), mark the current buffer as changed.
356 @item C-x C-w
357 Save the current buffer in a specified file (@code{write-file}).
358 @item M-x set-visited-file-name
359 Change the file name under which the current buffer will be saved.
360 @end table
361
362 @kindex C-x C-s
363 @findex save-buffer
364 When you wish to save the file and make your changes permanent, type
365 @kbd{C-x C-s} (@code{save-buffer}). After saving is finished, @kbd{C-x C-s}
366 displays a message like this:
367
368 @example
369 Wrote /u/rms/gnu/gnu.tasks
370 @end example
371
372 @noindent
373 If the selected buffer is not modified (no changes have been made in it
374 since the buffer was created or last saved), saving is not really done,
375 because it would have no effect. Instead, @kbd{C-x C-s} displays a message
376 like this in the echo area:
377
378 @example
379 (No changes need to be saved)
380 @end example
381
382 @kindex C-x s
383 @findex save-some-buffers
384 The command @kbd{C-x s} (@code{save-some-buffers}) offers to save any
385 or all modified buffers. It asks you what to do with each buffer. The
386 possible responses are analogous to those of @code{query-replace}:
387
388 @table @kbd
389 @item y
390 Save this buffer and ask about the rest of the buffers.
391 @item n
392 Don't save this buffer, but ask about the rest of the buffers.
393 @item !
394 Save this buffer and all the rest with no more questions.
395 @c following generates acceptable underfull hbox
396 @item @key{RET}
397 Terminate @code{save-some-buffers} without any more saving.
398 @item .
399 Save this buffer, then exit @code{save-some-buffers} without even asking
400 about other buffers.
401 @item C-r
402 View the buffer that you are currently being asked about. When you exit
403 View mode, you get back to @code{save-some-buffers}, which asks the
404 question again.
405 @item C-h
406 Display a help message about these options.
407 @end table
408
409 @kbd{C-x C-c}, the key sequence to exit Emacs, invokes
410 @code{save-some-buffers} and therefore asks the same questions.
411
412 @kindex M-~
413 @findex not-modified
414 If you have changed a buffer but you do not want to save the changes,
415 you should take some action to prevent it. Otherwise, each time you use
416 @kbd{C-x s} or @kbd{C-x C-c}, you are liable to save this buffer by
417 mistake. One thing you can do is type @kbd{M-~} (@code{not-modified}),
418 which clears out the indication that the buffer is modified. If you do
419 this, none of the save commands will believe that the buffer needs to be
420 saved. (@samp{~} is often used as a mathematical symbol for `not'; thus
421 @kbd{M-~} is `not', metafied.) You could also use
422 @code{set-visited-file-name} (see below) to mark the buffer as visiting
423 a different file name, one which is not in use for anything important.
424 Alternatively, you can cancel all the changes made since the file was
425 visited or saved, by reading the text from the file again. This is
426 called @dfn{reverting}. @xref{Reverting}. You could also undo all the
427 changes by repeating the undo command @kbd{C-x u} until you have undone
428 all the changes; but reverting is easier.
429
430 @findex set-visited-file-name
431 @kbd{M-x set-visited-file-name} alters the name of the file that the
432 current buffer is visiting. It reads the new file name using the
433 minibuffer. Then it specifies the visited file name and changes the
434 buffer name correspondingly (as long as the new name is not in use).
435 @code{set-visited-file-name} does not save the buffer in the newly
436 visited file; it just alters the records inside Emacs in case you do
437 save later. It also marks the buffer as ``modified'' so that @kbd{C-x
438 C-s} in that buffer @emph{will} save.
439
440 @kindex C-x C-w
441 @findex write-file
442 If you wish to mark the buffer as visiting a different file and save it
443 right away, use @kbd{C-x C-w} (@code{write-file}). It is precisely
444 equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}.
445 @kbd{C-x C-s} used on a buffer that is not visiting a file has the
446 same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
447 buffer as visiting that file, and saves it there. The default file name in
448 a buffer that is not visiting a file is made by combining the buffer name
449 with the buffer's default directory.
450
451 If the new file name implies a major mode, then @kbd{C-x C-w} switches
452 to that major mode, in most cases. The command
453 @code{set-visited-file-name} also does this. @xref{Choosing Modes}.
454
455 If Emacs is about to save a file and sees that the date of the latest
456 version on disk does not match what Emacs last read or wrote, Emacs
457 notifies you of this fact, because it probably indicates a problem caused
458 by simultaneous editing and requires your immediate attention.
459 @xref{Interlocking,, Simultaneous Editing}.
460
461 @vindex require-final-newline
462 If the value of the variable @code{require-final-newline} is @code{t},
463 Emacs silently puts a newline at the end of any file that doesn't
464 already end in one, every time a file is saved or written. If the value
465 is @code{nil}, Emacs leaves the end of the file unchanged; if it's
466 neither @code{nil} nor @code{t}, Emacs asks you whether to add a
467 newline. The default is @code{nil}.
468
469 @menu
470 * Backup:: How Emacs saves the old version of your file.
471 * Interlocking:: How Emacs protects against simultaneous editing
472 of one file by two users.
473 * Shadowing: File Shadowing.
474 Copying files to "shadows" automatically.
475 * Time Stamps:: Emacs can update time stamps on saved files.
476 @end menu
477
478 @node Backup
479 @subsection Backup Files
480 @cindex backup file
481 @vindex make-backup-files
482 @vindex vc-make-backup-files
483
484 On most operating systems, rewriting a file automatically destroys all
485 record of what the file used to contain. Thus, saving a file from Emacs
486 throws away the old contents of the file---or it would, except that
487 Emacs carefully copies the old contents to another file, called the
488 @dfn{backup} file, before actually saving.
489
490 For most files, the variable @code{make-backup-files} determines
491 whether to make backup files. On most operating systems, its default
492 value is @code{t}, so that Emacs does write backup files.
493
494 For files managed by a version control system (@pxref{Version
495 Control}), the variable @code{vc-make-backup-files} determines whether
496 to make backup files. By default it is @code{nil}, since backup files
497 are redundant when you store all the previous versions in a version
498 control system. @xref{General VC Options}.
499
500 @vindex backup-enable-predicate
501 @vindex temporary-file-directory
502 @vindex small-temporary-file-directory
503 The default value of the @code{backup-enable-predicate} variable
504 prevents backup files being written for files in the directories used
505 for temporary files, specified by @code{temporary-file-directory} or
506 @code{small-temporary-file-directory}.
507
508 At your option, Emacs can keep either a single backup file or a series of
509 numbered backup files for each file that you edit.
510
511 Emacs makes a backup for a file only the first time the file is saved
512 from one buffer. No matter how many times you save a file, its backup file
513 continues to contain the contents from before the file was visited.
514 Normally this means that the backup file contains the contents from before
515 the current editing session; however, if you kill the buffer and then visit
516 the file again, a new backup file will be made by the next save.
517
518 You can also explicitly request making another backup file from a
519 buffer even though it has already been saved at least once. If you save
520 the buffer with @kbd{C-u C-x C-s}, the version thus saved will be made
521 into a backup file if you save the buffer again. @kbd{C-u C-u C-x C-s}
522 saves the buffer, but first makes the previous file contents into a new
523 backup file. @kbd{C-u C-u C-u C-x C-s} does both things: it makes a
524 backup from the previous contents and arranges to make another from the
525 newly saved contents, if you save again.
526
527 @menu
528 * Names: Backup Names. How backup files are named;
529 choosing single or numbered backup files.
530 * Deletion: Backup Deletion. Emacs deletes excess numbered backups.
531 * Copying: Backup Copying. Backups can be made by copying or renaming.
532 @end menu
533
534 @node Backup Names
535 @subsubsection Single or Numbered Backups
536
537 If you choose to have a single backup file (this is the default),
538 the backup file's name is normally constructed by appending @samp{~} to the
539 file name being edited; thus, the backup file for @file{eval.c} would
540 be @file{eval.c~}.
541
542 @vindex make-backup-file-name-function
543 @vindex backup-directory-alist
544 You can change this behavior by defining the variable
545 @code{make-backup-file-name-function} to a suitable function.
546 Alternatively you can customize the variable
547 @code{backup-directory-alist} to specify that files matching certain
548 patterns should be backed up in specific directories.
549
550 A typical use is to add an element @code{("." . @var{dir})} to make
551 all backups in the directory with absolute name @var{dir}; Emacs
552 modifies the backup file names to avoid clashes between files with the
553 same names originating in different directories. Alternatively,
554 adding, say, @code{("." . ".~")} would make backups in the invisible
555 subdirectory @file{.~} of the original file's directory. Emacs
556 creates the directory, if necessary, to make the backup.
557
558 If access control stops Emacs from writing backup files under the usual
559 names, it writes the backup file as @file{%backup%~} in your home
560 directory. Only one such file can exist, so only the most recently
561 made such backup is available.
562
563 If you choose to have a series of numbered backup files, backup file
564 names contain @samp{.~}, the number, and another @samp{~} after the
565 original file name. Thus, the backup files of @file{eval.c} would be
566 called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, all the way
567 through names like @file{eval.c.~259~} and beyond. The variable
568 @code{backup-directory-alist} applies to numbered backups just as
569 usual.
570
571 @vindex version-control
572 The choice of single backup or numbered backups is controlled by the
573 variable @code{version-control}. Its possible values are
574
575 @table @code
576 @item t
577 Make numbered backups.
578 @item nil
579 Make numbered backups for files that have numbered backups already.
580 Otherwise, make single backups.
581 @item never
582 Never make numbered backups; always make single backups.
583 @end table
584
585 @noindent
586 You can set @code{version-control} locally in an individual buffer to
587 control the making of backups for that buffer's file. For example,
588 Rmail mode locally sets @code{version-control} to @code{never} to make sure
589 that there is only one backup for an Rmail file. @xref{Locals}.
590
591 @cindex @env{VERSION_CONTROL} environment variable
592 If you set the environment variable @env{VERSION_CONTROL}, to tell
593 various GNU utilities what to do with backup files, Emacs also obeys the
594 environment variable by setting the Lisp variable @code{version-control}
595 accordingly at startup. If the environment variable's value is @samp{t}
596 or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
597 value is @samp{nil} or @samp{existing}, then @code{version-control}
598 becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
599 @code{version-control} becomes @code{never}.
600
601 @node Backup Deletion
602 @subsubsection Automatic Deletion of Backups
603
604 To prevent excessive consumption of disk space, Emacs can delete numbered
605 backup versions automatically. Generally Emacs keeps the first few backups
606 and the latest few backups, deleting any in between. This happens every
607 time a new backup is made.
608
609 @vindex kept-old-versions
610 @vindex kept-new-versions
611 The two variables @code{kept-old-versions} and
612 @code{kept-new-versions} control this deletion. Their values are,
613 respectively, the number of oldest (lowest-numbered) backups to keep and
614 the number of newest (highest-numbered) ones to keep, each time a new
615 backup is made. Recall that these values are used just after a new
616 backup version is made; that newly made backup is included in the count
617 in @code{kept-new-versions}. By default, both variables are 2.
618
619 @vindex delete-old-versions
620 If @code{delete-old-versions} is non-@code{nil}, the excess
621 middle versions are deleted without a murmur. If it is @code{nil}, the
622 default, then you are asked whether the excess middle versions should
623 really be deleted.
624
625 Dired's @kbd{.} (Period) command can also be used to delete old versions.
626 @xref{Dired Deletion}.
627
628 @node Backup Copying
629 @subsubsection Copying vs.@: Renaming
630
631 Backup files can be made by copying the old file or by renaming it. This
632 makes a difference when the old file has multiple names. If the old file
633 is renamed into the backup file, then the alternate names become names for
634 the backup file. If the old file is copied instead, then the alternate
635 names remain names for the file that you are editing, and the contents
636 accessed by those names will be the new contents.
637
638 The method of making a backup file may also affect the file's owner
639 and group. If copying is used, these do not change. If renaming is used,
640 you become the file's owner, and the file's group becomes the default
641 (different operating systems have different defaults for the group).
642
643 Having the owner change is usually a good idea, because then the owner
644 always shows who last edited the file. Also, the owners of the backups
645 show who produced those versions. Occasionally there is a file whose
646 owner should not change; it is a good idea for such files to contain
647 local variable lists to set @code{backup-by-copying-when-mismatch}
648 locally (@pxref{File Variables}).
649
650 @vindex backup-by-copying
651 @vindex backup-by-copying-when-linked
652 @vindex backup-by-copying-when-mismatch
653 @vindex backup-by-copying-when-privileged-mismatch
654 @cindex file ownership, and backup
655 @cindex backup, and user-id
656 The choice of renaming or copying is controlled by four variables.
657 Renaming is the default choice. If the variable
658 @code{backup-by-copying} is non-@code{nil}, copying is used. Otherwise,
659 if the variable @code{backup-by-copying-when-linked} is non-@code{nil},
660 then copying is used for files that have multiple names, but renaming
661 may still be used when the file being edited has only one name. If the
662 variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then
663 copying is used if renaming would cause the file's owner or group to
664 change. @code{backup-by-copying-when-mismatch} is @code{t} by default
665 if you start Emacs as the superuser. The fourth variable,
666 @code{backup-by-copying-when-privileged-mismatch}, gives the highest
667 numeric user-id for which @code{backup-by-copying-when-mismatch} will be
668 forced on. This is useful when low-numbered user-ids are assigned to
669 special system users, such as @code{root}, @code{bin}, @code{daemon},
670 etc., which must maintain ownership of files.
671
672 When a file is managed with a version control system (@pxref{Version
673 Control}), Emacs does not normally make backups in the usual way for
674 that file. But check-in and check-out are similar in some ways to
675 making backups. One unfortunate similarity is that these operations
676 typically break hard links, disconnecting the file name you visited from
677 any alternate names for the same file. This has nothing to do with
678 Emacs---the version control system does it.
679
680 @node Interlocking
681 @subsection Protection against Simultaneous Editing
682
683 @cindex file dates
684 @cindex simultaneous editing
685 Simultaneous editing occurs when two users visit the same file, both
686 make changes, and then both save them. If nobody were informed that
687 this was happening, whichever user saved first would later find that his
688 changes were lost.
689
690 On some systems, Emacs notices immediately when the second user starts
691 to change the file, and issues an immediate warning. On all systems,
692 Emacs checks when you save the file, and warns if you are about to
693 overwrite another user's changes. You can prevent loss of the other
694 user's work by taking the proper corrective action instead of saving the
695 file.
696
697 @findex ask-user-about-lock
698 @cindex locking files
699 When you make the first modification in an Emacs buffer that is
700 visiting a file, Emacs records that the file is @dfn{locked} by you.
701 (It does this by creating a symbolic link in the same directory with a
702 different name.) Emacs removes the lock when you save the changes. The
703 idea is that the file is locked whenever an Emacs buffer visiting it has
704 unsaved changes.
705
706 @cindex collision
707 If you begin to modify the buffer while the visited file is locked by
708 someone else, this constitutes a @dfn{collision}. When Emacs detects a
709 collision, it asks you what to do, by calling the Lisp function
710 @code{ask-user-about-lock}. You can redefine this function for the sake
711 of customization. The standard definition of this function asks you a
712 question and accepts three possible answers:
713
714 @table @kbd
715 @item s
716 Steal the lock. Whoever was already changing the file loses the lock,
717 and you gain the lock.
718 @item p
719 Proceed. Go ahead and edit the file despite its being locked by someone else.
720 @item q
721 Quit. This causes an error (@code{file-locked}) and the modification you
722 were trying to make in the buffer does not actually take place.
723 @end table
724
725 Note that locking works on the basis of a file name; if a file has
726 multiple names, Emacs does not realize that the two names are the same file
727 and cannot prevent two users from editing it simultaneously under different
728 names. However, basing locking on names means that Emacs can interlock the
729 editing of new files that will not really exist until they are saved.
730
731 Some systems are not configured to allow Emacs to make locks, and
732 there are cases where lock files cannot be written. In these cases,
733 Emacs cannot detect trouble in advance, but it still can detect the
734 collision when you try to save a file and overwrite someone else's
735 changes.
736
737 If Emacs or the operating system crashes, this may leave behind lock
738 files which are stale, so you may occasionally get warnings about
739 spurious collisions. When you determine that the collision is spurious,
740 just use @kbd{p} to tell Emacs to go ahead anyway.
741
742 Every time Emacs saves a buffer, it first checks the last-modification
743 date of the existing file on disk to verify that it has not changed since the
744 file was last visited or saved. If the date does not match, it implies
745 that changes were made in the file in some other way, and these changes are
746 about to be lost if Emacs actually does save. To prevent this, Emacs
747 prints a warning message and asks for confirmation before saving.
748 Occasionally you will know why the file was changed and know that it does
749 not matter; then you can answer @kbd{yes} and proceed. Otherwise, you should
750 cancel the save with @kbd{C-g} and investigate the situation.
751
752 The first thing you should do when notified that simultaneous editing
753 has already taken place is to list the directory with @kbd{C-u C-x C-d}
754 (@pxref{Directories}). This shows the file's current author. You
755 should attempt to contact him to warn him not to continue editing.
756 Often the next step is to save the contents of your Emacs buffer under a
757 different name, and use @code{diff} to compare the two files.@refill
758
759 @node File Shadowing
760 @subsection Shadowing Files
761 @cindex shadow files
762 @cindex file shadows
763
764 @table @kbd
765 @item M-x shadow-initialize
766 Set up file shadowing.
767 @item M-x shadow-define-literal-group
768 Declare a single file to be shared between sites.
769 @item M-x shadow-define-regexp-group
770 Make all files that match each of a group of files be shared between hosts.
771 @item M-x shadow-define-cluster @key{RET} @var{name} @key{RET}
772 Define a shadow file cluster @var{name}.
773 @item M-x shadow-copy-files
774 Copy all pending shadow files.
775 @item M-x shadow-cancel
776 Cancel the instruction to shadow some files.
777 @end table
778
779 You can arrange to keep identical @dfn{shadow} copies of certain files
780 in more than one place---possibly on different machines. To do this,
781 first you must set up a @dfn{shadow file group}, which is a set of
782 identically-named files shared between a list of sites. The file
783 group is permanent and applies to further Emacs sessions as well as
784 the current one. Once the group is set up, every time you exit Emacs,
785 it will copy the file you edited to the other files in its group. You
786 can also do the copying without exiting Emacs, by typing @kbd{M-x
787 shadow-copy-files}.
788
789 To set up a shadow file group, use @kbd{M-x
790 shadow-define-literal-group} or @kbd{M-x shadow-define-regexp-group}.
791 See their documentation strings for further information.
792
793 Before copying a file to its shadows, Emacs asks for confirmation.
794 You can answer ``no'' to bypass copying of this file, this time. If
795 you want to cancel the shadowing permanently for a certain file, use
796 @kbd{M-x shadow-cancel} to eliminate or change the shadow file group.
797
798 A @dfn{shadow cluster} is a group of hosts that share directories, so
799 that copying to or from one of them is sufficient to update the file
800 on all of them. Each shadow cluster has a name, and specifies the
801 network address of a primary host (the one we copy files to), and a
802 regular expression that matches the hostnames of all the other hosts
803 in the cluster. You can define a shadow cluster with @kbd{M-x
804 shadow-define-cluster}.
805
806 @node Time Stamps
807 @subsection Updating Time Stamps Automatically
808 @findex time-stamp
809 @cindex time stamps
810 @cindex modification dates
811 @cindex locale, date format
812
813 You can arrange to put a time stamp in a file, so that it will be updated
814 automatically each time you edit and save the file. The time stamp
815 has to be in the first eight lines of the file, and you should
816 insert it like this:
817
818 @example
819 Time-stamp: <>
820 @end example
821
822 @noindent
823 or like this:
824
825 @example
826 Time-stamp: ""
827 @end example
828
829 Then add the hook function @code{time-stamp} to the hook
830 @code{write-file-hooks}; that hook function will automatically update
831 the time stamp, inserting the current date and time when you save the
832 file. You can also use the command @kbd{M-x time-stamp} to update the
833 time stamp manually. For other customizations, see the Custom group
834 @code{time-stamp}. Note that non-numeric fields in the time stamp are
835 formatted according to your locale setting (@pxref{Environment}).
836
837 @node Reverting
838 @section Reverting a Buffer
839 @findex revert-buffer
840 @cindex drastic changes
841 @cindex reread a file
842
843 If you have made extensive changes to a file and then change your mind
844 about them, you can get rid of them by reading in the previous version
845 of the file. To do this, use @kbd{M-x revert-buffer}, which operates on
846 the current buffer. Since reverting a buffer unintentionally could lose
847 a lot of work, you must confirm this command with @kbd{yes}.
848
849 @code{revert-buffer} keeps point at the same distance (measured in
850 characters) from the beginning of the file. If the file was edited only
851 slightly, you will be at approximately the same piece of text after
852 reverting as before. If you have made drastic changes, the same value of
853 point in the old file may address a totally different piece of text.
854
855 Reverting marks the buffer as ``not modified'' until another change is
856 made.
857
858 Some kinds of buffers whose contents reflect data bases other than files,
859 such as Dired buffers, can also be reverted. For them, reverting means
860 recalculating their contents from the appropriate data base. Buffers
861 created explicitly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
862 reports an error when asked to do so.
863
864 @vindex revert-without-query
865 When you edit a file that changes automatically and frequently---for
866 example, a log of output from a process that continues to run---it may be
867 useful for Emacs to revert the file without querying you, whenever you
868 visit the file again with @kbd{C-x C-f}.
869
870 To request this behavior, set the variable @code{revert-without-query}
871 to a list of regular expressions. When a file name matches one of these
872 regular expressions, @code{find-file} and @code{revert-buffer} will
873 revert it automatically if it has changed---provided the buffer itself
874 is not modified. (If you have edited the text, it would be wrong to
875 discard your changes.)
876
877 @cindex Global Auto-Revert mode
878 @cindex mode, Global Auto-Revert
879 @cindex Auto-Revert mode
880 @cindex mode, Auto-Revert
881 @findex global-auto-revert-mode
882 @findex auto-revert-mode
883 @vindex auto-revert-interval
884 You may find it useful to have Emacs revert files automatically when
885 they change. Two minor modes are available to do this. In Global
886 Auto-Revert mode, Emacs periodically checks all file buffers and
887 reverts any when the corresponding file has changed. The local
888 variant, Auto-Revert mode, applies only to buffers in which it was
889 activated. Checking the files is done at intervals determined by the
890 variable @code{auto-revert-interval}.
891
892 @node Auto Save
893 @section Auto-Saving: Protection Against Disasters
894 @cindex Auto Save mode
895 @cindex mode, Auto Save
896 @cindex crashes
897
898 Emacs saves all the visited files from time to time (based on counting
899 your keystrokes) without being asked. This is called @dfn{auto-saving}.
900 It prevents you from losing more than a limited amount of work if the
901 system crashes.
902
903 When Emacs determines that it is time for auto-saving, each buffer is
904 considered, and is auto-saved if auto-saving is turned on for it and it
905 has been changed since the last time it was auto-saved. The message
906 @samp{Auto-saving...} is displayed in the echo area during auto-saving,
907 if any files are actually auto-saved. Errors occurring during
908 auto-saving are caught so that they do not interfere with the execution
909 of commands you have been typing.
910
911 @menu
912 * Files: Auto Save Files. The file where auto-saved changes are
913 actually made until you save the file.
914 * Control: Auto Save Control. Controlling when and how often to auto-save.
915 * Recover:: Recovering text from auto-save files.
916 @end menu
917
918 @node Auto Save Files
919 @subsection Auto-Save Files
920
921 Auto-saving does not normally save in the files that you visited, because
922 it can be very undesirable to save a program that is in an inconsistent
923 state when you have made half of a planned change. Instead, auto-saving
924 is done in a different file called the @dfn{auto-save file}, and the
925 visited file is changed only when you request saving explicitly (such as
926 with @kbd{C-x C-s}).
927
928 Normally, the auto-save file name is made by appending @samp{#} to the
929 front and rear of the visited file name. Thus, a buffer visiting file
930 @file{foo.c} is auto-saved in a file @file{#foo.c#}. Most buffers that
931 are not visiting files are auto-saved only if you request it explicitly;
932 when they are auto-saved, the auto-save file name is made by appending
933 @samp{#%} to the front and @samp{#} to the rear of buffer name. For
934 example, the @samp{*mail*} buffer in which you compose messages to be
935 sent is auto-saved in a file named @file{#%*mail*#}. Auto-save file
936 names are made this way unless you reprogram parts of Emacs to do
937 something different (the functions @code{make-auto-save-file-name} and
938 @code{auto-save-file-name-p}). The file name to be used for auto-saving
939 in a buffer is calculated when auto-saving is turned on in that buffer.
940
941 When you delete a substantial part of the text in a large buffer, auto
942 save turns off temporarily in that buffer. This is because if you
943 deleted the text unintentionally, you might find the auto-save file more
944 useful if it contains the deleted text. To reenable auto-saving after
945 this happens, save the buffer with @kbd{C-x C-s}, or use @kbd{C-u 1 M-x
946 auto-save}.
947
948 @vindex auto-save-visited-file-name
949 If you want auto-saving to be done in the visited file, set the variable
950 @code{auto-save-visited-file-name} to be non-@code{nil}. In this mode,
951 there is really no difference between auto-saving and explicit saving.
952
953 @vindex delete-auto-save-files
954 A buffer's auto-save file is deleted when you save the buffer in its
955 visited file. To inhibit this, set the variable @code{delete-auto-save-files}
956 to @code{nil}. Changing the visited file name with @kbd{C-x C-w} or
957 @code{set-visited-file-name} renames any auto-save file to go with
958 the new visited name.
959
960 @node Auto Save Control
961 @subsection Controlling Auto-Saving
962
963 @vindex auto-save-default
964 @findex auto-save-mode
965 Each time you visit a file, auto-saving is turned on for that file's
966 buffer if the variable @code{auto-save-default} is non-@code{nil} (but not
967 in batch mode; @pxref{Entering Emacs}). The default for this variable is
968 @code{t}, so auto-saving is the usual practice for file-visiting buffers.
969 Auto-saving can be turned on or off for any existing buffer with the
970 command @kbd{M-x auto-save-mode}. Like other minor mode commands, @kbd{M-x
971 auto-save-mode} turns auto-saving on with a positive argument, off with a
972 zero or negative argument; with no argument, it toggles.
973
974 @vindex auto-save-interval
975 Emacs does auto-saving periodically based on counting how many characters
976 you have typed since the last time auto-saving was done. The variable
977 @code{auto-save-interval} specifies how many characters there are between
978 auto-saves. By default, it is 300.
979
980 @vindex auto-save-timeout
981 Auto-saving also takes place when you stop typing for a while. The
982 variable @code{auto-save-timeout} says how many seconds Emacs should
983 wait before it does an auto save (and perhaps also a garbage
984 collection). (The actual time period is longer if the current buffer is
985 long; this is a heuristic which aims to keep out of your way when you
986 are editing long buffers, in which auto-save takes an appreciable amount
987 of time.) Auto-saving during idle periods accomplishes two things:
988 first, it makes sure all your work is saved if you go away from the
989 terminal for a while; second, it may avoid some auto-saving while you
990 are actually typing.
991
992 Emacs also does auto-saving whenever it gets a fatal error. This
993 includes killing the Emacs job with a shell command such as @samp{kill
994 %emacs}, or disconnecting a phone line or network connection.
995
996 @findex do-auto-save
997 You can request an auto-save explicitly with the command @kbd{M-x
998 do-auto-save}.
999
1000 @node Recover
1001 @subsection Recovering Data from Auto-Saves
1002
1003 @findex recover-file
1004 You can use the contents of an auto-save file to recover from a loss
1005 of data with the command @kbd{M-x recover-file @key{RET} @var{file}
1006 @key{RET}}. This visits @var{file} and then (after your confirmation)
1007 restores the contents from its auto-save file @file{#@var{file}#}.
1008 You can then save with @kbd{C-x C-s} to put the recovered text into
1009 @var{file} itself. For example, to recover file @file{foo.c} from its
1010 auto-save file @file{#foo.c#}, do:@refill
1011
1012 @example
1013 M-x recover-file @key{RET} foo.c @key{RET}
1014 yes @key{RET}
1015 C-x C-s
1016 @end example
1017
1018 Before asking for confirmation, @kbd{M-x recover-file} displays a
1019 directory listing describing the specified file and the auto-save file,
1020 so you can compare their sizes and dates. If the auto-save file
1021 is older, @kbd{M-x recover-file} does not offer to read it.
1022
1023 @findex recover-session
1024 If Emacs or the computer crashes, you can recover all the files you
1025 were editing from their auto save files with the command @kbd{M-x
1026 recover-session}. This first shows you a list of recorded interrupted
1027 sessions. Move point to the one you choose, and type @kbd{C-c C-c}.
1028
1029 Then @code{recover-session} asks about each of the files that were
1030 being edited during that session, asking whether to recover that file.
1031 If you answer @kbd{y}, it calls @code{recover-file}, which works in its
1032 normal fashion. It shows the dates of the original file and its
1033 auto-save file, and asks once again whether to recover that file.
1034
1035 When @code{recover-session} is done, the files you've chosen to
1036 recover are present in Emacs buffers. You should then save them. Only
1037 this---saving them---updates the files themselves.
1038
1039 @vindex auto-save-list-file-prefix
1040 Emacs records interrupted sessions for later recovery in files named
1041 @file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. The
1042 @samp{~/.emacs.d/auto-save-list/.saves-} portion of these names comes
1043 from the value of @code{auto-save-list-file-prefix}. You can record
1044 sessions in a different place by customizing that variable. If you
1045 set @code{auto-save-list-file-prefix} to @code{nil} in your
1046 @file{.emacs} file, sessions are not recorded for recovery.
1047
1048 @node File Aliases
1049 @section File Name Aliases
1050
1051 Symbolic links and hard links both make it possible for several file
1052 names to refer to the same file. Hard links are alternate names that
1053 refer directly to the file; all the names are equally valid, and no one
1054 of them is preferred. By contrast, a symbolic link is a kind of defined
1055 alias: when @file{foo} is a symbolic link to @file{bar}, you can use
1056 either name to refer to the file, but @file{bar} is the real name, while
1057 @file{foo} is just an alias. More complex cases occur when symbolic
1058 links point to directories.
1059
1060 If you visit two names for the same file, normally Emacs makes
1061 two different buffers, but it warns you about the situation.
1062
1063 @vindex find-file-existing-other-name
1064 Normally, if you visit a file which Emacs is already visiting under
1065 a different name, Emacs displays a message in the echo area and uses
1066 the existing buffer visiting that file. This can happen on systems
1067 that support symbolic links, or if you use a long file name on a
1068 system that truncates long file names. You can disable this feature
1069 by setting the variable @code{find-file-existing-other-name} to
1070 @code{nil}. Then if you visit the same file under two different names,
1071 you get a separate buffer for each file name.
1072
1073 @vindex find-file-visit-truename
1074 @cindex truenames of files
1075 @cindex file truenames
1076 If the variable @code{find-file-visit-truename} is non-@code{nil},
1077 then the file name recorded for a buffer is the file's @dfn{truename}
1078 (made by replacing all symbolic links with their target names), rather
1079 than the name you specify. Setting @code{find-file-visit-truename} also
1080 implies the effect of @code{find-file-existing-other-name}.
1081
1082 @node Version Control
1083 @section Version Control
1084 @cindex version control
1085
1086 @dfn{Version control systems} are packages that can record multiple
1087 versions of a source file, usually storing the unchanged parts of the
1088 file just once. Version control systems also record history information
1089 such as the creation time of each version, who created it, and a
1090 description of what was changed in that version.
1091
1092 The Emacs version control interface is called VC. Its commands work
1093 with three version control systems---RCS, CVS, and SCCS. The GNU
1094 project recommends RCS and CVS, which are free software and available
1095 from the Free Software Foundation. We also have free software to
1096 replace SCCS, known as CSSC; if you are using SCCS and don't want to
1097 make the incompatible change to RCS or CVS, you can switch to CSSC.
1098
1099 @menu
1100 * Introduction to VC:: How version control works in general.
1101 * VC Mode Line:: How the mode line shows version control status.
1102 * Basic VC Editing:: How to edit a file under version control.
1103 * Old Versions:: Examining and comparing old versions.
1104 * Secondary VC Commands:: The commands used a little less frequently.
1105 * Branches:: Multiple lines of development.
1106 * Remote Repositories:: Efficient access to remote CVS servers.
1107 * Snapshots:: Sets of file versions treated as a unit.
1108 * Miscellaneous VC:: Various other commands and features of VC.
1109 * Customizing VC:: Variables that change VC's behavior.
1110 @end menu
1111
1112 @node Introduction to VC
1113 @subsection Introduction to Version Control
1114
1115 VC allows you to use a version control system from within Emacs,
1116 integrating the version control operations smoothly with editing. VC
1117 provides a uniform interface to version control, so that regardless of
1118 which version control system is in use, you can use it the same way.
1119
1120 This section provides a general overview of version control, and
1121 describes the version control systems that VC supports. You can skip
1122 this section if you are already familiar with the version control system
1123 you want to use.
1124
1125 @menu
1126 * Version Systems:: Supported version control back-end systems.
1127 * VC Concepts:: Words and concepts related to version control.
1128 @end menu
1129
1130 @node Version Systems
1131 @subsubsection Supported Version Control Systems
1132
1133 @cindex RCS
1134 @cindex back end (version control)
1135 VC currently works with three different version control systems or
1136 ``back ends'': RCS, CVS, and SCCS.
1137
1138 RCS is a free version control system that is available from the Free
1139 Software Foundation. It is perhaps the most mature of the supported
1140 back ends, and the VC commands are conceptually closest to RCS. Almost
1141 everything you can do with RCS can be done through VC.
1142
1143 @cindex CVS
1144 CVS is built on top of RCS, and extends the features of RCS, allowing
1145 for more sophisticated release management, and concurrent multi-user
1146 development. VC supports basic editing operations under CVS, but for
1147 some less common tasks you still need to call CVS from the command line.
1148 Note also that before using CVS you must set up a repository, which is a
1149 subject too complex to treat here.
1150
1151 @cindex SCCS
1152 SCCS is a proprietary but widely used version control system. In
1153 terms of capabilities, it is the weakest of the three that VC
1154 supports. VC compensates for certain features missing in SCCS
1155 (snapshots, for example) by implementing them itself, but some other VC
1156 features, such as multiple branches, are not available with SCCS. You
1157 should use SCCS only if for some reason you cannot use RCS.
1158
1159 @node VC Concepts
1160 @subsubsection Concepts of Version Control
1161
1162 @cindex master file
1163 @cindex registered file
1164 When a file is under version control, we also say that it is
1165 @dfn{registered} in the version control system. Each registered file
1166 has a corresponding @dfn{master file} which represents the file's
1167 present state plus its change history---enough to reconstruct the
1168 current version or any earlier version. Usually the master file also
1169 records a @dfn{log entry} for each version, describing in words what was
1170 changed in that version.
1171
1172 @cindex work file
1173 @cindex checking out files
1174 The file that is maintained under version control is sometimes called
1175 the @dfn{work file} corresponding to its master file. You edit the work
1176 file and make changes in it, as you would with an ordinary file. (With
1177 SCCS and RCS, you must @dfn{lock} the file before you start to edit it.)
1178 After you are done with a set of changes, you @dfn{check the file in},
1179 which records the changes in the master file, along with a log entry for
1180 them.
1181
1182 With CVS, there are usually multiple work files corresponding to a
1183 single master file---often each user has his own copy. It is also
1184 possible to use RCS in this way, but this is not the usual way to use
1185 RCS.
1186
1187 @cindex locking and version control
1188 A version control system typically has some mechanism to coordinate
1189 between users who want to change the same file. One method is
1190 @dfn{locking} (analogous to the locking that Emacs uses to detect
1191 simultaneous editing of a file, but distinct from it). The other method
1192 is to merge your changes with other people's changes when you check them
1193 in.
1194
1195 With version control locking, work files are normally read-only so
1196 that you cannot change them. You ask the version control system to make
1197 a work file writable for you by locking it; only one user can do
1198 this at any given time. When you check in your changes, that unlocks
1199 the file, making the work file read-only again. This allows other users
1200 to lock the file to make further changes. SCCS always uses locking, and
1201 RCS normally does.
1202
1203 The other alternative for RCS is to let each user modify the work file
1204 at any time. In this mode, locking is not required, but it is
1205 permitted; check-in is still the way to record a new version.
1206
1207 CVS normally allows each user to modify his own copy of the work file
1208 at any time, but requires merging with changes from other users at
1209 check-in time. However, CVS can also be set up to require locking.
1210 (@pxref{CVS Options}).
1211
1212 @node VC Mode Line
1213 @subsection Version Control and the Mode Line
1214
1215 When you visit a file that is under version control, Emacs indicates
1216 this on the mode line. For example, @samp{RCS-1.3} says that RCS is
1217 used for that file, and the current version is 1.3.
1218
1219 The character between the back-end name and the version number
1220 indicates the version control status of the file. @samp{-} means that
1221 the work file is not locked (if locking is in use), or not modified (if
1222 locking is not in use). @samp{:} indicates that the file is locked, or
1223 that it is modified. If the file is locked by some other user (for
1224 instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
1225
1226 @node Basic VC Editing
1227 @subsection Basic Editing under Version Control
1228
1229 The principal VC command is an all-purpose command that performs
1230 either locking or check-in, depending on the situation.
1231
1232 @table @kbd
1233 @item C-x C-q
1234 @itemx C-x v v
1235 Perform the next logical version control operation on this file.
1236 @end table
1237
1238 @findex vc-next-action
1239 @findex vc-toggle-read-only
1240 @kindex C-x v v
1241 @kindex C-x C-q @r{(Version Control)}
1242 Strictly speaking, the command for this job is @code{vc-next-action},
1243 bound to @kbd{C-x v v}. However, the normal meaning of @kbd{C-x C-q} is
1244 to make a read-only buffer writable, or vice versa; we have extended it
1245 to do the same job properly for files managed by version control, by
1246 performing the appropriate version control operations. When you type
1247 @kbd{C-x C-q} on a registered file, it acts like @kbd{C-x v v}.
1248
1249 The precise action of this command depends on the state of the file,
1250 and whether the version control system uses locking or not. SCCS and
1251 RCS normally use locking; CVS normally does not use locking.
1252
1253 @menu
1254 * VC with Locking:: RCS in its default mode, SCCS, and optionally CVS.
1255 * Without Locking:: Without locking: default mode for CVS.
1256 * Advanced C-x C-q:: Advanced features available with a prefix argument.
1257 * Log Buffer:: Features available in log entry buffers.
1258 @end menu
1259
1260 @node VC with Locking
1261 @subsubsection Basic Version Control with Locking
1262
1263 If locking is used for the file (as with SCCS, and RCS in its default
1264 mode), @kbd{C-x C-q} can either lock a file or check it in:
1265
1266 @itemize @bullet
1267 @item
1268 If the file is not locked, @kbd{C-x C-q} locks it, and
1269 makes it writable so that you can change it.
1270
1271 @item
1272 If the file is locked by you, and contains changes, @kbd{C-x C-q} checks
1273 in the changes. In order to do this, it first reads the log entry
1274 for the new version. @xref{Log Buffer}.
1275
1276 @item
1277 If the file is locked by you, but you have not changed it since you
1278 locked it, @kbd{C-x C-q} releases the lock and makes the file read-only
1279 again.
1280
1281 @item
1282 If the file is locked by some other user, @kbd{C-x C-q} asks you whether
1283 you want to ``steal the lock'' from that user. If you say yes, the file
1284 becomes locked by you, but a message is sent to the person who had
1285 formerly locked the file, to inform him of what has happened.
1286 @end itemize
1287
1288 These rules also apply when you use CVS in locking mode, except
1289 that there is no such thing as stealing a lock.
1290
1291 @node Without Locking
1292 @subsubsection Basic Version Control without Locking
1293
1294 When there is no locking---the default for CVS---work files are always
1295 writable; you do not need to do anything before you begin to edit a
1296 file. The status indicator on the mode line is @samp{-} if the file is
1297 unmodified; it flips to @samp{:} as soon as you save any changes in the
1298 work file.
1299
1300 Here is what @kbd{C-x C-q} does when using CVS:
1301
1302 @itemize @bullet
1303 @item
1304 If some other user has checked in changes into the master file, Emacs
1305 asks you whether you want to merge those changes into your own work
1306 file. You must do this before you can check in your own changes. (To
1307 pick up any recent changes from the master file @emph{without} trying
1308 to commit your own changes, type @kbd{C-x v m @key{RET}}.)
1309 @xref{Merging}.
1310
1311 @item
1312 If there are no new changes in the master file, but you have made
1313 modifications in your work file, @kbd{C-x C-q} checks in your changes.
1314 In order to do this, it first reads the log entry for the new version.
1315 @xref{Log Buffer}.
1316
1317 @item
1318 If the file is not modified, the @kbd{C-x C-q} does nothing.
1319 @end itemize
1320
1321 These rules also apply when you use RCS in the mode that does not
1322 require locking, except that automatic merging of changes from the
1323 master file is not implemented. Unfortunately, this means that nothing
1324 informs you if another user has checked in changes in the same file
1325 since you began editing it, and when this happens, his changes will be
1326 effectively removed when you check in your version (though they will
1327 remain in the master file, so they will not be entirely lost). You must
1328 therefore verify the current version is unchanged, before you check in your
1329 changes. We hope to eliminate this risk and provide automatic merging
1330 with RCS in a future Emacs version.
1331
1332 In addition, locking is possible with RCS even in this mode, although
1333 it is not required; @kbd{C-x C-q} with an unmodified file locks the
1334 file, just as it does with RCS in its normal (locking) mode.
1335
1336 @node Advanced C-x C-q
1337 @subsubsection Advanced Control in @kbd{C-x C-q}
1338
1339 When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
1340 C-x C-q}), it still performs the next logical version control
1341 operation, but accepts additional arguments to specify precisely how
1342 to do the operation.
1343
1344 @itemize @bullet
1345 @item
1346 If the file is modified (or locked), you can specify the version
1347 number to use for the new verion that you check-in. This is one way
1348 to create a new branch (@pxref{Branches}).
1349
1350 @item
1351 If the file is not modified (and unlocked), you can specify the
1352 version to select; this lets you start working from an older version,
1353 or on another branch. If you do not enter any version, that takes you
1354 to the highest version on the current branch; therefore @kbd{C-u C-x
1355 C-q @key{RET}} is a convenient way to get the latest version of a file from
1356 the repository.
1357
1358 @item
1359 Instead of the version number, you can also specify the name of a
1360 version control system. This is useful when one file is being managed
1361 with two version control systems at the same time file (@pxref{Local
1362 Version Control}).
1363 @end itemize
1364
1365 @node Log Buffer
1366 @subsubsection Features of the Log Entry Buffer
1367
1368 When you check in changes, @kbd{C-x C-q} first reads a log entry. It
1369 pops up a buffer called @samp{*VC-Log*} for you to enter the log entry.
1370 When you are finished, type @kbd{C-c C-c} in the @samp{*VC-Log*} buffer.
1371 That is when check-in really happens.
1372
1373 To abort check-in, just @strong{don't} type @kbd{C-c C-c} in that
1374 buffer. You can switch buffers and do other editing. As long as you
1375 don't try to check in another file, the entry you were editing remains
1376 in the @samp{*VC-Log*} buffer, and you can go back to that buffer at any
1377 time to complete the check-in.
1378
1379 If you change several source files for the same reason, it is often
1380 convenient to specify the same log entry for many of the files. To do
1381 this, use the history of previous log entries. The commands @kbd{M-n},
1382 @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for doing this work just like the
1383 minibuffer history commands (except that these versions are used outside
1384 the minibuffer).
1385
1386 @vindex vc-log-mode-hook
1387 Each time you check in a file, the log entry buffer is put into VC Log
1388 mode, which involves running two hooks: @code{text-mode-hook} and
1389 @code{vc-log-mode-hook}. @xref{Hooks}.
1390
1391 @node Old Versions
1392 @subsection Examining And Comparing Old Versions
1393
1394 One of the convenient features of version control is the ability
1395 to examine any version of a file, or compare two versions.
1396
1397 @table @kbd
1398 @item C-x v ~ @var{version} @key{RET}
1399 Examine version @var{version} of the visited file, in a buffer of its
1400 own.
1401
1402 @item C-x v =
1403 Compare the current buffer contents with the latest checked-in version
1404 of the file.
1405
1406 @item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
1407 Compare the specified two versions of @var{file}.
1408
1409 @item C-x v g
1410 Display the result of the CVS annotate command using colors.
1411 @end table
1412
1413 @findex vc-version-other-window
1414 @kindex C-x v ~
1415 To examine an old version in toto, visit the file and then type
1416 @kbd{C-x v ~ @var{version} @key{RET}} (@code{vc-version-other-window}).
1417 This puts the text of version @var{version} in a file named
1418 @file{@var{filename}.~@var{version}~}, and visits it in its own buffer
1419 in a separate window. (In RCS, you can also select an old version
1420 and create a branch from it. @xref{Branches}.)
1421
1422 @findex vc-diff
1423 @kindex C-x v =
1424 It is usually more convenient to compare two versions of the file,
1425 with the command @kbd{C-x v =} (@code{vc-diff}). Plain @kbd{C-x v =}
1426 compares the current buffer contents (saving them in the file if
1427 necessary) with the last checked-in version of the file. @kbd{C-u C-x
1428 v =}, with a numeric argument, reads a file name and two version
1429 numbers, then compares those versions of the specified file. Both
1430 forms display the output in a special buffer in another window.
1431
1432 You can specify a checked-in version by its number; an empty input
1433 specifies the current contents of the work file (which may be different
1434 from all the checked-in versions). You can also specify a snapshot name
1435 (@pxref{Snapshots}) instead of one or both version numbers.
1436
1437 If you supply a directory name instead of the name of a registered
1438 file, this command compares the two specified versions of all registered
1439 files in that directory and its subdirectories.
1440
1441 @vindex diff-switches
1442 @vindex vc-diff-switches
1443 @kbd{C-x v =} works by running a variant of the @code{diff} utility
1444 designed to work with the version control system in use. Emacs passes
1445 the contents of the variable @code{diff-switches} to it; you can
1446 specify comparison options for version control in
1447 @code{vc-diff-switches}, and there are similar variables for each
1448 specific system---@code{vc-rcs-diff-switches}, and so on.
1449
1450 Unlike the @kbd{M-x diff} command, @kbd{C-x v =} does not try to
1451 locate the changes in the old and new versions. This is because
1452 normally one or both versions do not exist as files when you compare
1453 them; they exist only in the records of the master file.
1454 @xref{Comparing Files}, for more information about @kbd{M-x diff}.
1455
1456 @findex vc-annotate
1457 @kindex C-x v g
1458 For CVS-controlled files, you can display the result of the CVS
1459 annotate command, using colors to enhance the visual appearance. Use
1460 the command @kbd{M-x vc-annotate} to do this. Red means new, blue means
1461 old, and intermediate colors indicate intermediate ages. A prefix
1462 argument @var{n} specifies a stretch factor for the time scale; it makes
1463 each color cover a period @var{n} times as long.
1464
1465 @node Secondary VC Commands
1466 @subsection The Secondary Commands of VC
1467
1468 This section explains the secondary commands of VC; those that you might
1469 use once a day.
1470
1471 @menu
1472 * Registering:: Putting a file under version control.
1473 * VC Status:: Viewing the VC status of files.
1474 * VC Undo:: Cancelling changes before or after check-in.
1475 * VC Dired Mode:: Listing files managed by version control.
1476 * VC Dired Commands:: Commands to use in a VC Dired buffer.
1477 @end menu
1478
1479 @node Registering
1480 @subsubsection Registering a File for Version Control
1481
1482 @kindex C-x v i
1483 @findex vc-register
1484 You can put any file under version control by simply visiting it, and
1485 then typing @w{@kbd{C-x v i}} (@code{vc-register}).
1486
1487 @table @kbd
1488 @item C-x v i
1489 Register the visited file for version control.
1490 @end table
1491
1492 To register the file, Emacs must choose which version control system
1493 to use for it. If the file's directory already contains files
1494 registered in a version control system, Emacs uses that system. If
1495 there is more than one system in use for a directory, Emacs uses the one
1496 that appears first in @code{vc-handled-backends} (@pxref{Customizing VC}).
1497 On the other hand, if there are no files already registered,
1498 Emacs uses the first system from @code{vc-handled-backends} that could
1499 register the file---for example, you cannot register a file under CVS if
1500 its directory is not already part of a CVS tree.
1501
1502 With the default value of @code{vc-handled-backends}, this means
1503 that Emacs uses RCS if there are any files under RCS control, CVS if
1504 there are any files under CVS, SCCS if any files are under SCCS, or
1505 RCS as the ultimate default.
1506
1507 If locking is in use, @kbd{C-x v i} leaves the file unlocked and
1508 read-only. Type @kbd{C-x C-q} if you wish to start editing it. After
1509 registering a file with CVS, you must subsequently commit the initial
1510 version by typing @kbd{C-x C-q}.
1511
1512 @vindex vc-default-init-version
1513 The initial version number for a newly registered file is 1.1, by
1514 default. You can specify a different default by setting the variable
1515 @code{vc-default-init-version}, or you can give @kbd{C-x v i} a numeric
1516 argument; then it reads the initial version number for this particular
1517 file using the minibuffer.
1518
1519 @vindex vc-initial-comment
1520 If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
1521 initial comment to describe the purpose of this source file. Reading
1522 the initial comment works like reading a log entry (@pxref{Log Buffer}).
1523
1524 @node VC Status
1525 @subsubsection VC Status Commands
1526
1527 @table @kbd
1528 @item C-x v l
1529 Display version control state and change history.
1530 @end table
1531
1532 @kindex C-x v l
1533 @findex vc-print-log
1534 To view the detailed version control status and history of a file,
1535 type @kbd{C-x v l} (@code{vc-print-log}). It displays the history of
1536 changes to the current file, including the text of the log entries. The
1537 output appears in a separate window.
1538
1539 @node VC Undo
1540 @subsubsection Undoing Version Control Actions
1541
1542 @table @kbd
1543 @item C-x v u
1544 Revert the buffer and the file to the last checked-in version.
1545
1546 @item C-x v c
1547 Remove the last-entered change from the master for the visited file.
1548 This undoes your last check-in.
1549 @end table
1550
1551 @kindex C-x v u
1552 @findex vc-revert-buffer
1553 If you want to discard your current set of changes and revert to the
1554 last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
1555 This leaves the file unlocked; if locking is in use, you must first lock
1556 the file again before you change it again. @kbd{C-x v u} requires
1557 confirmation, unless it sees that you haven't made any changes since the
1558 last checked-in version.
1559
1560 @kbd{C-x v u} is also the command to unlock a file if you lock it and
1561 then decide not to change it.
1562
1563 @kindex C-x v c
1564 @findex vc-cancel-version
1565 To cancel a change that you already checked in, use @kbd{C-x v c}
1566 (@code{vc-cancel-version}). This command discards all record of the
1567 most recent checked-in version. @kbd{C-x v c} also offers to revert
1568 your work file and buffer to the previous version (the one that precedes
1569 the version that is deleted).
1570
1571 If you answer @kbd{no}, VC keeps your changes in the buffer, and locks
1572 the file. The no-revert option is useful when you have checked in a
1573 change and then discover a trivial error in it; you can cancel the
1574 erroneous check-in, fix the error, and check the file in again.
1575
1576 When @kbd{C-x v c} does not revert the buffer, it unexpands all
1577 version control headers in the buffer instead (@pxref{Version Headers}).
1578 This is because the buffer no longer corresponds to any existing
1579 version. If you check it in again, the check-in process will expand the
1580 headers properly for the new version number.
1581
1582 However, it is impossible to unexpand the RCS @samp{@w{$}Log$} header
1583 automatically. If you use that header feature, you have to unexpand it
1584 by hand---by deleting the entry for the version that you just canceled.
1585
1586 Be careful when invoking @kbd{C-x v c}, as it is easy to lose a lot of
1587 work with it. To help you be careful, this command always requires
1588 confirmation with @kbd{yes}. Note also that this command is disabled
1589 under CVS, because canceling versions is very dangerous and discouraged
1590 with CVS.
1591
1592 @node VC Dired Mode
1593 @subsubsection Dired under VC
1594
1595 @cindex PCL-CVS
1596 @pindex cvs
1597 @cindex CVS Dired Mode
1598 The VC Dired Mode described here works with all the version control
1599 systems that VC supports. Another more powerful facility, designed
1600 specifically for CVS, is called PCL-CVS. @xref{Top, , About PCL-CVS,
1601 pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.
1602
1603 @kindex C-x v d
1604 @findex vc-directory
1605 When you are working on a large program, it is often useful to find
1606 out which files have changed within an entire directory tree, or to view
1607 the status of all files under version control at once, and to perform
1608 version control operations on collections of files. You can use the
1609 command @kbd{C-x v d} (@code{vc-directory}) to make a directory listing
1610 that includes only files relevant for version control.
1611
1612 @vindex vc-dired-terse-display
1613 @kbd{C-x v d} creates a buffer which uses VC Dired Mode. This looks
1614 much like an ordinary Dired buffer (@pxref{Dired}); however, normally it
1615 shows only the noteworthy files (those locked or not up-to-date). This
1616 is called @dfn{terse display}. If you set the variable
1617 @code{vc-dired-terse-display} to @code{nil}, then VC Dired shows all
1618 relevant files---those managed under version control, plus all
1619 subdirectories (@dfn{full display}). The command @kbd{v t} in a VC
1620 Dired buffer toggles between terse display and full display (@pxref{VC
1621 Dired Commands}).
1622
1623 @vindex vc-dired-recurse
1624 By default, VC Dired produces a recursive listing of noteworthy or
1625 relevant files at or below the given directory. You can change this by
1626 setting the variable @code{vc-dired-recurse} to @code{nil}; then VC
1627 Dired shows only the files in the given directory.
1628
1629 The line for an individual file shows the version control state in the
1630 place of the hard link count, owner, group, and size of the file. If
1631 the file is unmodified, in sync with the master file, the version
1632 control state shown is blank. Otherwise it consists of text in
1633 parentheses. Under RCS and SCCS, the name of the user locking the file
1634 is shown; under CVS, an abbreviated version of the @samp{cvs status}
1635 output is used. Here is an example using RCS:
1636
1637 @smallexample
1638 @group
1639 /home/jim/project:
1640
1641 -rw-r--r-- (jim) Apr 2 23:39 file1
1642 -r--r--r-- Apr 5 20:21 file2
1643 @end group
1644 @end smallexample
1645
1646 @noindent
1647 The files @samp{file1} and @samp{file2} are under version control,
1648 @samp{file1} is locked by user jim, and @samp{file2} is unlocked.
1649
1650 Here is an example using CVS:
1651
1652 @smallexample
1653 @group
1654 /home/joe/develop:
1655
1656 -rw-r--r-- (modified) Aug 2 1997 file1.c
1657 -rw-r--r-- Apr 4 20:09 file2.c
1658 -rw-r--r-- (merge) Sep 13 1996 file3.c
1659 @end group
1660 @end smallexample
1661
1662 Here @samp{file1.c} is modified with respect to the repository, and
1663 @samp{file2.c} is not. @samp{file3.c} is modified, but other changes
1664 have also been checked in to the repository---you need to merge them
1665 with the work file before you can check it in.
1666
1667 @vindex vc-directory-exclusion-list
1668 When VC Dired displays subdirectories (in the ``full'' display mode),
1669 it omits some that should never contain any files under version control.
1670 By default, this includes Version Control subdirectories such as
1671 @samp{RCS} and @samp{CVS}; you can customize this by setting the
1672 variable @code{vc-directory-exclusion-list}.
1673
1674 You can fine-tune VC Dired's format by typing @kbd{C-u C-x v d}---as in
1675 ordinary Dired, that allows you to specify additional switches for the
1676 @samp{ls} command.
1677
1678 @node VC Dired Commands
1679 @subsubsection VC Dired Commands
1680
1681 All the usual Dired commands work normally in VC Dired mode, except
1682 for @kbd{v}, which is redefined as the version control prefix. You can
1683 invoke VC commands such as @code{vc-diff} and @code{vc-print-log} by
1684 typing @kbd{v =}, or @kbd{v l}, and so on. Most of these commands apply
1685 to the file name on the current line.
1686
1687 The command @kbd{v v} (@code{vc-next-action}) operates on all the
1688 marked files, so that you can lock or check in several files at once.
1689 If it operates on more than one file, it handles each file according to
1690 its current state; thus, it might lock one file, but check in another
1691 file. This could be confusing; it is up to you to avoid confusing
1692 behavior by marking a set of files that are in a similar state.
1693
1694 If any files call for check-in, @kbd{v v} reads a single log entry,
1695 then uses it for all the files being checked in. This is convenient for
1696 registering or checking in several files at once, as part of the same
1697 change.
1698
1699 @findex vc-dired-toggle-terse-mode
1700 @findex vc-dired-mark-locked
1701 You can toggle between terse display (only locked files, or files not
1702 up-to-date) and full display at any time by typing @kbd{v t}
1703 (@code{vc-dired-toggle-terse-mode}). There is also a special command
1704 @kbd{* l} (@code{vc-dired-mark-locked}), which marks all files currently
1705 locked (or, with CVS, all files not up-to-date). Thus, typing @kbd{* l
1706 t k} is another way to delete from the buffer all files except those
1707 currently locked.
1708
1709 @node Branches
1710 @subsection Multiple Branches of a File
1711 @cindex branch (version control)
1712 @cindex trunk (version control)
1713
1714 One use of version control is to maintain multiple ``current''
1715 versions of a file. For example, you might have different versions of a
1716 program in which you are gradually adding various unfinished new
1717 features. Each such independent line of development is called a
1718 @dfn{branch}. VC allows you to create branches, switch between
1719 different branches, and merge changes from one branch to another.
1720 Please note, however, that branches are only supported for RCS at the
1721 moment.
1722
1723 A file's main line of development is usually called the @dfn{trunk}.
1724 The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc. At
1725 any such version, you can start an independent branch. A branch
1726 starting at version 1.2 would have version number 1.2.1.1, and consecutive
1727 versions on this branch would have numbers 1.2.1.2, 1.2.1.3, 1.2.1.4,
1728 and so on. If there is a second branch also starting at version 1.2, it
1729 would consist of versions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc.
1730
1731 @cindex head version
1732 If you omit the final component of a version number, that is called a
1733 @dfn{branch number}. It refers to the highest existing version on that
1734 branch---the @dfn{head version} of that branch. The branches in the
1735 example above have branch numbers 1.2.1 and 1.2.2.
1736
1737 @menu
1738 * Switching Branches:: How to get to another existing branch.
1739 * Creating Branches:: How to start a new branch.
1740 * Merging:: Transferring changes between branches.
1741 * Multi-User Branching:: Multiple users working at multiple branches
1742 in parallel.
1743 @end menu
1744
1745 @node Switching Branches
1746 @subsubsection Switching between Branches
1747
1748 To switch between branches, type @kbd{C-u C-x C-q} and specify the
1749 version number you want to select. This version is then visited
1750 @emph{unlocked} (write-protected), so you can examine it before locking
1751 it. Switching branches in this way is allowed only when the file is not
1752 locked.
1753
1754 You can omit the minor version number, thus giving only the branch
1755 number; this takes you to the head version on the chosen branch. If you
1756 only type @key{RET}, Emacs goes to the highest version on the trunk.
1757
1758 After you have switched to any branch (including the main branch), you
1759 stay on it for subsequent VC commands, until you explicitly select some
1760 other branch.
1761
1762 @node Creating Branches
1763 @subsubsection Creating New Branches
1764
1765 To create a new branch from a head version (one that is the latest in
1766 the branch that contains it), first select that version if necessary,
1767 lock it with @kbd{C-x C-q}, and make whatever changes you want. Then,
1768 when you check in the changes, use @kbd{C-u C-x C-q}. This lets you
1769 specify the version number for the new version. You should specify a
1770 suitable branch number for a branch starting at the current version.
1771 For example, if the current version is 2.5, the branch number should be
1772 2.5.1, 2.5.2, and so on, depending on the number of existing branches at
1773 that point.
1774
1775 To create a new branch at an older version (one that is no longer the
1776 head of a branch), first select that version (@pxref{Switching
1777 Branches}), then lock it with @kbd{C-x C-q}. You'll be asked to
1778 confirm, when you lock the old version, that you really mean to create a
1779 new branch---if you say no, you'll be offered a chance to lock the
1780 latest version instead.
1781
1782 Then make your changes and type @kbd{C-x C-q} again to check in a new
1783 version. This automatically creates a new branch starting from the
1784 selected version. You need not specially request a new branch, because
1785 that's the only way to add a new version at a point that is not the head
1786 of a branch.
1787
1788 After the branch is created, you ``stay'' on it. That means that
1789 subsequent check-ins create new versions on that branch. To leave the
1790 branch, you must explicitly select a different version with @kbd{C-u C-x
1791 C-q}. To transfer changes from one branch to another, use the merge
1792 command, described in the next section.
1793
1794 @node Merging
1795 @subsubsection Merging Branches
1796
1797 @cindex merging changes
1798 When you have finished the changes on a certain branch, you will
1799 often want to incorporate them into the file's main line of development
1800 (the trunk). This is not a trivial operation, because development might
1801 also have proceeded on the trunk, so that you must @dfn{merge} the
1802 changes into a file that has already been changed otherwise. VC allows
1803 you to do this (and other things) with the @code{vc-merge} command.
1804
1805 @table @kbd
1806 @item C-x v m (vc-merge)
1807 Merge changes into the work file.
1808 @end table
1809
1810 @kindex C-x v m
1811 @findex vc-merge
1812 @kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it
1813 into the current version of the work file. It firsts asks you in the
1814 minibuffer where the changes should come from. If you just type
1815 @key{RET}, Emacs merges any changes that were made on the same branch
1816 since you checked the file out (we call this @dfn{merging the news}).
1817 This is the common way to pick up recent changes from the repository,
1818 regardless of whether you have already changed the file yourself.
1819
1820 You can also enter a branch number or a pair of version numbers in
1821 the minibuffer. Then @kbd{C-x v m} finds the changes from that branch,
1822 or between the two versions you specified, and merges them into the
1823 current version of the current file.
1824
1825 As an example, suppose that you have finished a certain feature on
1826 branch 1.3.1. In the meantime, development on the trunk has proceeded
1827 to version 1.5. To merge the changes from the branch to the trunk,
1828 first go to the head version of the trunk, by typing @kbd{C-u C-x C-q
1829 @key{RET}}. Version 1.5 is now current. If locking is used for the file,
1830 type @kbd{C-x C-q} to lock version 1.5 so that you can change it. Next,
1831 type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on
1832 branch 1.3.1 (relative to version 1.3, where the branch started, up to
1833 the last version on the branch) and merges it into the current version
1834 of the work file. You can now check in the changed file, thus creating
1835 version 1.6 containing the changes from the branch.
1836
1837 It is possible to do further editing after merging the branch, before
1838 the next check-in. But it is usually wiser to check in the merged
1839 version, then lock it and make the further changes. This will keep
1840 a better record of the history of changes.
1841
1842 @cindex conflicts
1843 @cindex resolving conflicts
1844 When you merge changes into a file that has itself been modified, the
1845 changes might overlap. We call this situation a @dfn{conflict}, and
1846 reconciling the conflicting changes is called @dfn{resolving a
1847 conflict}.
1848
1849 Whenever conflicts occur during merging, VC detects them, tells you
1850 about them in the echo area, and asks whether you want help in merging.
1851 If you say yes, it starts an Ediff session (@pxref{Top,
1852 Ediff, Ediff, ediff, The Ediff Manual}).
1853
1854 If you say no, the conflicting changes are both inserted into the
1855 file, surrounded by @dfn{conflict markers}. The example below shows how
1856 a conflict region looks; the file is called @samp{name} and the current
1857 master file version with user B's changes in it is 1.11.
1858
1859 @c @w here is so CVS won't think this is a conflict.
1860 @smallexample
1861 @group
1862 @w{<}<<<<<< name
1863 @var{User A's version}
1864 =======
1865 @var{User B's version}
1866 @w{>}>>>>>> 1.11
1867 @end group
1868 @end smallexample
1869
1870 @cindex vc-resolve-conflicts
1871 Then you can resolve the conflicts by editing the file manually. Or
1872 you can type @code{M-x vc-resolve-conflicts} after visiting the file.
1873 This starts an Ediff session, as described above.
1874
1875 @node Multi-User Branching
1876 @subsubsection Multi-User Branching
1877
1878 It is often useful for multiple developers to work simultaneously on
1879 different branches of a file. CVS allows this by default; for RCS, it
1880 is possible if you create multiple source directories. Each source
1881 directory should have a link named @file{RCS} which points to a common
1882 directory of RCS master files. Then each source directory can have its
1883 own choice of selected versions, but all share the same common RCS
1884 records.
1885
1886 This technique works reliably and automatically, provided that the
1887 source files contain RCS version headers (@pxref{Version Headers}). The
1888 headers enable Emacs to be sure, at all times, which version number is
1889 present in the work file.
1890
1891 If the files do not have version headers, you must instead tell Emacs
1892 explicitly in each session which branch you are working on. To do this,
1893 first find the file, then type @kbd{C-u C-x C-q} and specify the correct
1894 branch number. This ensures that Emacs knows which branch it is using
1895 during this particular editing session.
1896
1897 @node Remote Repositories
1898 @subsection Remote Repositories
1899 @cindex remote repositories (CVS)
1900
1901 A common way of using CVS is to set up a central CVS repository on
1902 some Internet host, then have each developer check out a personal
1903 working copy of the files on his local machine. Committing changes to
1904 the repository, and picking up changes from other users into one's own
1905 working area, then works by direct interactions with the CVS server.
1906
1907 One difficulty is that access to the CVS server is often slow, and
1908 that developers might need to work offline as well. VC is designed
1909 to reduce the amount of network interaction necessary.
1910
1911 @menu
1912 * Version Backups:: Keeping local copies of repository versions.
1913 * Local Version Control:: Using another version system for local editing.
1914 @end menu
1915
1916 @node Version Backups
1917 @subsubsection Version Backups
1918 @cindex version backups
1919
1920 @cindex automatic version backups
1921 When VC sees that the CVS repository for a file is on a remote
1922 machine, it automatically makes local backups of unmodified versions
1923 of the file---@dfn{automatic version backups}. This means that you
1924 can compare the file to the repository version (@kbd{C-x v =}), or
1925 revert to that version (@kbd{C-x v u}), without any network
1926 interactions.
1927
1928 The local copy of the unmodified file is called a @dfn{version
1929 backup} to indicate that it corresponds exactly to a version that is
1930 stored in the repository. Note that version backups are not the same
1931 as ordinary Emacs backup files (@pxref{Backup}). But they follow a
1932 similar naming convention.
1933
1934 For a file that comes from a remote CVS repository, VC makes a
1935 version backup whenever you save the first changes to the file, and
1936 removes it after you have committed your modified version to the
1937 repository. You can disable the making of automatic version backups by
1938 setting @code{vc-cvs-stay-local} to @code{nil} (@pxref{CVS Options}).
1939
1940 @cindex manual version backups
1941 The name of the automatic version backup for version @var{version}
1942 of file @var{file} is @code{@var{file}.~@var{version}.~}. This is
1943 almost the same as the name used by @kbd{C-x v ~} (@pxref{Old
1944 Versions}), the only difference being the additional dot (@samp{.})
1945 after the version number. This similarity is intentional, because
1946 both kinds of files store the same kind of information. The file made
1947 by @kbd{C-x v ~} acts as a @dfn{manual version backup}.
1948
1949 All the VC commands that operate on old versions of a file can use
1950 both kinds of version backups. For instance, @kbd{C-x v ~} uses
1951 either an automatic or a manual version backup, if possible, to get
1952 the contents of the version you request. Likewise, @kbd{C-x v =} and
1953 @kbd{C-x v u} use either an automatic or a manual version backup, if
1954 one of them exists, to get the contents of a version to compare or
1955 revert to. If you changed a file outside of Emacs, so that no
1956 automatic version backup was created for the previous text, you can
1957 create a manual backup of that version using @kbd{C-x v ~}, and thus
1958 obtain the benefit of the local copy for Emacs commands.
1959
1960 The only difference in Emacs's handling of manual and automatic
1961 version backups, once they exist, is that Emacs deletes automatic
1962 version backups when you commit to the repository. By contrast,
1963 manual version backups remain until you delete them.
1964
1965 @node Local Version Control
1966 @subsubsection Local Version Control
1967 @cindex local version control
1968 @cindex local back end (version control)
1969
1970 When you make many changes to a file that comes from a remote
1971 repository, it can be convenient to have version control on your local
1972 machine as well. You can then record intermediate versions, revert to
1973 a previous state, etc., before you actually commit your changes to the
1974 remote server.
1975
1976 VC lets you do this by putting a file under a second, local version
1977 control system, so that the file is effectively registered in two
1978 systems at the same time. For the description here, we will assume
1979 that the remote system is CVS, and you use RCS locally, although the
1980 mechanism works with any combination of version control systems
1981 (@dfn{back ends}).
1982
1983 To make it work with other back ends, you must make sure that the
1984 ``more local'' back end comes before the ``more remote'' back end in
1985 the setting of @code{vc-handled-backends} (@pxref{Customizing VC}). By
1986 default, this variable is set up so that you can use remote CVS and
1987 local RCS as described here.
1988
1989 To start using local RCS for a file that comes from a remote CVS
1990 server, you must @emph{register the file in RCS}, by typing @kbd{C-u
1991 C-x v v rcs @key{RET}}. (In other words, use @code{vc-next-action} with a
1992 prefix argument, and specify RCS as the back end.)
1993
1994 You can do this at any time; it does not matter whether you have
1995 already modified the file with respect to the version in the CVS
1996 repository. If possible, VC tries to make the RCS master start with
1997 the unmodified repository version, then checks in any local changes
1998 as a new version. This works if you have not made any changes yet, or
1999 if the unmodified repository version exists locally as a version
2000 backup (@pxref{Version Backups}). If the unmodified version is not
2001 available locally, the RCS master starts with the modified version;
2002 the only drawback to this is that you cannot compare your changes
2003 locally to what is stored in the repository.
2004
2005 The version number of the RCS master is derived from the current CVS
2006 version, starting a branch from it. For example, if the current CVS
2007 version is 1.23, the local RCS branch will be 1.23.1. Version 1.23 in
2008 the RCS master will be identical to version 1.23 under CVS; your first
2009 changes are checked in as 1.23.1.1. (If the unmodified file is not
2010 available locally, VC will check in the modified file twice, both as
2011 1.23 and 1.23.1.1, to make the revision numbers consistent.)
2012
2013 If you do not use locking under CVS (the default), locking is also
2014 disabled for RCS, so that editing under RCS works exactly as under
2015 CVS.
2016
2017 When you are done with local editing, you can commit the final version
2018 back to the CVS repository by typing @kbd{C-u C-x v v cvs @key{RET}}.
2019 This initializes the log entry buffer (@pxref{Log Buffer}) to contain
2020 all the log entries you have recorded in the RCS master; you can edit
2021 them as you wish, and then commit in CVS by typing @kbd{C-c C-c}. If
2022 the commit is successful, VC removes the RCS master, so that the file
2023 is once again registered under CVS only. (The RCS master is not
2024 actually deleted, just renamed by appending @samp{~} to the name, so
2025 that you can refer to it later if you wish.)
2026
2027 While using local RCS, you can pick up recent changes from the CVS
2028 repository into your local file, or commit some of your changes back
2029 to CVS, without terminating local RCS version control. To do this,
2030 switch to the CVS backend temporarily, with the @kbd{C-x v b} command:
2031
2032 @table @kbd
2033 @item C-x v b
2034 Switch to another back end that the current file is registered
2035 under (@code{vc-switch-backend}).
2036
2037 @item C-u C-x v b @var{backend} @key{RET}
2038 Switch to @var{backend} for the current file.
2039 @end table
2040
2041 @kindex C-x v b
2042 @findex vc-switch-backend
2043 @kbd{C-x v b} does not change the buffer contents, or any files; it
2044 only changes VC's perspective on how to handle the file. Any
2045 subsequent VC commands for that file will operate on the back end that
2046 is currently selected.
2047
2048 If the current file is registered in more than one back end, typing
2049 @kbd{C-x v b} ``cycles'' through all of these back ends. With a
2050 prefix argument, it asks for the back end to use in the minibuffer.
2051
2052 Thus, if you are using local RCS, and you want to pick up some recent
2053 changes in the file from remote CVS, first visit the file, then type
2054 @kbd{C-x v b} to switch to CVS, and finally use @kbd{C-x v m
2055 @key{RET}} to merge the news (@pxref{Merging}). You can then switch
2056 back to RCS by typing @kbd{C-x v b} again, and continue to edit
2057 locally.
2058
2059 But if you do this, the revision numbers in the RCS master no longer
2060 correspond to those of CVS. Technically, this is not a problem, but
2061 it can become difficult to keep track of what is in the CVS repository
2062 and what is not. So we suggest that you return from time to time to
2063 CVS-only operation, using @kbd{C-u C-x v v cvs @key{RET}}.
2064
2065 @node Snapshots
2066 @subsection Snapshots
2067 @cindex snapshots and version control
2068
2069 A @dfn{snapshot} is a named set of file versions (one for each
2070 registered file) that you can treat as a unit. One important kind of
2071 snapshot is a @dfn{release}, a (theoretically) stable version of the
2072 system that is ready for distribution to users.
2073
2074 @menu
2075 * Making Snapshots:: The snapshot facilities.
2076 * Snapshot Caveats:: Things to be careful of when using snapshots.
2077 @end menu
2078
2079 @node Making Snapshots
2080 @subsubsection Making and Using Snapshots
2081
2082 There are two basic commands for snapshots; one makes a
2083 snapshot with a given name, the other retrieves a named snapshot.
2084
2085 @table @code
2086 @kindex C-x v s
2087 @findex vc-create-snapshot
2088 @item C-x v s @var{name} @key{RET}
2089 Define the last saved versions of every registered file in or under the
2090 current directory as a snapshot named @var{name}
2091 (@code{vc-create-snapshot}).
2092
2093 @kindex C-x v r
2094 @findex vc-retrieve-snapshot
2095 @item C-x v r @var{name} @key{RET}
2096 For all registered files at or below the current directory level, select
2097 whatever versions correspond to the snapshot @var{name}
2098 (@code{vc-retrieve-snapshot}).
2099
2100 This command reports an error if any files are locked at or below the
2101 current directory, without changing anything; this is to avoid
2102 overwriting work in progress.
2103 @end table
2104
2105 A snapshot uses a very small amount of resources---just enough to record
2106 the list of file names and which version belongs to the snapshot. Thus,
2107 you need not hesitate to create snapshots whenever they are useful.
2108
2109 You can give a snapshot name as an argument to @kbd{C-x v =} or
2110 @kbd{C-x v ~} (@pxref{Old Versions}). Thus, you can use it to compare a
2111 snapshot against the current files, or two snapshots against each other,
2112 or a snapshot against a named version.
2113
2114 @node Snapshot Caveats
2115 @subsubsection Snapshot Caveats
2116
2117 @cindex named configurations (RCS)
2118 VC's snapshot facilities are modeled on RCS's named-configuration
2119 support. They use RCS's native facilities for this, so under VC
2120 snapshots made using RCS are visible even when you bypass VC.
2121
2122 @c worded verbosely to avoid overfull hbox.
2123 For SCCS, VC implements snapshots itself. The files it uses contain
2124 name/file/version-number triples. These snapshots are visible only
2125 through VC.
2126
2127 A snapshot is a set of checked-in versions. So make sure that all the
2128 files are checked in and not locked when you make a snapshot.
2129
2130 File renaming and deletion can create some difficulties with snapshots.
2131 This is not a VC-specific problem, but a general design issue in version
2132 control systems that no one has solved very well yet.
2133
2134 If you rename a registered file, you need to rename its master along
2135 with it (the command @code{vc-rename-file} does this automatically). If
2136 you are using SCCS, you must also update the records of the snapshot, to
2137 mention the file by its new name (@code{vc-rename-file} does this,
2138 too). An old snapshot that refers to a master file that no longer
2139 exists under the recorded name is invalid; VC can no longer retrieve
2140 it. It would be beyond the scope of this manual to explain enough about
2141 RCS and SCCS to explain how to update the snapshots by hand.
2142
2143 Using @code{vc-rename-file} makes the snapshot remain valid for
2144 retrieval, but it does not solve all problems. For example, some of the
2145 files in your program probably refer to others by name. At the very
2146 least, the makefile probably mentions the file that you renamed. If you
2147 retrieve an old snapshot, the renamed file is retrieved under its new
2148 name, which is not the name that the makefile expects. So the program
2149 won't really work as retrieved.
2150
2151 @node Miscellaneous VC
2152 @subsection Miscellaneous Commands and Features of VC
2153
2154 This section explains the less-frequently-used features of VC.
2155
2156 @menu
2157 * Change Logs and VC:: Generating a change log file from log entries.
2158 * Renaming and VC:: A command to rename both the source and master
2159 file correctly.
2160 * Version Headers:: Inserting version control headers into working files.
2161 @end menu
2162
2163 @node Change Logs and VC
2164 @subsubsection Change Logs and VC
2165
2166 If you use RCS or CVS for a program and also maintain a change log
2167 file for it (@pxref{Change Log}), you can generate change log entries
2168 automatically from the version control log entries:
2169
2170 @table @kbd
2171 @item C-x v a
2172 @kindex C-x v a
2173 @findex vc-update-change-log
2174 Visit the current directory's change log file and, for registered files
2175 in that directory, create new entries for versions checked in since the
2176 most recent entry in the change log file.
2177 (@code{vc-update-change-log}).
2178
2179 This command works with RCS or CVS only, not with SCCS.
2180
2181 @item C-u C-x v a
2182 As above, but only find entries for the current buffer's file.
2183
2184 @item M-1 C-x v a
2185 As above, but find entries for all the currently visited files that are
2186 maintained with version control. This works only with RCS, and it puts
2187 all entries in the log for the default directory, which may not be
2188 appropriate.
2189 @end table
2190
2191 For example, suppose the first line of @file{ChangeLog} is dated
2192 1999-04-10, and that the only check-in since then was by Nathaniel
2193 Bowditch to @file{rcs2log} on 1999-05-22 with log text @samp{Ignore log
2194 messages that start with `#'.}. Then @kbd{C-x v a} visits
2195 @file{ChangeLog} and inserts text like this:
2196
2197 @iftex
2198 @medbreak
2199 @end iftex
2200 @smallexample
2201 @group
2202 1999-05-22 Nathaniel Bowditch <nat@@apn.org>
2203
2204 * rcs2log: Ignore log messages that start with `#'.
2205 @end group
2206 @end smallexample
2207 @iftex
2208 @medbreak
2209 @end iftex
2210
2211 @noindent
2212 You can then edit the new change log entry further as you wish.
2213
2214 Some of the new change log entries may duplicate what's already in
2215 ChangeLog. You will have to remove these duplicates by hand.
2216
2217 Normally, the log entry for file @file{foo} is displayed as @samp{*
2218 foo: @var{text of log entry}}. The @samp{:} after @file{foo} is omitted
2219 if the text of the log entry starts with @w{@samp{(@var{functionname}):
2220 }}. For example, if the log entry for @file{vc.el} is
2221 @samp{(vc-do-command): Check call-process status.}, then the text in
2222 @file{ChangeLog} looks like this:
2223
2224 @iftex
2225 @medbreak
2226 @end iftex
2227 @smallexample
2228 @group
2229 1999-05-06 Nathaniel Bowditch <nat@@apn.org>
2230
2231 * vc.el (vc-do-command): Check call-process status.
2232 @end group
2233 @end smallexample
2234 @iftex
2235 @medbreak
2236 @end iftex
2237
2238 When @kbd{C-x v a} adds several change log entries at once, it groups
2239 related log entries together if they all are checked in by the same
2240 author at nearly the same time. If the log entries for several such
2241 files all have the same text, it coalesces them into a single entry.
2242 For example, suppose the most recent check-ins have the following log
2243 entries:
2244
2245 @flushleft
2246 @bullet{} For @file{vc.texinfo}: @samp{Fix expansion typos.}
2247 @bullet{} For @file{vc.el}: @samp{Don't call expand-file-name.}
2248 @bullet{} For @file{vc-hooks.el}: @samp{Don't call expand-file-name.}
2249 @end flushleft
2250
2251 @noindent
2252 They appear like this in @file{ChangeLog}:
2253
2254 @iftex
2255 @medbreak
2256 @end iftex
2257 @smallexample
2258 @group
2259 1999-04-01 Nathaniel Bowditch <nat@@apn.org>
2260
2261 * vc.texinfo: Fix expansion typos.
2262
2263 * vc.el, vc-hooks.el: Don't call expand-file-name.
2264 @end group
2265 @end smallexample
2266 @iftex
2267 @medbreak
2268 @end iftex
2269
2270 Normally, @kbd{C-x v a} separates log entries by a blank line, but you
2271 can mark several related log entries to be clumped together (without an
2272 intervening blank line) by starting the text of each related log entry
2273 with a label of the form @w{@samp{@{@var{clumpname}@} }}. The label
2274 itself is not copied to @file{ChangeLog}. For example, suppose the log
2275 entries are:
2276
2277 @flushleft
2278 @bullet{} For @file{vc.texinfo}: @samp{@{expand@} Fix expansion typos.}
2279 @bullet{} For @file{vc.el}: @samp{@{expand@} Don't call expand-file-name.}
2280 @bullet{} For @file{vc-hooks.el}: @samp{@{expand@} Don't call expand-file-name.}
2281 @end flushleft
2282
2283 @noindent
2284 Then the text in @file{ChangeLog} looks like this:
2285
2286 @iftex
2287 @medbreak
2288 @end iftex
2289 @smallexample
2290 @group
2291 1999-04-01 Nathaniel Bowditch <nat@@apn.org>
2292
2293 * vc.texinfo: Fix expansion typos.
2294 * vc.el, vc-hooks.el: Don't call expand-file-name.
2295 @end group
2296 @end smallexample
2297 @iftex
2298 @medbreak
2299 @end iftex
2300
2301 A log entry whose text begins with @samp{#} is not copied to
2302 @file{ChangeLog}. For example, if you merely fix some misspellings in
2303 comments, you can log the change with an entry beginning with @samp{#}
2304 to avoid putting such trivia into @file{ChangeLog}.
2305
2306 @node Renaming and VC
2307 @subsubsection Renaming VC Work Files and Master Files
2308
2309 @findex vc-rename-file
2310 When you rename a registered file, you must also rename its master
2311 file correspondingly to get proper results. Use @code{vc-rename-file}
2312 to rename the source file as you specify, and rename its master file
2313 accordingly. It also updates any snapshots (@pxref{Snapshots}) that
2314 mention the file, so that they use the new name; despite this, the
2315 snapshot thus modified may not completely work (@pxref{Snapshot
2316 Caveats}).
2317
2318 You cannot use @code{vc-rename-file} on a file that is locked by
2319 someone else.
2320
2321 @node Version Headers
2322 @subsubsection Inserting Version Control Headers
2323
2324 Sometimes it is convenient to put version identification strings
2325 directly into working files. Certain special strings called
2326 @dfn{version headers} are replaced in each successive version by the
2327 number of that version.
2328
2329 If you are using RCS, and version headers are present in your working
2330 files, Emacs can use them to determine the current version and the
2331 locking state of the files. This is more reliable than referring to the
2332 master files, which is done when there are no version headers. Note
2333 that in a multi-branch environment, version headers are necessary to
2334 make VC behave correctly (@pxref{Multi-User Branching}).
2335
2336 Searching for version headers is controlled by the variable
2337 @code{vc-consult-headers}. If it is non-@code{nil}, Emacs searches for
2338 headers to determine the version number you are editing. Setting it to
2339 @code{nil} disables this feature.
2340
2341 @kindex C-x v h
2342 @findex vc-insert-headers
2343 You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
2344 insert a suitable header string.
2345
2346 @table @kbd
2347 @item C-x v h
2348 Insert headers in a file for use with your version-control system.
2349 @end table
2350
2351 @vindex vc-header-alist
2352 The default header string is @samp{@w{$}Id$} for RCS and
2353 @samp{@w{%}W%} for SCCS. You can specify other headers to insert by
2354 setting the variable @code{vc-header-alist}. Its value is a list of
2355 elements of the form @code{(@var{program} . @var{string})} where
2356 @var{program} is @code{RCS} or @code{SCCS} and @var{string} is the
2357 string to use.
2358
2359 Instead of a single string, you can specify a list of strings; then
2360 each string in the list is inserted as a separate header on a line of
2361 its own.
2362
2363 It is often necessary to use ``superfluous'' backslashes when writing
2364 the strings that you put in this variable. This is to prevent the
2365 string in the constant from being interpreted as a header itself if the
2366 Emacs Lisp file containing it is maintained with version control.
2367
2368 @vindex vc-comment-alist
2369 Each header is inserted surrounded by tabs, inside comment delimiters,
2370 on a new line at point. Normally the ordinary comment
2371 start and comment end strings of the current mode are used, but for
2372 certain modes, there are special comment delimiters for this purpose;
2373 the variable @code{vc-comment-alist} specifies them. Each element of
2374 this list has the form @code{(@var{mode} @var{starter} @var{ender})}.
2375
2376 @vindex vc-static-header-alist
2377 The variable @code{vc-static-header-alist} specifies further strings
2378 to add based on the name of the buffer. Its value should be a list of
2379 elements of the form @code{(@var{regexp} . @var{format})}. Whenever
2380 @var{regexp} matches the buffer name, @var{format} is inserted as part
2381 of the header. A header line is inserted for each element that matches
2382 the buffer name, and for each string specified by
2383 @code{vc-header-alist}. The header line is made by processing the
2384 string from @code{vc-header-alist} with the format taken from the
2385 element. The default value for @code{vc-static-header-alist} is as follows:
2386
2387 @example
2388 @group
2389 (("\\.c$" .
2390 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
2391 #endif /* lint */\n"))
2392 @end group
2393 @end example
2394
2395 @noindent
2396 It specifies insertion of text of this form:
2397
2398 @example
2399 @group
2400
2401 #ifndef lint
2402 static char vcid[] = "@var{string}";
2403 #endif /* lint */
2404 @end group
2405 @end example
2406
2407 @noindent
2408 Note that the text above starts with a blank line.
2409
2410 If you use more than one version header in a file, put them close
2411 together in the file. The mechanism in @code{revert-buffer} that
2412 preserves markers may not handle markers positioned between two version
2413 headers.
2414
2415 @node Customizing VC
2416 @subsection Customizing VC
2417
2418 @vindex vc-handled-backends
2419 The variable @code{vc-handled-backends} determines which version
2420 control systems VC should handle. The default value is @code{(RCS CVS
2421 SCCS)}, so it contains all three version systems that are currently
2422 supported. If you want VC to ignore one or more of these systems,
2423 exclude its name from the list.
2424
2425 The order of systems in the list is significant: when you visit a file
2426 registered in more than one system (@pxref{Local Version Control}),
2427 VC uses the system that comes first in @code{vc-handled-backends} by
2428 default. The order is also significant when you register a file for
2429 the first time, @pxref{Registering} for details.
2430
2431 @menu
2432 * General VC Options:: Options that apply to multiple back ends.
2433 * RCS and SCCS:: Options for RCS and SCCS.
2434 * CVS Options:: Options for CVS.
2435 @end menu
2436
2437 @node General VC Options
2438 @subsubsection General Options
2439
2440 @vindex vc-make-backup-files
2441 Emacs normally does not save backup files for source files that are
2442 maintained with version control. If you want to make backup files even
2443 for files that use version control, set the variable
2444 @code{vc-make-backup-files} to a non-@code{nil} value.
2445
2446 @vindex vc-keep-workfiles
2447 Normally the work file exists all the time, whether it is locked or
2448 not. If you set @code{vc-keep-workfiles} to @code{nil}, then checking
2449 in a new version with @kbd{C-x C-q} deletes the work file; but any
2450 attempt to visit the file with Emacs creates it again. (With CVS, work
2451 files are always kept.)
2452
2453 @vindex vc-follow-symlinks
2454 Editing a version-controlled file through a symbolic link can be
2455 dangerous. It bypasses the version control system---you can edit the
2456 file without locking it, and fail to check your changes in. Also,
2457 your changes might overwrite those of another user. To protect against
2458 this, VC checks each symbolic link that you visit, to see if it points
2459 to a file under version control.
2460
2461 The variable @code{vc-follow-symlinks} controls what to do when a
2462 symbolic link points to a version-controlled file. If it is @code{nil},
2463 VC only displays a warning message. If it is @code{t}, VC automatically
2464 follows the link, and visits the real file instead, telling you about
2465 this in the echo area. If the value is @code{ask} (the default), VC
2466 asks you each time whether to follow the link.
2467
2468 @vindex vc-suppress-confirm
2469 If @code{vc-suppress-confirm} is non-@code{nil}, then @kbd{C-x C-q}
2470 and @kbd{C-x v i} can save the current buffer without asking, and
2471 @kbd{C-x v u} also operates without asking for confirmation. (This
2472 variable does not affect @kbd{C-x v c}; that operation is so drastic
2473 that it should always ask for confirmation.)
2474
2475 @vindex vc-command-messages
2476 VC mode does much of its work by running the shell commands for RCS,
2477 CVS and SCCS. If @code{vc-command-messages} is non-@code{nil}, VC
2478 displays messages to indicate which shell commands it runs, and
2479 additional messages when the commands finish.
2480
2481 @vindex vc-path
2482 You can specify additional directories to search for version control
2483 programs by setting the variable @code{vc-path}. These directories
2484 are searched before the usual search path. It is rarely necessary to
2485 set this variable, because VC normally finds the proper files
2486 automatically.
2487
2488 @node RCS and SCCS
2489 @subsubsection Options for RCS and SCCS
2490
2491 @cindex non-strict locking (RCS)
2492 @cindex locking, non-strict (RCS)
2493 By default, RCS uses locking to coordinate the activities of several
2494 users, but there is a mode called @dfn{non-strict locking} in which
2495 you can check-in changes without locking the file first. Use
2496 @samp{rcs -U} to switch to non-strict locking for a particular file,
2497 see the @code{rcs} manpage for details.
2498
2499 When deducing the version control state of an RCS file, VC first
2500 looks for an RCS version header string in the file (@pxref{Version
2501 Headers}). If there is no header string, VC normally looks at the
2502 file permissions of the work file; this is fast. But there might be
2503 situations when the file permissions cannot be trusted. In this case
2504 the master file has to be consulted, which is rather expensive. Also
2505 the master file can only tell you @emph{if} there's any lock on the
2506 file, but not whether your work file really contains that locked
2507 version.
2508
2509 @vindex vc-consult-headers
2510 You can tell VC not to use version headers to determine the file
2511 status by setting @code{vc-consult-headers} to @code{nil}. VC then
2512 always uses the file permissions (if it is supposed to trust them), or
2513 else checks the master file.
2514
2515 @vindex vc-mistrust-permissions
2516 You can specify the criterion for whether to trust the file
2517 permissions by setting the variable @code{vc-mistrust-permissions}.
2518 Its value can be @code{t} (always mistrust the file permissions and
2519 check the master file), @code{nil} (always trust the file
2520 permissions), or a function of one argument which makes the decision.
2521 The argument is the directory name of the @file{RCS} subdirectory. A
2522 non-@code{nil} value from the function says to mistrust the file
2523 permissions. If you find that the file permissions of work files are
2524 changed erroneously, set @code{vc-mistrust-permissions} to @code{t}.
2525 Then VC always checks the master file to determine the file's status.
2526
2527 VC determines the version control state of files under SCCS much as
2528 with RCS. It does not consider SCCS version headers, though. Thus,
2529 the variable @code{vc-mistrust-permissions} affects SCCS use, but
2530 @code{vc-consult-headers} does not.
2531
2532 @node CVS Options
2533 @subsubsection Options specific for CVS
2534
2535 @cindex locking (CVS)
2536 By default, CVS does not use locking to coordinate the activities of
2537 several users; anyone can change a work file at any time. However,
2538 there are ways to restrict this, resulting in behavior that resembles
2539 locking.
2540
2541 @cindex CVSREAD environment variable (CVS)
2542 For one thing, you can set the @env{CVSREAD} environment variable
2543 (the value you use makes no difference). If this variable is defined,
2544 CVS makes your work files read-only by default. In Emacs, you must
2545 type @kbd{C-x C-q} to make the file writeable, so that editing works
2546 in fact similar as if locking was used. Note however, that no actual
2547 locking is performed, so several users can make their files writeable
2548 at the same time. When setting @env{CVSREAD} for the first time, make
2549 sure to check out all your modules anew, so that the file protections
2550 are set correctly.
2551
2552 @cindex cvs watch feature
2553 @cindex watching files (CVS)
2554 Another way to achieve something similar to locking is to use the
2555 @dfn{watch} feature of CVS. If a file is being watched, CVS makes it
2556 read-only by default, and you must also use @kbd{C-x C-q} in Emacs to
2557 make it writable. VC calls @code{cvs edit} to make the file writeable,
2558 and CVS takes care to notify other developers of the fact that you
2559 intend to change the file. See the CVS documentation for details on
2560 using the watch feature.
2561
2562 @vindex vc-cvs-stay-local
2563 @cindex remote repositories (CVS)
2564 When a file's repository is on a remote machine, VC tries to keep
2565 network interactions to a minimum. This is controlled by the variable
2566 @code{vc-cvs-stay-local}. If it is @code{t} (the default), then VC uses
2567 only the entry in the local CVS subdirectory to determine the file's
2568 state (and possibly information returned by previous CVS commands). One
2569 consequence of this is that when you have modified a file, and somebody
2570 else has already checked in other changes to the file, you are not
2571 notified of it until you actually try to commit. (But you can try to
2572 pick up any recent changes from the repository first, using @kbd{C-x v m
2573 @key{RET}}, @pxref{Merging}).
2574
2575 When @code{vc-cvs-stay-local} is @code{t}, VC also makes local
2576 version backups, so that simple diff and revert operations are
2577 completely local (@pxref{Version Backups}).
2578
2579 On the other hand, if you set @code{vc-cvs-stay-local} to @code{nil},
2580 then VC queries the remote repository @emph{before} it decides what to
2581 do in @code{vc-next-action} (@kbd{C-x v v}), just as it does for local
2582 repositories. It also does not make any version backups.
2583
2584 You can also set @code{vc-cvs-stay-local} to a regular expression
2585 that is matched against the repository hostname; VC then stays local
2586 only for repositories from hosts that match the pattern.
2587
2588 @node Directories
2589 @section File Directories
2590
2591 @cindex file directory
2592 @cindex directory listing
2593 The file system groups files into @dfn{directories}. A @dfn{directory
2594 listing} is a list of all the files in a directory. Emacs provides
2595 commands to create and delete directories, and to make directory
2596 listings in brief format (file names only) and verbose format (sizes,
2597 dates, and authors included). There is also a directory browser called
2598 Dired; see @ref{Dired}.
2599
2600 @table @kbd
2601 @item C-x C-d @var{dir-or-pattern} @key{RET}
2602 Display a brief directory listing (@code{list-directory}).
2603 @item C-u C-x C-d @var{dir-or-pattern} @key{RET}
2604 Display a verbose directory listing.
2605 @item M-x make-directory @key{RET} @var{dirname} @key{RET}
2606 Create a new directory named @var{dirname}.
2607 @item M-x delete-directory @key{RET} @var{dirname} @key{RET}
2608 Delete the directory named @var{dirname}. It must be empty,
2609 or you get an error.
2610 @end table
2611
2612 @findex list-directory
2613 @kindex C-x C-d
2614 The command to display a directory listing is @kbd{C-x C-d}
2615 (@code{list-directory}). It reads using the minibuffer a file name
2616 which is either a directory to be listed or a wildcard-containing
2617 pattern for the files to be listed. For example,
2618
2619 @example
2620 C-x C-d /u2/emacs/etc @key{RET}
2621 @end example
2622
2623 @noindent
2624 lists all the files in directory @file{/u2/emacs/etc}. Here is an
2625 example of specifying a file name pattern:
2626
2627 @example
2628 C-x C-d /u2/emacs/src/*.c @key{RET}
2629 @end example
2630
2631 Normally, @kbd{C-x C-d} prints a brief directory listing containing
2632 just file names. A numeric argument (regardless of value) tells it to
2633 make a verbose listing including sizes, dates, and owners (like
2634 @samp{ls -l}).
2635
2636 @vindex list-directory-brief-switches
2637 @vindex list-directory-verbose-switches
2638 The text of a directory listing is obtained by running @code{ls} in an
2639 inferior process. Two Emacs variables control the switches passed to
2640 @code{ls}: @code{list-directory-brief-switches} is a string giving the
2641 switches to use in brief listings (@code{"-CF"} by default), and
2642 @code{list-directory-verbose-switches} is a string giving the switches to
2643 use in a verbose listing (@code{"-l"} by default).
2644
2645 @node Comparing Files
2646 @section Comparing Files
2647 @cindex comparing files
2648
2649 @findex diff
2650 @vindex diff-switches
2651 The command @kbd{M-x diff} compares two files, displaying the
2652 differences in an Emacs buffer named @samp{*diff*}. It works by running
2653 the @code{diff} program, using options taken from the variable
2654 @code{diff-switches}, whose value should be a string.
2655
2656 The buffer @samp{*diff*} has Compilation mode as its major mode, so
2657 you can use @kbd{C-x `} to visit successive changed locations in the two
2658 source files. You can also move to a particular hunk of changes and
2659 type @key{RET} or @kbd{C-c C-c}, or click @kbd{Mouse-2} on it, to move
2660 to the corresponding source location. You can also use the other
2661 special commands of Compilation mode: @key{SPC} and @key{DEL} for
2662 scrolling, and @kbd{M-p} and @kbd{M-n} for cursor motion.
2663 @xref{Compilation}.
2664
2665 @findex diff-backup
2666 The command @kbd{M-x diff-backup} compares a specified file with its most
2667 recent backup. If you specify the name of a backup file,
2668 @code{diff-backup} compares it with the source file that it is a backup
2669 of.
2670
2671 @findex compare-windows
2672 The command @kbd{M-x compare-windows} compares the text in the current
2673 window with that in the next window. Comparison starts at point in each
2674 window, and each starting position is pushed on the mark ring in its
2675 respective buffer. Then point moves forward in each window, a character
2676 at a time, until a mismatch between the two windows is reached. Then
2677 the command is finished. For more information about windows in Emacs,
2678 @ref{Windows}.
2679
2680 @vindex compare-ignore-case
2681 With a numeric argument, @code{compare-windows} ignores changes in
2682 whitespace. If the variable @code{compare-ignore-case} is
2683 non-@code{nil}, it ignores differences in case as well.
2684
2685 @findex diff-mode
2686 @cindex diffs
2687 @cindex patches
2688 @cindex Diff mode
2689 Differences between versions of files are often distributed as
2690 @dfn{patches}, which are the output from @command{diff} or a version
2691 control system that uses @command{diff}. @kbd{M-x diff-mode} turns on
2692 Diff mode, a major mode for viewing and editing patches, either as
2693 ``unified diffs'' or ``context diffs.''
2694
2695 @cindex Smerge mode
2696 @findex smerge-mode
2697 @cindex failed merges
2698 @cindex merges, failed
2699 @cindex comparing 3 files (@code{diff3})
2700 You can use @kbd{M-x smerge-mode} to turn on Smerge mode, a minor
2701 mode for editing output from the @command{diff3} program. This is
2702 typically the result of a failed merge from a version control system
2703 ``update'' outside VC, due to conflicting changes to a file. Smerge
2704 mode provides commands to resolve conflicts by selecting specific
2705 changes.
2706
2707 See also @ref{Emerge}, and @ref{Top,,, ediff, The Ediff Manual}, for
2708 convenient facilities for merging two similar files.
2709
2710 @node Misc File Ops
2711 @section Miscellaneous File Operations
2712
2713 Emacs has commands for performing many other operations on files.
2714 All operate on one file; they do not accept wildcard file names.
2715
2716 @findex view-file
2717 @cindex viewing
2718 @cindex View mode
2719 @cindex mode, View
2720 @kbd{M-x view-file} allows you to scan or read a file by sequential
2721 screenfuls. It reads a file name argument using the minibuffer. After
2722 reading the file into an Emacs buffer, @code{view-file} displays the
2723 beginning. You can then type @key{SPC} to scroll forward one windowful,
2724 or @key{DEL} to scroll backward. Various other commands are provided
2725 for moving around in the file, but none for changing it; type @kbd{?}
2726 while viewing for a list of them. They are mostly the same as normal
2727 Emacs cursor motion commands. To exit from viewing, type @kbd{q}.
2728 The commands for viewing are defined by a special major mode called View
2729 mode.
2730
2731 A related command, @kbd{M-x view-buffer}, views a buffer already present
2732 in Emacs. @xref{Misc Buffer}.
2733
2734 @findex insert-file
2735 @kbd{M-x insert-file} inserts a copy of the contents of the specified
2736 file into the current buffer at point, leaving point unchanged before the
2737 contents and the mark after them.
2738
2739 @findex write-region
2740 @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
2741 copies the contents of the region into the specified file. @kbd{M-x
2742 append-to-file} adds the text of the region to the end of the specified
2743 file. @xref{Accumulating Text}.
2744
2745 @findex delete-file
2746 @cindex deletion (of files)
2747 @kbd{M-x delete-file} deletes the specified file, like the @code{rm}
2748 command in the shell. If you are deleting many files in one directory, it
2749 may be more convenient to use Dired (@pxref{Dired}).
2750
2751 @findex rename-file
2752 @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
2753 the minibuffer, then renames file @var{old} as @var{new}. If a file named
2754 @var{new} already exists, you must confirm with @kbd{yes} or renaming is not
2755 done; this is because renaming causes the old meaning of the name @var{new}
2756 to be lost. If @var{old} and @var{new} are on different file systems, the
2757 file @var{old} is copied and deleted.
2758
2759 @findex add-name-to-file
2760 The similar command @kbd{M-x add-name-to-file} is used to add an
2761 additional name to an existing file without removing its old name.
2762 The new name must belong on the same file system that the file is on.
2763 On Windows, this command works only if the file resides in an NTFS
2764 file system. On MS-DOS, it works by copying the file.
2765
2766 @findex copy-file
2767 @cindex copying files
2768 @kbd{M-x copy-file} reads the file @var{old} and writes a new file named
2769 @var{new} with the same contents. Confirmation is required if a file named
2770 @var{new} already exists, because copying has the consequence of overwriting
2771 the old contents of the file @var{new}.
2772
2773 @findex make-symbolic-link
2774 @kbd{M-x make-symbolic-link} reads two file names @var{target} and
2775 @var{linkname}, then creates a symbolic link named @var{linkname}, which
2776 points at @var{target}. The effect is that future attempts to open file
2777 @var{linkname} will refer to whatever file is named @var{target} at the
2778 time the opening is done, or will get an error if the name @var{target} is
2779 not in use at that time. This command does not expand the argument
2780 @var{target}, so that it allows you to specify a relative name
2781 as the target of the link.
2782
2783 Confirmation is required when creating the link if @var{linkname} is
2784 in use. Note that not all systems support symbolic links; on systems
2785 that don't support them, this command is not defined.
2786
2787 @node Compressed Files
2788 @section Accessing Compressed Files
2789 @cindex compression
2790 @cindex uncompression
2791 @cindex Auto Compression mode
2792 @cindex mode, Auto Compression
2793 @pindex gzip
2794
2795 @findex auto-compression-mode
2796 @vindex auto-compression-mode
2797 Emacs comes with a library that can automatically uncompress
2798 compressed files when you visit them, and automatically recompress them
2799 if you alter them and save them. To enable this feature, type the
2800 command @kbd{M-x auto-compression-mode}. You can enable it permanently
2801 by customizing the option @code{auto-compression-mode}.
2802
2803 When automatic compression (which implies automatic uncompression as
2804 well) is enabled, Emacs recognizes compressed files by their file names.
2805 File names ending in @samp{.gz} indicate a file compressed with
2806 @code{gzip}. Other endings indicate other compression programs.
2807
2808 Automatic uncompression and compression apply to all the operations in
2809 which Emacs uses the contents of a file. This includes visiting it,
2810 saving it, inserting its contents into a buffer, loading it, and byte
2811 compiling it.
2812
2813 @node File Archives
2814 @section File Archives
2815 @cindex mode, tar
2816 @cindex Tar mode
2817 @cindex file archives
2818
2819 A file whose name ends in @samp{.tar} is normally an @dfn{archive}
2820 made by the @code{tar} program. Emacs views these files in a special
2821 mode called Tar mode which provides a Dired-like list of the contents
2822 (@pxref{Dired}). You can move around through the list just as you
2823 would in Dired, and visit the subfiles contained in the archive.
2824 However, not all Dired commands are available in Tar mode.
2825
2826 If you enable Auto Compression mode (@pxref{Compressed Files}), then
2827 Tar mode is used also for compressed archives---files with extensions
2828 @samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}.
2829
2830 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
2831 into its own buffer. You can edit it there and when you save the buffer
2832 the edited version will replace the version in the Tar buffer. @kbd{v}
2833 extracts a file into a buffer in View mode. @kbd{o} extracts the file
2834 and displays it in another window, so you could edit the file and
2835 operate on the archive simultaneously. @kbd{d} marks a file for
2836 deletion when you later use @kbd{x}, and @kbd{u} unmarks a file, as in
2837 Dired. @kbd{C} copies a file from the archive to disk and @kbd{R}
2838 renames a file. @kbd{g} reverts the buffer from the archive on disk.
2839
2840 The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission
2841 bits, group, and owner, respectively.
2842
2843 If your display supports colors and the mouse, moving the mouse
2844 pointer across a file name highlights that file name, indicating that
2845 you can click on it. Clicking @kbd{Mouse-2} on the highlighted file
2846 name extracts the file into a buffer and displays that buffer.
2847
2848 Saving the Tar buffer writes a new version of the archive to disk with
2849 the changes you made to the components.
2850
2851 You don't need the @code{tar} program to use Tar mode---Emacs reads
2852 the archives directly. However, accessing compressed archives
2853 requires the appropriate uncompression program.
2854
2855 @cindex Archive mode
2856 @cindex mode, archive
2857 @cindex @code{arc}
2858 @cindex @code{jar}
2859 @cindex @code{zip}
2860 @cindex @code{lzh}
2861 @cindex @code{zoo}
2862 @pindex arc
2863 @pindex jar
2864 @pindex zip
2865 @pindex lzh
2866 @pindex zoo
2867 @cindex Java class archives
2868 @cindex unzip archives
2869 A separate but similar Archive mode is used for archives produced by
2870 the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, and
2871 @code{zoo}, which have extensions corresponding to the program names.
2872
2873 The keybindings of Archive mode are similar to those in Tar mode,
2874 with the addition of the @kbd{m} key which marks a file for subsequent
2875 operations, and @kbd{M-@key{DEL}} which unmarks all the marked files.
2876 Also, the @kbd{a} key toggles the display of detailed file
2877 information, for those archive types where it won't fit in a single
2878 line. Operations such as renaming a subfile, or changing its mode or
2879 owner, are supported only for some of the archive formats.
2880
2881 Unlike Tar mode, Archive mode runs the archiving program to unpack
2882 and repack archives. Details of the program names and their options
2883 can be set in the @samp{Archive} Customize group. However, you don't
2884 need these programs to look at the archive table of contents, only to
2885 extract or manipulate the subfiles in the archive.
2886
2887 @node Remote Files
2888 @section Remote Files
2889
2890 @cindex FTP
2891 @cindex remote file access
2892 You can refer to files on other machines using a special file name syntax:
2893
2894 @example
2895 @group
2896 /@var{host}:@var{filename}
2897 /@var{user}@@@var{host}:@var{filename}
2898 /@var{user}@@@var{host}#@var{port}:@var{filename}
2899 @end group
2900 @end example
2901
2902 @noindent
2903 When you do this, Emacs uses the FTP program to read and write files on
2904 the specified host. It logs in through FTP using your user name or the
2905 name @var{user}. It may ask you for a password from time to time; this
2906 is used for logging in on @var{host}. The form using @var{port} allows
2907 you to access servers running on a non-default TCP port.
2908
2909 @cindex backups for remote files
2910 @vindex ange-ftp-make-backup-files
2911 If you want to disable backups for remote files, set the variable
2912 @code{ange-ftp-make-backup-files} to @code{nil}.
2913
2914 @cindex ange-ftp
2915 @vindex ange-ftp-default-user
2916 @cindex user name for remote file access
2917 Normally, if you do not specify a user name in a remote file name,
2918 that means to use your own user name. But if you set the variable
2919 @code{ange-ftp-default-user} to a string, that string is used instead.
2920 (The Emacs package that implements FTP file access is called
2921 @code{ange-ftp}.)
2922
2923 @cindex anonymous FTP
2924 @vindex ange-ftp-generate-anonymous-password
2925 To visit files accessible by anonymous FTP, you use special user
2926 names @samp{anonymous} or @samp{ftp}. Passwords for these user names
2927 are handled specially. The variable
2928 @code{ange-ftp-generate-anonymous-password} controls what happens: if
2929 the value of this variable is a string, then that string is used as
2930 the password; if non-@code{nil} (the default), then the value of
2931 @code{user-mail-address} is used; if @code{nil}, the user is prompted
2932 for a password as normal.
2933
2934 @cindex firewall, and accessing remote files
2935 @cindex gateway, and remote file access with @code{ange-ftp}
2936 @vindex ange-ftp-smart-gateway
2937 @vindex ange-ftp-gateway-host
2938 Sometimes you may be unable to access files on a remote machine
2939 because a @dfn{firewall} in between blocks the connection for security
2940 reasons. If you can log in on a @dfn{gateway} machine from which the
2941 target files @emph{are} accessible, and whose FTP server supports
2942 gatewaying features, you can still use remote file names; all you have
2943 to do is specify the name of the gateway machine by setting the
2944 variable @code{ange-ftp-gateway-host}, and set
2945 @code{ange-ftp-smart-gateway} to @code{t}. Otherwise you may be able
2946 to make remote file names work, but the procedure is complex. You can
2947 read the instructions by typing @kbd{M-x finder-commentary @key{RET}
2948 ange-ftp @key{RET}}.
2949
2950 @vindex file-name-handler-alist
2951 @cindex disabling remote files
2952 You can entirely turn off the FTP file name feature by removing the
2953 entries @code{ange-ftp-completion-hook-function} and
2954 @code{ange-ftp-hook-function} from the variable
2955 @code{file-name-handler-alist}. You can turn off the feature in
2956 individual cases by quoting the file name with @samp{/:} (@pxref{Quoted
2957 File Names}).
2958
2959 @node Quoted File Names
2960 @section Quoted File Names
2961
2962 @cindex quoting file names
2963 You can @dfn{quote} an absolute file name to prevent special
2964 characters and syntax in it from having their special effects.
2965 The way to do this is to add @samp{/:} at the beginning.
2966
2967 For example, you can quote a local file name which appears remote, to
2968 prevent it from being treated as a remote file name. Thus, if you have
2969 a directory named @file{/foo:} and a file named @file{bar} in it, you
2970 can refer to that file in Emacs as @samp{/:/foo:/bar}.
2971
2972 @samp{/:} can also prevent @samp{~} from being treated as a special
2973 character for a user's home directory. For example, @file{/:/tmp/~hack}
2974 refers to a file whose name is @file{~hack} in directory @file{/tmp}.
2975
2976 Likewise, quoting with @samp{/:} is one way to enter in the minibuffer
2977 a file name that contains @samp{$}. However, the @samp{/:} must be at
2978 the beginning of the minibuffer in order to quote @samp{$}.
2979
2980 You can also quote wildcard characters with @samp{/:}, for visiting.
2981 For example, @file{/:/tmp/foo*bar} visits the file @file{/tmp/foo*bar}.
2982 However, in most cases you can simply type the wildcard characters for
2983 themselves. For example, if the only file name in @file{/tmp} that
2984 starts with @samp{foo} and ends with @samp{bar} is @file{foo*bar}, then
2985 specifying @file{/tmp/foo*bar} will visit just @file{/tmp/foo*bar}.
2986 Another way is to specify @file{/tmp/foo[*]bar}.
2987
2988 @node File Name Cache
2989 @section File Name Cache
2990
2991 @cindex file name caching
2992 @cindex cache of file names
2993 @pindex find
2994 @kindex C-@key{TAB}
2995 @findex file-cache-minibuffer-complete
2996 You can use the @dfn{file name cache} to make it easy to locate a
2997 file by name, without having to remember exactly where it is located.
2998 When typing a file name in the minibuffer, @kbd{C-@key{tab}}
2999 (@code{file-cache-minibuffer-complete}) completes it using the file
3000 name cache. If you repeat @kbd{C-@key{tab}}, that cycles through the
3001 possible completions of what you had originally typed. Note that the
3002 @kbd{C-@key{tab}} character cannot be typed on most text-only
3003 terminals.
3004
3005 The file name cache does not fill up automatically. Instead, you
3006 load file names into the cache using these commands:
3007
3008 @findex file-cache-add-directory
3009 @table @kbd
3010 @item M-x file-cache-add-directory @key{RET} @var{directory} @key{RET}
3011 Add each file name in @var{directory} to the file name cache.
3012 @item M-x file-cache-add-directory-using-find @key{RET} @var{directory} @key{RET}
3013 Add each file name in @var{directory} and all of its nested
3014 subdirectories to the file name cache.
3015 @item M-x file-cache-add-directory-using-locate @key{RET} @var{directory} @key{RET}
3016 Add each file name in @var{directory} and all of its nested
3017 subdirectories to the file name cache, using @command{locate} to find
3018 them all.
3019 @item M-x file-cache-add-directory-list @key{RET} @var{variable} @key{RET}
3020 Add each file name in each directory listed in @var{variable}
3021 to the file name cache. @var{variable} should be a Lisp variable
3022 such as @code{load-path} or @code{exec-path}, whose value is a list
3023 of directory names.
3024 @item M-x file-cache-clear-cache @key{RET}
3025 Clear the cache; that is, remove all file names from it.
3026 @end table
3027
3028 @node File Conveniences
3029 @section Convenience Features for Finding Files
3030
3031 @findex recentf-mode
3032 @vindex recentf-mode
3033 @findex recentf-save-list
3034 @findex recentf-edit-list
3035 If you enable Recentf mode, with @kbd{M-x recentf-mode}, the
3036 @samp{File} menu includes a submenu containing a list of recently
3037 opened files. @kbd{M-x recentf-save-list} saves the current
3038 @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list}
3039 edits it.
3040
3041 @findex auto-image-file-mode
3042 @findex mode, auto-image-file
3043 @cindex images, visiting
3044 @cindex visiting image files
3045 @vindex image-file-name-regexps
3046 @vindex image-file-name-extensions
3047 When Auto-image-file minor mode is enabled, visiting an image file
3048 displays it as an image, not as text. Likewise, inserting an image
3049 file into a buffer inserts it as an image. This works only when Emacs
3050 can display the relevant image type. The variables
3051 @code{image-file-name-extensions} or @code{image-file-name-regexps}
3052 control which file names are recognized as containing images.
3053
3054 The @kbd{M-x ffap} command generalizes @code{find-file} with more
3055 powerful heuristic defaults (@pxref{FFAP}), often based on the text at
3056 point. Partial Completion mode offers other features extending
3057 @code{find-file}, which can be used with @code{ffap}.
3058 @xref{Completion Options}.