Mercurial > hg > xemacs-beta
comparison man/pcl-cvs.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 131b0175ea99 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 \input texinfo @c -*-texinfo-*- | |
2 | |
3 @comment OrigId: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder Exp | |
4 @comment @@(#)cvs/contrib/pcl-cvs:$Name: $:$Id: pcl-cvs.texi,v 1.1.1.1 1996/12/18 03:35:44 steve Exp $ | |
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 |