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