0
|
1 \input texinfo @c -*-texinfo-*-
|
|
2
|
|
3 @comment OrigId: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder Exp
|
70
|
4 @comment @@(#)cvs/contrib/pcl-cvs:$Name: r20-0b30 $:$Id: pcl-cvs.texi,v 1.1.1.1 1996/12/18 22:43:46 steve Exp $
|
0
|
5
|
|
6 @comment Documentation for the GNU Emacs CVS mode.
|
|
7 @comment Copyright (C) 1992 Per Cederqvist
|
|
8
|
|
9 @comment This file is part of the pcl-cvs distribution.
|
|
10
|
|
11 @comment Pcl-cvs is free software; you can redistribute it and/or modify
|
|
12 @comment it under the terms of the GNU General Public License as published by
|
|
13 @comment the Free Software Foundation; either version 1, or (at your option)
|
|
14 @comment any later version.
|
|
15
|
|
16 @comment Pcl-cvs is distributed in the hope that it will be useful,
|
|
17 @comment but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18 @comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19 @comment GNU General Public License for more details.
|
|
20
|
|
21 @comment You should have received a copy of the GNU General Public License
|
|
22 @comment along with pcl-cvs; see the file COPYING. If not, write to
|
|
23 @comment the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
24
|
|
25 @setfilename ../info/pcl-cvs.info
|
|
26 @settitle Pcl-cvs - The Emacs Front-End to CVS
|
|
27 @setchapternewpage on
|
|
28
|
|
29 @ifinfo
|
|
30 Copyright @copyright{} 1992 Per Cederqvist
|
|
31
|
|
32 Permission is granted to make and distribute verbatim copies of
|
|
33 this manual provided the copyright notice and this permission notice
|
|
34 are preserved on all copies.
|
|
35
|
|
36 @ignore
|
|
37 Permission is granted to process this file through Tex and print the
|
|
38 results, provided the printed document carries copying permission
|
|
39 notice identical to this one except for the removal of this paragraph
|
|
40 (this paragraph not being relevant to the printed manual).
|
|
41
|
|
42 @end ignore
|
|
43 Permission is granted to copy and distribute modified versions of this
|
|
44 manual under the conditions for verbatim copying, provided also that the
|
|
45 section entitled ``GNU General Public License'' is included exactly as
|
|
46 in the original, and provided that the entire resulting derived work is
|
|
47 distributed under the terms of a permission notice identical to this one.
|
|
48
|
|
49 Permission is granted to copy and distribute translations of this manual
|
|
50 into another language, under the above conditions for modified versions,
|
|
51 except that the section entitled ``GNU General Public License'' and
|
|
52 this permission notice may be included in translations approved by the
|
|
53 Free Software Foundation instead of in the original English.
|
|
54 @end ifinfo
|
|
55
|
|
56 @synindex vr fn
|
|
57 @comment The titlepage section does not appear in the Info file.
|
|
58 @titlepage
|
|
59 @sp 4
|
|
60 @comment The title is printed in a large font.
|
|
61 @center @titlefont{User's Guide}
|
|
62 @sp
|
|
63 @center @titlefont{to}
|
|
64 @sp
|
|
65 @center @titlefont{pcl-cvs - the Emacs Front-End to CVS}
|
|
66 @sp 2
|
|
67 @center release 1.05-CVS-1.7
|
|
68 @comment -release-
|
|
69 @sp 3
|
|
70 @center Per Cederqvist
|
|
71 @sp 3
|
|
72 @center last updated 20 Nov 1995
|
|
73 @comment -date-
|
|
74
|
|
75 @comment The following two commands start the copyright page
|
|
76 @comment for the printed manual. This will not appear in the Info file.
|
|
77 @page
|
|
78 @vskip 0pt plus 1filll
|
|
79 Copyright @copyright{} 1992 Per Cederqvist
|
|
80
|
|
81 Permission is granted to make and distribute verbatim copies of
|
|
82 this manual provided the copyright notice and this permission notice
|
|
83 are preserved on all copies.
|
|
84
|
|
85 Permission is granted to copy and distribute modified versions of this
|
|
86 manual under the conditions for verbatim copying, provided also that the
|
|
87 section entitled ``GNU General Public License'' is included exactly as
|
|
88 in the original, and provided that the entire resulting derived work is
|
|
89 distributed under the terms of a permission notice identical to this one.
|
|
90
|
|
91 Permission is granted to copy and distribute translations of this manual
|
|
92 into another language, under the above conditions for modified versions,
|
|
93 except that the section entitled ``GNU General Public License'' and
|
|
94 this permission notice may be included in translations approved by the
|
|
95 Free Software Foundation instead of in the original English.
|
|
96 @end titlepage
|
|
97
|
|
98 @comment ================================================================
|
|
99 @comment The real text starts here
|
|
100 @comment ================================================================
|
|
101
|
|
102 @node Top, Installation, (dir), (dir)
|
|
103 @comment node-name, next, previous, up
|
|
104
|
|
105
|
|
106 @ifinfo
|
|
107 This info manual describes pcl-cvs which is a GNU Emacs front-end to
|
|
108 CVS. It works with CVS versions 1.5 through 1.7 and newer, and possibly
|
|
109 CVS-1.3 and CVS-1.4A2. This manual is updated to release
|
|
110 1.05-CVS-1.7 of pcl-cvs.
|
|
111 @end ifinfo
|
|
112 @comment -release-
|
|
113
|
|
114 @menu
|
|
115 * Installation:: How to install pcl-cvs on your system.
|
|
116 * About pcl-cvs:: Authors and ftp sites.
|
|
117
|
|
118 * Getting started:: An introduction with a walk-through example.
|
|
119 * Buffer contents:: An explanation of the buffer contents.
|
|
120 * Commands:: All commands, grouped by type.
|
|
121
|
|
122 * Customization:: How you can tailor pcl-cvs to suit your needs.
|
|
123 * Future enhancements:: Future enhancements of pcl-cvs.
|
|
124 * Bugs:: Bugs (known and unknown).
|
|
125 * COPYING:: GNU General Public License
|
|
126 * Function and Variable Index:: List of functions and variables.
|
|
127 * Concept Index:: List of concepts.
|
|
128 * Key Index:: List of keystrokes.
|
|
129
|
|
130 --- The Detailed Node Listing ---
|
|
131
|
|
132 Installation
|
|
133
|
|
134 * Pcl-cvs installation:: How to install pcl-cvs on your system.
|
|
135 * On-line manual installation:: How to install the on-line manual.
|
|
136 * Typeset manual installation:: How to create typeset documentation
|
|
137 about pcl-cvs.
|
|
138
|
|
139 About pcl-cvs
|
|
140
|
|
141 * Contributors:: Contributors to pcl-cvs.
|
|
142 * Archives:: Where can I get a copy of Pcl-Cvs?
|
|
143
|
|
144 Buffer contents
|
|
145
|
|
146 * File status:: The meaning of the second field.
|
|
147 * Selected files:: How selection works.
|
|
148
|
|
149 Commands
|
|
150
|
|
151 * Updating the directory:: Commands to update the local directory
|
|
152 * Movement commands:: How to move up and down in the buffer
|
|
153 * Marking files:: How to mark files that other commands
|
|
154 will later operate on.
|
|
155 * Committing changes:: Checking in your modifications to the
|
|
156 CVS repository.
|
|
157 * Editing files:: Loading files into Emacs.
|
|
158 * Getting info about files:: Display the log and status of files.
|
|
159 * Adding and removing files:: Adding and removing files
|
|
160 * Undoing changes:: Undoing changes
|
|
161 * Removing handled entries:: Uninteresting lines can easily be removed.
|
|
162 * Ignoring files:: Telling CVS to ignore generated files.
|
|
163 * Viewing differences:: Commands to @samp{diff} different versions.
|
|
164 * Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
|
|
165 * Invoking Emerge:: Running @samp{emerge} from @samp{*cvs*} buffer.
|
|
166 * Reverting your buffers:: Reverting your buffers
|
|
167 * Miscellaneous commands:: Miscellaneous commands
|
|
168 @end menu
|
|
169
|
|
170
|
|
171 @node Installation, About pcl-cvs, Top, Top
|
|
172 @comment node-name, next, previous, up
|
|
173
|
|
174 @chapter Installation
|
|
175 @cindex Installation
|
|
176
|
|
177 This section describes the installation of pcl-cvs, the GNU Emacs CVS
|
|
178 front-end. You should install not only the elisp files themselves, but
|
|
179 also the on-line documentation so that your users will know how to use
|
|
180 it. You can create typeset documentation from the file
|
|
181 @file{pcl-cvs.texinfo} as well as an on-line info file. The following
|
|
182 steps are also described in the file @file{INSTALL} in the source
|
|
183 directory.
|
|
184
|
|
185 @menu
|
|
186 * Pcl-cvs installation:: How to install pcl-cvs on your system.
|
|
187 * On-line manual installation:: How to install the on-line manual.
|
|
188 * Typeset manual installation:: How to create typeset documentation
|
|
189 about pcl-cvs.
|
|
190 @end menu
|
|
191
|
|
192
|
|
193 @node Pcl-cvs installation, On-line manual installation, Installation, Installation
|
|
194 @comment node-name, next, previous, up
|
|
195 @section Installation of the pcl-cvs program
|
|
196 @cindex Installation of elisp files
|
|
197
|
|
198 @enumerate
|
|
199 @item
|
|
200 Possibly edit the file @file{Makefile} to reflect the situation at your
|
|
201 site. We say "possibly" because the version of pcl-cvs included with
|
|
202 CVS uses a configuration mechanism integrated with the overall
|
|
203 mechanisms used by the CVS build and install procedures. Thus the file
|
|
204 @code{Makefile} will be generated automatically from the file
|
|
205 @code{Makefile.in}, and it should not be necessary to edit it further.
|
|
206
|
|
207 If you do have to edit the @file{Makefile}, the only things you have to
|
|
208 change is the definition of @code{lispdir} and @code{infodir}. The
|
|
209 elisp files will be copied to @code{lispdir}, and the info file(s) to
|
|
210 @code{infodir}.
|
|
211
|
|
212 @item
|
|
213 Configure pcl-cvs.el
|
|
214
|
|
215 There are a couple of pathnames that you have to check to make sure that
|
|
216 they match your system. They appear early in the file
|
|
217 @samp{pcl-cvs.el}.
|
|
218
|
|
219 @strong{NOTE:} If your system is running emacs 18.57 or earlier you MUST
|
|
220 uncomment the line that says:
|
|
221 @example
|
|
222 (setq delete-exited-processes nil)
|
|
223 @end example
|
|
224
|
|
225 Setting @code{delete-exited-processes} to @code{nil} works around a bug
|
|
226 in emacs that causes it to dump core. The bug was fixed in emacs
|
|
227 18.58.@refill
|
|
228
|
|
229 @item
|
|
230 Release 1.05 and later of pcl-cvs requires parts of the Elib library,
|
|
231 version 1.0 or later. Elib is available via anonymous ftp from
|
|
232 prep.ai.mit.edu in @file{pub/gnu/elib-1.0.tar.gz}, and from a lot of
|
|
233 other sites that mirror prep. Get Elib, and install it, before
|
|
234 proceeding.
|
|
235
|
|
236 @strong{NOTE:} The version of pcl-cvs included with CVS includes a copy
|
|
237 of Elib in the sub-directory @file{elib} under the
|
|
238 @file{contrib/pcl-cvs} directory.
|
|
239
|
|
240 @item
|
|
241 Type @samp{make install} in the source directory. This will
|
|
242 byte-compile all @file{.el} files and copy the @file{*.elc} files into
|
|
243 the directory you specified in step 1.
|
|
244
|
|
245 If you want to install the @file{*.el} files too, you can type
|
|
246 @samp{make install-el} to do so.
|
|
247
|
|
248 If you only want to create the compiled elisp files, but don't want to
|
|
249 install them, you can type @samp{make} without parameters.
|
|
250
|
|
251 @item
|
|
252 Edit the file @file{default.el} in your emacs lisp directory (usually
|
|
253 @file{/usr/gnu/lib/emacs/site-lisp} or something similar) and enter the
|
|
254 contents of the file @file{pcl-cvs-startup.el} into it. It contains a
|
|
255 couple of @code{auto-load}s that facilitates the use of pcl-cvs.
|
|
256
|
|
257 @end enumerate
|
|
258
|
|
259
|
|
260 @node On-line manual installation, Typeset manual installation, Pcl-cvs installation, Installation
|
|
261 @comment node-name, next, previous, up
|
|
262
|
|
263 @section Installation of the on-line manual.
|
|
264 @cindex Manual installation (on-line)
|
|
265 @cindex Installation of on-line manual
|
|
266 @cindex Generating the on-line manual
|
|
267 @cindex On-line manual (how to generate)
|
|
268 @cindex Info-file (how to generate)
|
|
269
|
|
270 @enumerate
|
|
271 @item
|
|
272 Create the info file(s) @file{pcl-cvs.info*} from @file{pcl-cvs.texinfo}
|
|
273 by typing @samp{make info}. If you don't have the program
|
|
274 @samp{makeinfo} you can get it by anonymous ftp from
|
|
275 e.g. @samp{prep.ai.mit.edu} as @file{pub/gnu/texinfo-3.7.tar.gz} (there
|
|
276 might be a newer version there when you read this).@refill
|
|
277
|
|
278 @item
|
|
279 Install the info file(s) @file{pcl-cvs.info*} into your standard
|
|
280 @file{info} directory. You should be able to do this by typing
|
|
281 @samp{make install-info}.@refill
|
|
282
|
|
283 @item
|
|
284 Edit the file @file{dir} in the @file{info} directory and enter one line
|
|
285 to contain a pointer to the info file(s) @file{pcl-cvs.info*}. The line
|
|
286 can, for instance, look like this:@refill
|
|
287
|
|
288 @example
|
|
289 * Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
|
|
290 @end example
|
|
291 @end enumerate
|
|
292
|
|
293
|
|
294 @node Typeset manual installation, , On-line manual installation, Installation
|
|
295 @comment node-name, next, previous, up
|
|
296
|
|
297 @section How to make typeset documentation from pcl-cvs.texinfo
|
|
298 @cindex Manual installation (typeset)
|
|
299 @cindex Installation of typeset manual
|
|
300 @cindex Printing a manual
|
|
301 @cindex TeX - generating a typeset manual
|
|
302 @cindex Generating a typeset manual
|
|
303
|
|
304 If you have @TeX{} installed at your site, you can make a typeset manual
|
|
305 from @file{pcl-cvs.texinfo}.
|
|
306
|
|
307 @enumerate
|
|
308 @item
|
|
309 Run @TeX{} by typing `@samp{make pcl-cvs.dvi}'. You will not get the
|
|
310 indices unless you have the @code{texindex} program.
|
|
311
|
|
312 @item
|
|
313 Convert the resulting device independent file @file{pcl-cvs.dvi} to a
|
|
314 form which your printer can output and print it. If you have a
|
|
315 postscript printer there is a program, @code{dvi2ps}, which does. There
|
|
316 is also a program which comes together with @TeX{}, @code{dvips}, which
|
|
317 you can use.
|
|
318
|
|
319 @end enumerate
|
|
320
|
|
321
|
|
322 @node About pcl-cvs, Getting started, Installation, Top
|
|
323 @comment node-name, next, previous, up
|
|
324
|
|
325 @chapter About pcl-cvs
|
|
326 @cindex About pcl-cvs
|
|
327
|
|
328 Pcl-cvs is a front-end to CVS versions 1.5 through 1.7 and newer; and
|
|
329 possibly verison 1.3 and 1.4A2. It integrates the most frequently used
|
|
330 CVS commands into an emacs interface.
|
|
331
|
|
332 @menu
|
|
333 * Contributors:: Contributors to pcl-cvs.
|
|
334 * Archives:: Where can I get a copy of Pcl-Cvs?
|
|
335 @end menu
|
|
336
|
|
337
|
|
338 @node Contributors, Archives, About pcl-cvs, About pcl-cvs
|
|
339 @comment node-name, next, previous, up
|
|
340
|
|
341 @section Contributors to pcl-cvs
|
|
342 @cindex Contributors
|
|
343 @cindex Authors
|
|
344
|
|
345 Contributions to the package are welcome. I have limited time to work
|
|
346 on this project, but I will gladly add any code that you contribute to
|
|
347 me to this package (@pxref{Bugs}).
|
|
348
|
|
349 The following persons have made contributions to pcl-cvs.
|
|
350
|
|
351 @itemize @bullet
|
|
352 @item
|
|
353 Brian Berliner wrote CVS, together with some other contributors.
|
|
354 Without his work on CVS this package would be useless@dots{}
|
|
355
|
|
356 @item
|
|
357 Per Cederqvist wrote most of the otherwise unattributed functions in
|
|
358 pcl-cvs as well as all documentation.
|
|
359
|
|
360 @item
|
|
361 Inge Wallin (@samp{inge@@lysator.liu.se}) wrote the skeleton to
|
|
362 @file{pcl-cvs.texinfo}, and gave useful comments on it. He also wrote
|
|
363 the files @file{elib-node.el} and @file{compile-all.el}. The file
|
|
364 @file{cookie.el} was inspired by Inge.@refill
|
|
365
|
|
366 @item
|
|
367 Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
|
|
368 on both the functionality and the documentation.@refill
|
|
369
|
|
370 @item
|
|
371 Jamie Zawinski (@samp{jwz@@lucid.com}) contributed
|
|
372 @file{pcl-cvs-lucid.el}.
|
|
373
|
|
374 @item
|
|
375 Leif Lonnblad contributed RCVS support. (Since superceded by the new
|
|
376 remote CVS support.)
|
|
377
|
|
378 @item
|
|
379 Jim Blandy (@samp{jimb@@cyclic.com}) contributed hooks to automatically
|
|
380 guess CVS log entries from ChangeLog contents; and initial support of
|
|
381 the new Cygnus / Cyclic remote CVS; as well as various sundry bug fixes
|
|
382 and cleanups.
|
|
383
|
|
384 @item
|
|
385 Jim Kingdon (@samp{kingdon@@cyclic.com}) contributed lots of fixes to
|
|
386 the build and install procedure.
|
|
387
|
|
388 @item
|
|
389 Greg A. Woods (@samp{woods@@planix.com}) contributed code to implement
|
|
390 the use of per-file diff buffers; and vendor join diffs with emerge and
|
|
391 ediff; as well as various an sundry bug fixes and cleanups.
|
|
392 @end itemize
|
|
393
|
|
394 Apart from these, a lot of people have send me suggestions, ideas,
|
|
395 requests, bug reports and encouragement. Thanks a lot! Without your
|
|
396 there would be no new releases of pcl-cvs.
|
|
397
|
|
398
|
|
399 @node Archives, , Contributors, About pcl-cvs
|
|
400 @comment node-name, next, previous, up
|
|
401
|
|
402 @section Where can I get pcl-cvs?
|
|
403 @cindex Sites
|
|
404 @cindex Archives
|
|
405 @cindex Ftp-sites
|
|
406 @cindex Getting pcl-cvs
|
|
407 @cindex Email archives
|
|
408
|
|
409 The current release of pcl-cvs is included in CVS-1.7.
|
|
410
|
|
411 The author's release of pcl-cvs can be fetched via anonymous ftp from
|
|
412 @code{ftp.lysator.liu.se}, (IP no. 130.236.254.1) in the directory
|
|
413 @code{pub/emacs}. If you don't live in Scandinavia you should probably
|
|
414 check with archie to see if there is a site closer to you that archives
|
|
415 pcl-cvs.
|
|
416
|
|
417 New releases will be announced to appropriate newsgroups. If you send
|
|
418 your email address to me I will add you to my list of people to mail
|
|
419 when I make a new release.
|
|
420
|
|
421
|
|
422 @node Getting started, Buffer contents, About pcl-cvs, Top
|
|
423 @comment node-name, next, previous, up
|
|
424
|
|
425 @chapter Getting started
|
|
426 @cindex Introduction
|
|
427 @cindex Example run
|
|
428
|
|
429 This document assumes that you know what CVS is, and that you at least
|
|
430 knows the fundamental concepts of CVS. If that is not the case you
|
|
431 should read the man page for CVS.
|
|
432
|
|
433 Pcl-cvs is only useful once you have checked out a module. So before
|
|
434 you invoke it you must have a copy of a module somewhere in the file
|
|
435 system.
|
|
436
|
|
437 You invoke pcl-cvs by typing @kbd{M-x cvs-update RET}. If your emacs
|
|
438 responds with @samp{[No match]} your system administrator has not
|
|
439 installed pcl-cvs properly. Try @kbd{M-x load-library RET pcl-cvs RET}.
|
|
440 If that also fails - talk to your root. If it succeeds you might put
|
|
441 this line in your @file{.emacs} file so that you don't have to type the
|
|
442 @samp{load-library} command every time you wish to use pcl-cvs:
|
|
443
|
|
444 @example
|
|
445 (autoload 'cvs-update "pcl-cvs" nil t)
|
|
446 @end example
|
|
447
|
|
448 The function @code{cvs-update} will ask for a directory. The command
|
|
449 @samp{cvs update} will be run in that directory. (It should contain
|
|
450 files that have been checked out from a CVS archive.) The output from
|
|
451 @code{cvs} will be parsed and presented in a table in a buffer called
|
|
452 @samp{*cvs*}. It might look something like this:
|
|
453
|
|
454 @example
|
|
455 PCL-CVS release 1.05-CVS-1.7.
|
|
456 @comment -release-
|
|
457
|
|
458 In directory /users/ceder/FOO/test:
|
|
459 Updated bar
|
|
460 Updated file.txt
|
|
461 Modified ci namechange
|
|
462 Updated newer
|
|
463
|
|
464 In directory /users/ceder/FOO/test/sub:
|
|
465 Modified ci ChangeLog
|
|
466 ---------- End -----
|
|
467 @end example
|
|
468
|
|
469 In this example the two files (@file{bar}, @file{file.txt}, and
|
|
470 @file{newer}) that are marked with @samp{Updated} have been copied from
|
|
471 the CVS repository to @file{/users/ceder/FOO/test/} since someone else
|
|
472 have checked in newer versions of them. Two files (@file{namechange}
|
|
473 and @file{sub/ChangeLog}) have been modified locally, and needs to be
|
|
474 checked in.
|
|
475
|
|
476 You can move the cursor up and down in the buffer with @kbd{C-n} and
|
|
477 @kbd{C-p} or @kbd{n} and @kbd{p}. If you press @kbd{c} on one of the
|
|
478 @samp{Modified} files that file will be checked in to the CVS
|
|
479 repository. @xref{Committing changes}. You can press @kbd{x} to get rid
|
|
480 of the "uninteresting" files that have only been @samp{Updated} (and
|
|
481 don't require any further action from you).@refill
|
|
482
|
|
483 You can also easily get a @samp{diff} between your modified file and the
|
|
484 base version that you started from, and you can get the output from
|
|
485 @samp{cvs log} and @samp{cvs status} on the listed files simply by
|
|
486 pressing a key (@pxref{Getting info about files}).
|
|
487
|
|
488
|
|
489 @node Buffer contents, Commands, Getting started, Top
|
|
490 @comment node-name, next, previous, up
|
|
491
|
|
492 @chapter Buffer contents
|
|
493 @cindex Buffer contents
|
|
494
|
|
495 The display contains four columns. They contain, from left to right:
|
|
496
|
|
497 @itemize @bullet
|
|
498 @item
|
|
499 An asterisk when the file is @dfn{marked} (@pxref{Selected
|
|
500 files}).@refill
|
|
501 @item
|
|
502 The status of the file. See @xref{File status}, for more
|
|
503 information.@refill
|
|
504 @item
|
|
505 A "need to be checked in"-marker (@samp{ci}).
|
|
506 @item
|
|
507 The file name.
|
|
508 @end itemize
|
|
509
|
|
510 @menu
|
|
511 * File status:: The meaning of the second field.
|
|
512 * Selected files:: How selection works.
|
|
513 @end menu
|
|
514
|
|
515
|
|
516 @node File status, Selected files, Buffer contents, Buffer contents
|
|
517 @comment node-name, next, previous, up
|
|
518
|
|
519 @section File status
|
|
520 @cindex File status
|
|
521 @cindex Updated (file status)
|
|
522 @cindex Patched (file status)
|
|
523 @cindex Modified (file status)
|
|
524 @cindex Merged (file status)
|
|
525 @cindex Conflict (file status)
|
|
526 @cindex Added (file status)
|
|
527 @cindex Removed (file status)
|
|
528 @cindex Unknown (file status)
|
|
529 @cindex Removed from repository (file status)
|
|
530 @cindex Removed from repository, changed by you (file status)
|
|
531 @cindex Removed by you, changed in repository (file status)
|
|
532 @cindex Move away @var{file} - it is in the way (file status)
|
|
533 @cindex This repository is missing!@dots{} (file status)
|
|
534
|
|
535 The @samp{file status} field can have the following values:
|
|
536
|
|
537 @table @samp
|
|
538
|
|
539 @item Updated
|
|
540 The file was brought up to date with respect to the repository. This is
|
|
541 done for any file that exists in the repository but not in your source,
|
|
542 and for files that you haven't changed but are not the most recent
|
|
543 versions available in the repository.@refill
|
|
544
|
|
545 @item Patched
|
|
546 The file was brought up to date with respect to a remote repository by
|
|
547 way of fetching and applying a patch to the file in your source. This
|
|
548 is done for any file that exists in a remote repository and in your
|
|
549 source; of which you haven't changed locally but is not the most recent
|
|
550 version available in the remote repository.@refill
|
|
551
|
|
552 @item Modified
|
|
553 The file is modified in your working directory, and there was no
|
|
554 modification to the same file in the repository.@refill
|
|
555
|
|
556 @item Merged
|
|
557 The file is modified in your working directory, and there were
|
|
558 modifications in the repository as well as in your copy, but they were
|
|
559 merged successfully, without conflict, in your working directory.@refill
|
|
560
|
|
561 @item Conflict
|
|
562 A conflict was detected while trying to merge your changes to @var{file}
|
|
563 with changes from the source repository. @var{file} (the copy in your
|
|
564 working directory) is now the output of the @samp{rcsmerge} command on
|
|
565 the two versions; an unmodified copy of your file is also in your
|
|
566 working directory, with the name @file{.#@var{file}.@var{version}},
|
|
567 where @var{version} is the RCS revision that your modified file started
|
|
568 from. @xref{Viewing differences}, for more details.@refill
|
|
569
|
|
570 @item Added
|
|
571 The file has been added by you, but it still needs to be checked in to
|
|
572 the repository.@refill
|
|
573
|
|
574 @item Removed
|
|
575 The file has been removed by you, but it needs to be checked in to the
|
|
576 repository. You can resurrect it by typing @kbd{a} (@pxref{Adding and
|
|
577 removing files}).@refill
|
|
578
|
|
579 @item Unknown
|
|
580 A file that was detected in your directory, but that neither appears in
|
|
581 the repository, nor is present on the list of files that CVS should
|
|
582 ignore.@refill
|
|
583
|
|
584 @end table
|
|
585
|
|
586 There are also a few special cases, that rarely occur, which have longer
|
|
587 strings in the fields:
|
|
588
|
|
589 @table @samp
|
|
590 @item Removed from repository
|
|
591 The file has been removed from your directory since someone has removed
|
|
592 it from the repository. (It is still present in the Attic directory, so
|
|
593 no permanent loss has occurred). This, unlike the other entries in this
|
|
594 table, is not an error condition.@refill
|
|
595
|
|
596 @item Removed from repository, changed by you
|
|
597 You have modified a file that someone have removed from the repository.
|
|
598 You can correct this situation by removing the file manually (see
|
|
599 @pxref{Adding and removing files}).@refill
|
|
600
|
|
601 @item Removed by you, changed in repository
|
|
602 You have removed a file, and before you committed the removal someone
|
|
603 committed a change to that file. You could use @kbd{a} to resurrect the
|
|
604 file (see @pxref{Adding and removing files}).@refill
|
|
605
|
|
606 @item Move away @var{file} - it is in the way
|
|
607 For some reason CVS does not like the file @var{file}. Rename or remove
|
|
608 it.@refill
|
|
609
|
|
610 @item This repository is missing! Remove this dir manually.
|
|
611 It is impossible to remove a directory in the CVS repository in a clean
|
|
612 way. Someone have tried to remove one, and CVS gets confused. Remove
|
|
613 your copy of the directory.@refill
|
|
614 @end table
|
|
615
|
|
616
|
|
617 @node Selected files, , File status, Buffer contents
|
|
618 @comment node-name, next, previous, up
|
|
619
|
|
620 @section Selected files
|
|
621 @cindex Selected files
|
|
622 @cindex Marked files
|
|
623 @cindex File selection
|
|
624 @cindex Active files
|
|
625
|
|
626 Many of the commands works on the current set of @dfn{selected} files.
|
|
627
|
|
628 @itemize @bullet
|
|
629 @item
|
|
630 If there are any files that are marked they constitute the set of
|
|
631 selected files.@refill
|
|
632 @item
|
|
633 Otherwise, if the cursor points to a file, that file is the selected
|
|
634 file.@refill
|
|
635 @item
|
|
636 Otherwise, if the cursor points to a directory, all the files in that
|
|
637 directory that appears in the buffer are the selected files.
|
|
638 @end itemize
|
|
639
|
|
640 This scheme might seem a little complicated, but once one get used to
|
|
641 it, it is quite powerful.
|
|
642
|
|
643 @xref{Marking files} tells how you mark and unmark files.
|
|
644
|
|
645
|
|
646 @node Commands, Customization, Buffer contents, Top
|
|
647 @comment node-name, next, previous, up
|
|
648
|
|
649 @chapter Commands
|
|
650
|
|
651 @iftex
|
|
652 This chapter describes all the commands that you can use in pcl-cvs.
|
|
653 @end iftex
|
|
654 @ifinfo
|
|
655 The nodes in this menu contains explanations about all the commands that
|
|
656 you can use in pcl-cvs. They are grouped together by type.
|
|
657 @end ifinfo
|
|
658
|
|
659 @menu
|
|
660 * Updating the directory:: Commands to update the local directory
|
|
661 * Movement commands:: How to move up and down in the buffer
|
|
662 * Marking files:: How to mark files that other commands
|
|
663 will later operate on.
|
|
664 * Committing changes:: Checking in your modifications to the
|
|
665 CVS repository.
|
|
666 * Editing files:: Loading files into Emacs.
|
|
667 * Getting info about files:: Display the log and status of files.
|
|
668 * Adding and removing files:: Adding and removing files
|
|
669 * Undoing changes:: Undoing changes
|
|
670 * Removing handled entries:: Uninteresting lines can easily be removed.
|
|
671 * Ignoring files:: Telling CVS to ignore generated files.
|
|
672 * Viewing differences:: Commands to @samp{diff} different versions.
|
|
673 * Invoking Ediff:: Running @samp{ediff} from @samp{*cvs*} buffer.
|
|
674 * Invoking Emerge:: Running @samp{emerge} from @samp{*cvs*} buffer.
|
|
675 * Reverting your buffers:: Reverting your buffers
|
|
676 * Miscellaneous commands:: Miscellaneous commands
|
|
677 @end menu
|
|
678
|
|
679
|
|
680 @node Updating the directory, Movement commands, Commands, Commands
|
|
681 @comment node-name, next, previous, up
|
|
682
|
|
683 @section Updating the directory
|
|
684 @findex cvs-update
|
|
685 @findex cvs-mode-update-no-prompt
|
|
686 @findex cvs-delete-lock
|
|
687 @cindex Getting the *cvs* buffer
|
|
688 @kindex g - Rerun @samp{cvs update}
|
|
689
|
|
690
|
|
691 @table @kbd
|
|
692
|
|
693 @item M-x cvs-update
|
|
694 Run a @samp{cvs update} command. You will be asked for the directory in
|
|
695 which the @samp{cvs update} will be run. The output will be parsed by
|
|
696 pcl-cvs, and the result printed in the @samp{*cvs*} buffer (see
|
|
697 @pxref{Buffer contents} for a description of the contents).@refill
|
|
698
|
|
699 By default, @samp{cvs-update} will descend recursively into
|
|
700 subdirectories. You can avoid that behavior by giving a prefix
|
|
701 argument to it (e.g., by typing @kbd{C-u M-x cvs-update RET}).@refill
|
|
702
|
|
703 All other commands in pcl-cvs requires that you have a @samp{*cvs*}
|
|
704 buffer. This is the command that you use to get one.@refill
|
|
705
|
|
706 CVS uses lock files in the repository to ensure the integrity of the
|
|
707 data files in the repository. They might be left behind i.e. if a
|
|
708 workstation crashes in the middle of a CVS operation. CVS outputs a
|
|
709 message when it is waiting for a lock file to go away. Pcl-cvs will
|
|
710 show the same message in the *cvs* buffer, together with instructions
|
|
711 for deleting the lock files. You should normally not have to delete
|
|
712 them manually --- just wait a little while and the problem should fix
|
|
713 itself. But if the lock files doesn't disappear you can delete them
|
|
714 with @kbd{M-x cvs-delete-lock RET}.@refill
|
|
715
|
|
716 @item g
|
|
717 This will run @samp{cvs update} again. It will always use the same
|
|
718 buffer that was used with the previous @samp{cvs update}. Give a prefix
|
|
719 argument to avoid descending into subdirectories. This runs the command
|
|
720 @samp{cvs-mode-update-no-prompt}.@refill
|
|
721
|
|
722 @item G
|
|
723 This will run @samp{cvs update} and prompt for a new directory to
|
|
724 update. This runs the command @samp{cvs-update}.@refill
|
|
725
|
|
726 @end table
|
|
727
|
|
728
|
|
729 @node Movement commands, Marking files, Updating the directory, Commands
|
|
730 @comment node-name, next, previous, up
|
|
731
|
|
732 @section Movement Commands
|
|
733 @cindex Movement Commands
|
|
734 @findex cookie-next-cookie
|
|
735 @findex cookie-previous-cookie
|
|
736 @kindex SPC - Move down one file
|
|
737 @kindex C-n - Move down one file
|
|
738 @kindex n - Move down one file
|
|
739 @kindex C-p - Move up one file
|
|
740 @kindex p - Move up on file
|
|
741
|
|
742 You can use most normal Emacs commands to move forward and backward in
|
|
743 the buffer. Some keys are rebound to functions that take advantage of
|
|
744 the fact that the buffer is a pcl-cvs buffer:
|
|
745
|
|
746
|
|
747 @table @kbd
|
|
748 @item SPC
|
|
749 @itemx C-n
|
|
750 @itemx n
|
|
751 These keys move the cursor one file forward, towards the end of the
|
|
752 buffer (@code{cookie-next-cookie}).
|
|
753
|
|
754 @item C-p
|
|
755 @itemx p
|
|
756 These keys move one file backward, towards the beginning of the buffer
|
|
757 (@code{cookie-previous-cookie}).
|
|
758 @end table
|
|
759
|
|
760
|
|
761 @node Marking files, Committing changes, Movement commands, Commands
|
|
762 @comment node-name, next, previous, up
|
|
763
|
|
764 @section Marking files
|
|
765 @cindex Selecting files (commands to mark files)
|
|
766 @cindex Marking files
|
|
767 @kindex m - marking a file
|
|
768 @kindex M - marking all files
|
|
769 @kindex u - unmark a file
|
|
770 @kindex ESC DEL - unmark all files
|
|
771 @kindex DEL - unmark previous file
|
|
772 @findex cvs-mode-mark
|
|
773 @findex cvs-mode-unmark
|
|
774 @findex cvs-mode-mark-all-files
|
|
775 @findex cvs-mode-unmark-all-files
|
|
776 @findex cvs-mode-unmark-up
|
|
777
|
|
778 Pcl-cvs works on a set of @dfn{selected files} (@pxref{Selected files}).
|
|
779 You can mark and unmark files with these commands:
|
|
780
|
|
781 @table @kbd
|
|
782 @item m
|
|
783 This marks the file that the cursor is positioned on. If the cursor is
|
|
784 positioned on a directory all files in that directory will be marked.
|
|
785 (@code{cvs-mode-mark}).
|
|
786
|
|
787 @item u
|
|
788 Unmark the file that the cursor is positioned on. If the cursor is on a
|
|
789 directory, all files in that directory will be unmarked.
|
|
790 (@code{cvs-mode-unmark}).@refill
|
|
791
|
|
792 @item M
|
|
793 Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
|
|
794
|
|
795 @item @key{ESC} @key{DEL}
|
|
796 Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}).
|
|
797
|
|
798 @item @key{DEL}
|
|
799 Unmark the file on the previous line, and move point to that line
|
|
800 (@code{cvs-mode-unmark-up}).
|
|
801 @end table
|
|
802
|
|
803
|
|
804 @node Committing changes, Editing files, Marking files, Commands
|
|
805 @comment node-name, next, previous, up
|
|
806
|
|
807 @section Committing changes
|
|
808 @cindex Committing changes
|
|
809 @cindex Ci
|
|
810 @findex cvs-mode-commit
|
|
811 @findex cvs-mode-changelog-commit
|
|
812 @kindex c - commit files
|
|
813 @kindex C - commit files with ChangeLog message
|
|
814 @vindex cvs-erase-input-buffer (variable)
|
|
815 @vindex cvs-auto-revert-after-commit (variable)
|
|
816 @cindex Commit buffer
|
|
817 @cindex Edit buffer
|
|
818 @cindex Erasing commit message
|
|
819 @cindex Reverting buffers after commit
|
|
820
|
|
821 @table @kbd
|
|
822
|
|
823 @item c
|
|
824 All files that have a "need to be checked in"-marker (@pxref{Buffer
|
|
825 contents}) can be checked in with the @kbd{c} command. It checks in all
|
|
826 selected files (@pxref{Selected files}) (except those who lack the
|
|
827 "ci"-marker - they are ignored). Pressing @kbd{c} causes
|
|
828 @code{cvs-mode-commit} to be run.@refill
|
|
829
|
|
830 When you press @kbd{c} you will get a buffer called
|
|
831 @samp{*cvs-commit-message*}. Enter the log message for the file(s) in
|
|
832 it. When you are ready you should press @kbd{C-c C-c} to actually
|
|
833 commit the files (using @code{cvs-edit-done}).
|
|
834
|
|
835 Normally the @samp{*cvs-commit-message*} buffer will retain the log
|
|
836 message from the previous commit, but if the variable
|
|
837 @code{cvs-erase-input-buffer} is set to a non-@code{nil} value the
|
|
838 buffer will be erased. Point and mark will always be located around the
|
|
839 entire buffer so that you can easily erase it with @kbd{C-w}
|
|
840 (@samp{kill-region}).@refill
|
|
841
|
|
842 If you are editing the files in your emacs an automatic
|
|
843 @samp{revert-buffer} will be performed. (If the file contains
|
|
844 @samp{$@asis{Id}$} keywords @samp{cvs commit} will write a new file with
|
|
845 the new values substituted. The auto-revert makes sure that you get
|
|
846 them into your buffer). The revert will not occur if you have modified
|
|
847 your buffer, or if @samp{cvs-auto-revert-after-commit} is set to
|
|
848 @samp{nil}.@refill
|
|
849
|
|
850 @item C
|
|
851 This is just like @samp{cvs-mode-commit}, except that it tries to
|
|
852 provide appropriate default log messages by looking at the
|
|
853 @samp{ChangeLog}s in the current directory. The idea is to write your
|
|
854 ChangeLog entries first, and then use this command to commit your
|
|
855 changes. Pressing @kbd{C} causes @code{cvs-mode-changelog-commit} to be
|
|
856 run.@refill
|
|
857
|
|
858 To select default log text, pcl-cvs:
|
|
859 @itemize @minus
|
|
860 @item
|
|
861 finds the ChangeLogs for the files to be checked in;
|
|
862 @item
|
|
863 verifies that the top entry in the ChangeLog is on the current date and
|
|
864 by the current user; if not, no default text is provided;
|
|
865 @item
|
|
866 search the ChangeLog entry for paragraphs containing the names of the
|
|
867 files we're checking in; and finally
|
|
868 @item
|
|
869 uses those paragraphs as the default log text in the
|
|
870 @samp{*cvs-commit-message*} buffer.
|
|
871 @end itemize
|
|
872
|
|
873 You can then commit the @samp{ChangeLog} file once per day without any
|
|
874 log message.@refill
|
|
875
|
|
876 @end table
|
|
877
|
|
878
|
|
879 @node Editing files, Getting info about files, Committing changes, Commands
|
|
880 @comment node-name, next, previous, up
|
|
881
|
|
882 @section Editing files
|
|
883 @cindex Editing files
|
|
884 @cindex Finding files
|
|
885 @cindex Loading files
|
|
886 @cindex Dired
|
|
887 @cindex Invoking dired
|
|
888 @findex cvs-mode-find-file
|
|
889 @findex cvs-mode-find-file-other-window
|
|
890 @findex cvs-mode-add-change-log-entry-other-window
|
|
891 @kindex f - find file or directory
|
|
892 @kindex o - find file in other window
|
|
893 @kindex A - add ChangeLog entry
|
|
894
|
|
895 There are currently three commands that can be used to find a file (that
|
|
896 is, load it into a buffer and start editing it there). These commands
|
|
897 work on the line that the cursor is situated at. They ignore any marked
|
|
898 files.
|
|
899
|
|
900 @table @kbd
|
|
901 @item f
|
|
902 Find the file that the cursor points to. Run @samp{dired}
|
|
903 @ifinfo
|
|
904 (@pxref{Dired,,,Emacs})
|
|
905 @end ifinfo
|
|
906 if the cursor points to a directory (@code{cvs-mode-find-file}).@refill
|
|
907
|
|
908 @item o
|
|
909 Like @kbd{f}, but use another window
|
|
910 (@code{cvs-mode-find-file-other-window}).@refill
|
|
911
|
|
912 @item A
|
|
913 Invoke @samp{add-change-log-entry-other-window} to edit a
|
|
914 @samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
|
|
915 directory of the file the cursor points to.
|
|
916 (@code{cvs-mode-add-change-log-entry-other-window}).@refill
|
|
917 @end table
|
|
918
|
|
919
|
|
920 @node Getting info about files, Adding and removing files, Editing files, Commands
|
|
921 @comment node-name, next, previous, up
|
|
922
|
|
923 @section Getting info about files
|
|
924 @cindex Status (cvs command)
|
|
925 @cindex Log (RCS/cvs command)
|
|
926 @cindex Getting status
|
|
927 @kindex l - run @samp{cvs log}
|
|
928 @kindex s - run @samp{cvs status}
|
|
929 @findex cvs-mode-log
|
|
930 @findex cvs-mode-status
|
|
931
|
|
932 Both of the following commands can be customized.
|
|
933 @xref{Customization}.@refill
|
|
934
|
|
935 @table @kbd
|
|
936 @item l
|
|
937 Run @samp{cvs log} on all selected files, and show the result in a
|
|
938 temporary buffer (@code{cvs-mode-log}).
|
|
939
|
|
940 @item s
|
|
941 Run @samp{cvs status} on all selected files, and show the result in a
|
|
942 temporary buffer (@code{cvs-mode-status}).
|
|
943 @end table
|
|
944
|
|
945
|
|
946 @node Adding and removing files, Undoing changes, Getting info about files, Commands
|
|
947 @comment node-name, next, previous, up
|
|
948
|
|
949 @section Adding and removing files
|
|
950 @cindex Adding files
|
|
951 @cindex Removing files
|
|
952 @cindex Resurrecting files
|
|
953 @cindex Deleting files
|
|
954 @cindex Putting files under CVS control
|
|
955 @kindex a - add a file
|
|
956 @kindex r - remove a file
|
|
957 @findex cvs-mode-add
|
|
958 @findex cvs-mode-remove-file
|
|
959
|
|
960 The following commands are available to make it easy to add and remove
|
|
961 files from the CVS repository.
|
|
962
|
|
963 @table @kbd
|
|
964 @item a
|
|
965 Add all selected files. This command can be used on @samp{Unknown}
|
|
966 files (see @pxref{File status}). The status of the file will change to
|
|
967 @samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit}, see
|
|
968 @pxref{Committing changes}) to really add the file to the
|
|
969 repository.@refill
|
|
970
|
|
971 This command can also be used on @samp{Removed} files (before you commit
|
|
972 them) to resurrect them.
|
|
973
|
|
974 Selected files that are neither @samp{Unknown} nor @samp{Removed} will
|
|
975 be ignored by this command.
|
|
976
|
|
977 The command that is run is @code{cvs-mode-add}.
|
|
978
|
|
979 @item r
|
|
980 This command removes the selected files (after prompting for
|
|
981 confirmation). The files are @samp{rm}ed from your directory and
|
|
982 (unless the status was @samp{Unknown}; @pxref{File status}) they will
|
|
983 also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
|
|
984 disappear from the buffer. Otherwise their status will change to
|
|
985 @samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit},
|
|
986 @pxref{Committing changes}) to commit the removal.@refill
|
|
987
|
|
988 The command that is run is @code{cvs-mode-remove-file}.
|
|
989 @end table
|
|
990
|
|
991
|
|
992 @node Undoing changes, Removing handled entries, Adding and removing files, Commands
|
|
993 @comment node-name, next, previous, up
|
|
994
|
|
995 @section Undoing changes
|
|
996 @cindex Undo changes
|
|
997 @cindex Flush changes
|
|
998 @kindex U - undo changes
|
|
999 @findex cvs-mode-undo-local-changes
|
|
1000
|
|
1001 @table @kbd
|
|
1002 @item U
|
|
1003 If you have modified a file, and for some reason decide that you don't
|
|
1004 want to keep the changes, you can undo them with this command. It works
|
|
1005 by removing your working copy of the file and then getting the latest
|
|
1006 version from the repository (@code{cvs-mode-undo-local-changes}.
|
|
1007 @end table
|
|
1008
|
|
1009
|
|
1010 @node Removing handled entries, Ignoring files, Undoing changes, Commands
|
|
1011 @comment node-name, next, previous, up
|
|
1012
|
|
1013 @section Removing handled entries
|
|
1014 @cindex Expunging uninteresting entries
|
|
1015 @cindex Uninteresting entries, getting rid of them
|
|
1016 @cindex Getting rid of uninteresting lines
|
|
1017 @cindex Removing uninteresting (processed) lines
|
|
1018 @cindex Handled lines, removing them
|
|
1019 @kindex x - remove processed entries
|
|
1020 @kindex C-k - remove selected entries
|
|
1021 @findex cvs-mode-remove-handled
|
|
1022 @findex cvs-mode-acknowledge
|
|
1023
|
|
1024 @table @kbd
|
|
1025 @item x
|
|
1026 This command allows you to remove all entries that you have processed.
|
|
1027 More specifically, the lines for @samp{Updated} files (@pxref{File
|
|
1028 status} and files that have been checked in (@pxref{Committing changes})
|
|
1029 are removed from the buffer. If a directory becomes empty the heading
|
|
1030 for that directory is also removed. This makes it easier to get an
|
|
1031 overview of what needs to be done.
|
|
1032
|
|
1033 The command is called @code{cvs-mode-remove-handled}. If
|
|
1034 @samp{cvs-auto-remove-handled} is set to non-@code{nil} this will
|
|
1035 automatically be performed after every commit.@refill
|
|
1036
|
|
1037 @item C-k
|
|
1038 This command can be used for lines that @samp{cvs-mode-remove-handled} would
|
|
1039 not delete, but that you want to delete (@code{cvs-mode-acknowledge}).
|
|
1040 @end table
|
|
1041
|
|
1042
|
|
1043 @node Ignoring files, Viewing differences, Removing handled entries, Commands
|
|
1044 @comment node-name, next, previous, up
|
|
1045
|
|
1046 @section Ignoring files
|
|
1047 @kindex i - ignoring files
|
|
1048 @findex cvs-mode-ignore
|
|
1049
|
|
1050 @table @kbd
|
|
1051 @item i
|
|
1052 Arrange so that CVS will ignore the selected files. The file names are
|
|
1053 added to the @file{.cvsignore} file in the corresponding directory. If
|
|
1054 the @file{.cvsignore} doesn't exist it will be created.
|
|
1055
|
|
1056 The @file{.cvsignore} file should normally be added to the repository,
|
|
1057 but you could ignore it also if you like it better that way.
|
|
1058
|
|
1059 This runs @code{cvs-mode-ignore}.
|
|
1060 @end table
|
|
1061
|
|
1062
|
|
1063 @node Viewing differences, Invoking Ediff, Ignoring files, Commands
|
|
1064 @comment node-name, next, previous, up
|
|
1065
|
|
1066 @section Viewing differences
|
|
1067 @cindex Diff
|
|
1068 @cindex Ediff
|
|
1069 @cindex Invoking ediff
|
|
1070 @cindex Conflicts, how to resolve them
|
|
1071 @cindex Viewing differences
|
|
1072 @kindex d - run @samp{cvs diff}
|
|
1073 @kindex b - diff backup file
|
|
1074 @findex cvs-mode-diff-cvs
|
|
1075 @findex cvs-mode-diff-backup
|
|
1076 @vindex cvs-diff-ignore-marks (variable)
|
|
1077
|
|
1078 @table @kbd
|
|
1079 @item d
|
|
1080 Display a @samp{cvs diff} between the selected files and the RCS version
|
|
1081 that they are based on. @xref{Customization} describes how you can send
|
|
1082 flags to @samp{cvs diff}. If @var{cvs-diff-ignore-marks} is set to a
|
|
1083 non-@code{nil} value or if a prefix argument is given (but not both) any
|
|
1084 marked files will not be considered to be selected.
|
|
1085 (@code{cvs-mode-diff-cvs}).@refill
|
|
1086
|
|
1087 @item b
|
|
1088 If CVS finds a conflict while merging two versions of a file (during a
|
|
1089 @samp{cvs update}, @pxref{Updating the directory}) it will save the
|
|
1090 original file in a file called @file{.#@var{FILE}.@var{VERSION}} where
|
|
1091 @var{FILE} is the name of the file, and @var{VERSION} is the RCS version
|
|
1092 number that your file was based on.@refill
|
|
1093
|
|
1094 With the @kbd{b} command you can run a @samp{diff} on the files
|
|
1095 @file{.#@var{FILE}.@var{VERSION}} and @file{@var{FILE}}. You can get a
|
|
1096 context- or Unidiff by setting @samp{cvs-diff-flags} -
|
|
1097 @pxref{Customization}. This command only works on files that have
|
|
1098 status @samp{Conflict} or @samp{Merged}.@refill
|
|
1099
|
|
1100 If @var{cvs-diff-ignore-marks} is set to a non-@code{nil} value or if a
|
|
1101 prefix argument is given (but not both) any marked files will not be
|
|
1102 considered to be selected. (@code{cvs-mode-diff-backup}).@refill
|
|
1103 @end table
|
|
1104
|
|
1105
|
|
1106 @node Invoking Ediff, Invoking Emerge, Viewing differences, Commands
|
|
1107 @comment node-name, next, previous, up
|
|
1108
|
|
1109 @section Running ediff
|
|
1110 @cindex Ediff
|
|
1111 @cindex Invoking ediff
|
|
1112 @cindex Viewing differences
|
|
1113 @cindex Conflicts, resolving
|
|
1114 @cindex Resolving conflicts
|
|
1115 @kindex e - invoke @samp{ediff}
|
|
1116 @findex cvs-mode-ediff
|
|
1117 @findex run-ediff-from-cvs-buffer
|
|
1118 @findex cvs-old-ediff-interface
|
|
1119
|
|
1120 @table @kbd
|
|
1121 @item e
|
|
1122 This command works
|
|
1123 slightly different depending on the version of @samp{ediff} and the file
|
|
1124 status.@refill
|
|
1125
|
|
1126 With modern versions of @samp{ediff}, this command invokes
|
|
1127 @samp{run-ediff-from-cvs-buffer} on one file.@refill
|
|
1128
|
|
1129 @strong{Note:} When the file status is @samp{Merged} or @samp{Conflict},
|
|
1130 CVS has already performed a merge. The resulting file is not used in
|
|
1131 any way if you use this command. If you use the @kbd{q} command inside
|
|
1132 @samp{ediff} (to successfully terminate a merge) the file that CVS
|
|
1133 created will be overwritten.@refill
|
|
1134
|
|
1135 Older versions of @samp{ediff} use an interface similar to
|
|
1136 @samp{emerge}. The function @samp{cvs-old-ediff-interface} is invoked
|
|
1137 if the version of @samp{ediff} you have doesn't support
|
|
1138 @samp{run-ediff-from-cvs-buffer}. These older versions do not support
|
|
1139 merging of revisions.@refill
|
|
1140
|
|
1141 @table @asis
|
|
1142 @item @samp{Modified}
|
|
1143 Run @samp{ediff-files} with your working file as file A, and the latest
|
|
1144 revision in the repository as file B.
|
|
1145
|
|
1146 @item @samp{Merged}
|
|
1147 @itemx @samp{Conflict}
|
|
1148 Run @samp{ediff-files3} with your working file (as it was prior to your
|
|
1149 invocation of @samp{cvs-update}) as file A, the latest revision in the
|
|
1150 repository as file B, and the revision that you based your local
|
|
1151 modifications on as ancestor.
|
|
1152
|
|
1153 @item @samp{Updated}
|
|
1154 @itemx @samp{Patched}
|
|
1155 Run @samp{ediff-files} with your working file as file A, and a given
|
|
1156 revision in the repository as file B. You are prompted for the revision
|
|
1157 to ediff against, and you may specify either a tag name or a numerical
|
|
1158 revision number (@pxref{Getting info about files}).
|
|
1159 @end table
|
|
1160
|
|
1161 @end table
|
|
1162
|
|
1163 @node Invoking Emerge, Reverting your buffers, Invoking Ediff, Commands
|
|
1164 @comment node-name, next, previous, up
|
|
1165
|
|
1166 @section Running emerge
|
|
1167 @cindex Emerge
|
|
1168 @cindex Ediff
|
|
1169 @cindex Viewing differences
|
|
1170 @cindex Invoking emerge
|
|
1171 @cindex Conflicts, resolving
|
|
1172 @cindex Resolving conflicts
|
|
1173 @kindex E - invoke @samp{emerge}
|
|
1174 @findex cvs-mode-emerge
|
|
1175
|
|
1176 @table @kbd
|
|
1177 @item E
|
|
1178 Invoke @samp{emerge} on one file. This command works slightly different
|
|
1179 depending on the file status.
|
|
1180
|
|
1181 @table @asis
|
|
1182 @item @samp{Modified}
|
|
1183 Run @samp{emerge-files} with your working file as file A, and the latest
|
|
1184 revision in the repository as file B.
|
|
1185
|
|
1186 @item @samp{Merged}
|
|
1187 @itemx @samp{Conflict}
|
|
1188 Run @samp{emerge-files-with-ancestor} with your working file (as it was
|
|
1189 prior to your invocation of @samp{cvs-update}) as file A, the latest
|
|
1190 revision in the repository as file B, and the revision that you based
|
|
1191 your local modifications on as ancestor.
|
|
1192 @end table
|
|
1193
|
|
1194 @strong{Note:} When the file status is @samp{Merged} or @samp{Conflict},
|
|
1195 CVS has already performed a merge. The resulting file is not used in
|
|
1196 any way if you use this command. If you use the @kbd{q} command inside
|
|
1197 @samp{emerge} (to successfully terminate the merge) the file that CVS
|
|
1198 created will be overwritten.
|
|
1199
|
|
1200 @end table
|
|
1201
|
|
1202
|
|
1203 @node Reverting your buffers, Miscellaneous commands, Invoking Emerge, Commands
|
|
1204 @comment node-name, next, previous, up
|
|
1205
|
|
1206 @section Reverting your buffers
|
|
1207 @findex cvs-mode-revert-updated-buffers
|
|
1208 @kindex R - revert buffers
|
|
1209 @cindex Syncing buffers
|
|
1210 @cindex Reverting buffers
|
|
1211
|
|
1212 @table @kbd
|
|
1213 @item R
|
|
1214 If you are editing (or just viewing) a file in a buffer, and that file
|
|
1215 is changed by CVS during a @samp{cvs-update}, all you have to do is type
|
|
1216 @kbd{R} in the *cvs* buffer to read in the new versions of the
|
|
1217 files.@refill
|
|
1218
|
|
1219 All files that are @samp{Updated}, @samp{Merged} or in @samp{Conflict}
|
|
1220 are reverted from the disk. Any other files are ignored. Only files
|
|
1221 that you were already editing are read.@refill
|
|
1222
|
|
1223 An error is signalled if you have modified the buffer since it was last
|
|
1224 changed. (@code{cvs-mode-revert-updated-buffers}).@refill
|
|
1225 @end table
|
|
1226
|
|
1227
|
|
1228 @node Miscellaneous commands, , Reverting your buffers, Commands
|
|
1229 @comment node-name, next, previous, up
|
|
1230
|
|
1231 @section Miscellaneous commands
|
|
1232 @findex cvs-byte-compile-files
|
|
1233 @cindex Recompiling elisp files
|
|
1234 @cindex Byte compilation
|
|
1235 @cindex Getting rid of lock files
|
|
1236 @cindex Lock files
|
|
1237 @kindex q - bury the *cvs* buffer
|
|
1238 @findex bury-buffer
|
|
1239
|
|
1240 @table @kbd
|
|
1241 @item M-x cvs-byte-compile-files
|
|
1242 Byte compile all selected files that end in .el.
|
|
1243
|
|
1244 @item M-x cvs-delete-lock
|
|
1245 This command can be used in any buffer, and deletes the lock files that
|
|
1246 the *cvs* buffer informs you about. You should normally never have to
|
|
1247 use this command since CVS tries very carefully to always remove the
|
|
1248 lock files itself.
|
|
1249
|
|
1250 You can only use this command when a message in the *cvs* buffer tells
|
|
1251 you so. You should wait a while before using this command in case
|
|
1252 someone else is running a cvs command.
|
|
1253
|
|
1254 @item q
|
|
1255 Bury the *cvs* buffer. (@code{bury-buffer}).
|
|
1256
|
|
1257 @end table
|
|
1258
|
|
1259
|
|
1260 @node Customization, Future enhancements, Commands, Top
|
|
1261 @comment node-name, next, previous, up
|
|
1262
|
|
1263 @chapter Customization
|
|
1264 @vindex cvs-erase-input-buffer (variable)
|
|
1265 @vindex cvs-inhibit-copyright-message (variable)
|
|
1266 @vindex cvs-diff-flags (variable)
|
|
1267 @vindex cvs-diff-ignore-marks (variable)
|
|
1268 @vindex cvs-log-flags (variable)
|
|
1269 @vindex cvs-status-flags (variable)
|
|
1270 @vindex cvs-auto-remove-handled (variable)
|
|
1271 @vindex cvs-update-prog-output-skip-regexp (variable)
|
|
1272 @vindex cvs-cvsroot (variable)
|
|
1273 @vindex TMPDIR (environment variable)
|
|
1274 @vindex cvs-auto-revert-after-commit (variable)
|
|
1275 @vindex cvs-commit-buffer-require-final-newline (variable)
|
|
1276 @vindex cvs-sort-ignore-file (variable)
|
|
1277 @cindex Inhibiting the Copyright message.
|
|
1278 @cindex Copyright message, getting rid of it
|
|
1279 @cindex Getting rid of the Copyright message.
|
|
1280 @cindex Customization
|
|
1281 @cindex Variables, list of all
|
|
1282 @cindex Erasing the input buffer
|
|
1283 @cindex Context diff, how to get
|
|
1284 @cindex Unidiff, how to get
|
|
1285 @cindex Automatically remove handled files
|
|
1286 @cindex -u option in modules file
|
|
1287 @cindex Modules file (-u option)
|
|
1288 @cindex Update program (-u option in modules file)
|
|
1289 @cindex Reverting buffers after commit
|
|
1290 @cindex Require final newline
|
|
1291 @cindex Automatically inserting newline
|
|
1292 @cindex Commit message, inserting newline
|
|
1293 @cindex Sorting the .cvsignore file
|
|
1294 @cindex .cvsignore file, sorting
|
|
1295 @cindex Automatically sorting .cvsignore
|
|
1296
|
|
1297 If you have an idea about any customization that would be handy but
|
|
1298 isn't present in this list, please tell me! @xref{Bugs} for info on how
|
|
1299 to reach me.@refill
|
|
1300
|
|
1301 @table @samp
|
|
1302 @item cvs-erase-input-buffer
|
|
1303 If set to anything else than @code{nil} the edit buffer will be erased
|
|
1304 before you write the log message (@pxref{Committing changes}).
|
|
1305
|
|
1306 @item cvs-inhibit-copyright-message
|
|
1307 The copyright message that is displayed on startup can be annoying after
|
|
1308 a while. Set this variable to @samp{t} if you want to get rid of it.
|
|
1309 (But don't set this to @samp{t} in the system defaults file - new users
|
|
1310 should see this message at least once).
|
|
1311
|
|
1312 @item cvs-diff-flags
|
|
1313 A list of strings to pass as arguments to the @samp{cvs diff} and
|
|
1314 @samp{diff} programs. This is used by @samp{cvs-mode-diff-cvs} and
|
|
1315 @samp{cvs-mode-diff-backup} (key @kbd{b}, @pxref{Viewing differences}). If
|
|
1316 you prefer the Unidiff format you could add this line to your
|
|
1317 @file{.emacs} file:@refill
|
|
1318
|
|
1319 @example
|
|
1320 (setq cvs-diff-flags '("-u"))
|
|
1321 @end example
|
|
1322
|
|
1323 @item cvs-diff-ignore-marks
|
|
1324 If this variable is non-@code{nil} or if a prefix argument is given (but
|
|
1325 not both) to @samp{cvs-mode-diff-cvs} or @samp{cvs-mode-diff-backup}
|
|
1326 marked files are not considered selected.
|
|
1327
|
|
1328 @item cvs-log-flags
|
|
1329 List of strings to send to @samp{cvs log}. Used by @samp{cvs-mode-log}
|
|
1330 (key @kbd{l}, @pxref{Getting info about files}).
|
|
1331
|
|
1332 @item cvs-status-flags
|
|
1333 List of strings to send to @samp{cvs status}. Used by @samp{cvs-mode-status}
|
|
1334 (key @kbd{s}, @pxref{Getting info about files}).
|
|
1335
|
|
1336 @item cvs-auto-remove-handled
|
|
1337 If this variable is set to any non-@code{nil} value
|
|
1338 @samp{cvs-mode-remove-handled} will be called every time you check in
|
|
1339 files, after the check-in is ready. @xref{Removing handled
|
|
1340 entries}.@refill
|
|
1341
|
|
1342 @item cvs-auto-revert-after-commit
|
|
1343 If this variable is set to any non-@samp{nil} value any buffers you have
|
|
1344 that visit a file that is committed will be automatically reverted.
|
|
1345 This variable is default @samp{t}. @xref{Committing changes}.@refill
|
|
1346
|
|
1347 @item cvs-update-prog-output-skip-regexp
|
|
1348 The @samp{-u} flag in the @file{modules} file can be used to run a command
|
|
1349 whenever a @samp{cvs update} is performed (see cvs(5)). This regexp
|
|
1350 is used to search for the last line in that output. It is normally set
|
|
1351 to @samp{"$"}. That setting is only correct if the command outputs
|
|
1352 nothing. Note that pcl-cvs will get very confused if the command
|
|
1353 outputs @emph{anything} to @samp{stderr}.
|
|
1354
|
|
1355 @item cvs-cvsroot
|
|
1356 This variable can be set to override @samp{CVSROOT}. It should be a
|
|
1357 string. If it is set then everytime a cvs command is run it will be
|
|
1358 called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if
|
|
1359 your site has several repositories.
|
|
1360
|
|
1361 @item TMPDIR
|
|
1362 Pcl-cvs uses this @emph{environment variable} to decide where to put the
|
|
1363 temporary files it needs. It defaults to @file{/tmp} if it is not set.
|
|
1364
|
|
1365 @item cvs-commit-buffer-require-final-newline
|
|
1366 When you enter a log message in the @samp{*cvs-commit-message*} buffer
|
|
1367 pcl-cvs will normally automatically insert a trailing newline, unless
|
|
1368 there already is one. This behavior can be controlled via
|
|
1369 @samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the
|
|
1370 default behavior), a newline will always be appended. If it is
|
|
1371 @samp{nil}, newlines will never be appended. Any other value causes
|
|
1372 pcl-cvs to ask the user whenever there is no trailing newline in the
|
|
1373 commit message buffer.
|
|
1374
|
|
1375 @item cvs-sort-ignore-file
|
|
1376 If this variable is set to any non-@samp{nil} value the
|
|
1377 @file{.cvsignore} will always be sorted whenever you use
|
|
1378 @samp{cvs-mode-ignore} to add a file to it. This option is on by
|
|
1379 default.
|
|
1380
|
|
1381 @end table
|
|
1382
|
|
1383
|
|
1384 @node Future enhancements, Bugs, Customization, Top
|
|
1385 @comment node-name, next, previous, up
|
|
1386
|
|
1387 @chapter Future enhancements
|
|
1388 @cindex Enhancements
|
|
1389
|
|
1390 Pcl-cvs is still under development and needs a number of enhancements to
|
|
1391 be called complete. Below is my current wish-list for future releases
|
|
1392 of pcl-cvs. Please, let me know which of these features you want most.
|
|
1393 They are listed below in approximately the order that I currently think
|
|
1394 I will implement them in.
|
|
1395
|
|
1396 @itemize @bullet
|
|
1397 @item
|
|
1398 Rewritten parser code. There are many situations where pcl-cvs will
|
|
1399 fail to recognize the output from CVS. The situation could be greatly
|
|
1400 increased.
|
|
1401
|
|
1402 @item
|
|
1403 @samp{cvs-status}. This will run @samp{cvs status} in a directory and
|
|
1404 produce a buffer that looks pretty much like the current *cvs* buffer.
|
|
1405 That buffer will include information for all version-controlled files.
|
|
1406 (There will be a simple keystroke to remove all "uninteresting" files,
|
|
1407 that is, files that are "Up-to-date"). In this new buffer you will be
|
|
1408 able to update a file, commit a file, et c. The big win with this is
|
|
1409 that you will be able to watch the differences between your current
|
|
1410 working file and the head revision in the repository before you update
|
|
1411 the file, and you can then choose to update it or let it wait for a
|
|
1412 while longer.
|
|
1413
|
|
1414 @item
|
|
1415 Log mode. When this mode is finished you will be able to move around
|
|
1416 (using @kbd{n} and @kbd{p}) between the revisions of a file, mark two of
|
|
1417 them, and run a diff between them. You will be able to hide branches
|
|
1418 (similar to the way you can hide sub-paragraphs in outline-mode) and do
|
|
1419 merges between revisions. Other ideas about this are welcome.
|
|
1420
|
|
1421 @item
|
|
1422 The current model for marks in the *cvs* buffer seems to be confusing.
|
|
1423 I am considering to use the VM model instead, where marks are normally
|
|
1424 inactive. To activate the mark, you issue a command like
|
|
1425 @samp{cvs-mode-next-command-uses-marks}. I might implement a flag so
|
|
1426 that you can use either version. Feedback on this before I start coding
|
|
1427 it is very welcome.
|
|
1428
|
|
1429 @item
|
|
1430 It should be possible to run commands such as @samp{cvs log}, @samp{cvs
|
|
1431 status} and @samp{cvs commit} directly from a buffer containing a file,
|
|
1432 instead of having to @samp{cvs-update}. If the directory contains many
|
|
1433 files the @samp{cvs-update} can take quite some time, especially on a
|
|
1434 slow machine. I planed to put these kind of commands on the prefix
|
|
1435 @kbd{C-c C-v}, but that turned out to be used by for instance c++-mode.
|
|
1436 If you have any suggestions for a better prefix key, please let me know.
|
|
1437
|
|
1438 @item
|
|
1439 Increased robustness. For instance, you can not currently press
|
|
1440 @kbd{C-g} when you are entering the description of a file that you are
|
|
1441 adding without confusing pcl-cvs.
|
|
1442
|
|
1443 @item
|
|
1444 Support for multiple active *cvs* buffers.
|
|
1445
|
|
1446 @item
|
|
1447 Dired support. I have an experimental @file{dired-cvs.el} that works
|
|
1448 together with CVS 1.2. Unfortunately I wrote it on top of a
|
|
1449 non-standard @file{dired.el}, so it must be rewritten.@refill
|
|
1450
|
|
1451 @item
|
|
1452 An ability to send user-supplied options to all the cvs commands.
|
|
1453
|
|
1454 @item
|
|
1455 Pcl-cvs is not at all clever about what it should do when @samp{cvs
|
|
1456 update} runs a program (due to the @samp{-u} option in the
|
|
1457 @file{modules} file --- see @samp{cvs(5)}). The current release uses a
|
|
1458 regexp to search for the end. At the very least that regexp should be
|
|
1459 configured for different modules. Tell me if you have any idea about
|
|
1460 what is the right thing to do. In a perfect world the program should
|
|
1461 also be allowed to print to @samp{stderr} without causing pcl-cvs to
|
|
1462 crash.
|
|
1463 @end itemize
|
|
1464
|
|
1465
|
|
1466 If you miss something in this wish-list, let me know! I don't promise
|
|
1467 that I will write it, but I will at least try to coordinate the efforts
|
|
1468 of making a good Emacs front end to CVS. See @xref{Bugs} for
|
|
1469 information about how to reach me.@refill
|
|
1470
|
|
1471 So far, I have written most of pcl-cvs in my all-to-rare spare time. If
|
|
1472 you want pcl-cvs to be developed faster you can write a contract with
|
|
1473 Signum Support to do the extension. You can reach Signum Support by
|
|
1474 email to @samp{info@@signum.se} or via mail to Signum Support AB, Box
|
|
1475 2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 - 21 46 00. Fax:
|
|
1476 +46 (0) 13 - 21 47 00.
|
|
1477
|
|
1478
|
|
1479 @node Bugs, COPYING, Future enhancements, Top
|
|
1480 @comment node-name, next, previous, up
|
|
1481
|
|
1482 @chapter Bugs (known and unknown)
|
|
1483 @cindex Reporting bugs and ideas
|
|
1484 @cindex Bugs, how to report them
|
|
1485 @cindex Author, how to reach
|
|
1486 @cindex Email to the author
|
|
1487 @cindex Known bugs
|
|
1488 @cindex Bugs, known
|
|
1489 @cindex FAQ
|
|
1490 @cindex Problems, list of common
|
|
1491
|
|
1492 If you find a bug or misfeature, don't hesitate to tell me! Send email
|
|
1493 to @samp{ceder@@lysator.liu.se}.
|
|
1494
|
|
1495 If you have ideas for improvements, or if you have written some
|
|
1496 extensions to this package, I would like to hear from you. I hope that
|
|
1497 you find this package useful!
|
|
1498
|
|
1499 Below is a partial list of currently known problems with pcl-cvs version
|
|
1500 1.05.
|
|
1501
|
|
1502 @table @asis
|
|
1503 @item Commit causes Emacs to hang
|
|
1504 Emacs waits for the @samp{cvs commit} command to finish before you can
|
|
1505 do anything. If you start a background job from the loginfo file you
|
|
1506 must take care that it closes @samp{stdout} and @samp{stderr} if you do
|
|
1507 not want to wait for it. (You do that with @samp{background-command &>-
|
|
1508 2&>- &} if you are starting @samp{background-command} from a
|
|
1509 @samp{/bin/sh} shell script).
|
|
1510
|
|
1511 Your emacs will also hang if there was a lock file in the repository.
|
|
1512 In this case you can type @kbd{C-g} to get control over your emacs
|
|
1513 again.
|
|
1514
|
|
1515 @item Name clash in Emacs 19
|
|
1516 This is really a bug in Elib or the Emacs 19 distribution. Both Elib and
|
|
1517 Emacs 19.6 through at least 19.10 contains a file named
|
|
1518 @file{cookie.el}. One of the files will have to be renamed, and we are
|
|
1519 currently negotiating about which of the files to rename.
|
|
1520
|
|
1521 @item Commands while cvs-update is running
|
|
1522 It is possible to type commands in the *cvs* buffer while the update is
|
|
1523 running, but error messages is all that you will get. The error
|
|
1524 messages should be better.
|
|
1525
|
|
1526 @item Unexpected output from CVS
|
|
1527 Unexpected output from CVS confuses pcl-cvs. It will currently create a
|
|
1528 bug report that you can mail to me. It should do something more
|
|
1529 civilized.
|
|
1530 @end table
|
|
1531
|
|
1532
|
|
1533 @node COPYING, Function and Variable Index, Bugs, Top
|
|
1534 @comment node-name, next, previous, up
|
|
1535
|
|
1536 @appendix GNU GENERAL PUBLIC LICENSE
|
|
1537 @c @include gpl.texinfo
|
|
1538
|
|
1539
|
|
1540 @node Function and Variable Index, Concept Index, COPYING, Top
|
|
1541 @comment node-name, next, previous, up
|
|
1542
|
|
1543 @unnumbered Function and Variable Index
|
|
1544
|
|
1545 @printindex fn
|
|
1546
|
|
1547
|
|
1548 @node Concept Index, Key Index, Function and Variable Index, Top
|
|
1549 @comment node-name, next, previous, up
|
|
1550
|
|
1551 @unnumbered Concept Index
|
|
1552
|
|
1553 @printindex cp
|
|
1554
|
|
1555
|
|
1556 @node Key Index, , Concept Index, Top
|
|
1557 @comment node-name, next, previous, up
|
|
1558
|
|
1559 @unnumbered Key Index
|
|
1560
|
|
1561 @printindex ky
|
|
1562
|
|
1563 @summarycontents
|
|
1564 @contents
|
|
1565 @bye
|