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