1CVS(1) General Commands Manual CVS(1)
2
3
4
6 cvs - Concurrent Versions System
7
9 cvs [ cvs_options ]
10 cvs_command [ command_options ] [ command_args ]
11
13 This manpage is a summary of some of the features of cvs. It is auto-
14 generated from an appendix of the CVS manual. For more in-depth docu‐
15 mentation, please consult the Cederqvist manual (via the info CVS com‐
16 mand or otherwise, as described in the SEE ALSO section of this man‐
17 page). Cross-references in this man page refer to nodes in the same.
18
20 Guide to CVS commands
21 This appendix describes the overall structure of cvs commands, and
22 describes some commands in detail (others are described elsewhere; for
23 a quick reference to cvs commands, see node `Invoking CVS' in the CVS
24 manual).
25
26
28 Overall structure of CVS commands
29 The overall format of all cvs commands is:
30
31
32 cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
33
34
35
36
37
38
39 cvs
40
41 The name of the cvs program.
42
43
44
45 cvs_options
46
47 Some options that affect all sub-commands of cvs. These are
48 described below.
49
50
51
52 cvs_command
53
54 One of several different sub-commands. Some of the commands have
55 aliases that can be used instead; those aliases are noted in the ref‐
56 erence manual for that command. There are only two situations where
57 you may omit cvs_command: cvs -H elicits a list of available com‐
58 mands, and cvs -v displays version information on cvs itself.
59
60
61
62 command_options
63
64 Options that are specific for the command.
65
66
67
68 command_args
69
70 Arguments to the commands.
71
72 There is unfortunately some confusion between cvs_options and com‐
73 mand_options. When given as a cvs_option, some options only affect
74 some of the commands. When given as a command_option it may have a
75 different meaning, and be accepted by more commands. In other words,
76 do not take the above categorization too seriously. Look at the doc‐
77 umentation instead.
78
79
81 CVS's exit status
82 cvs can indicate to the calling environment whether it succeeded or
83 failed by setting its exit status. The exact way of testing the exit
84 status will vary from one operating system to another. For example in
85 a unix shell script the $? variable will be 0 if the last command
86 returned a successful exit status, or greater than 0 if the exit status
87 indicated failure.
88
89 If cvs is successful, it returns a successful status; if there is an
90 error, it prints an error message and returns a failure status. The
91 one exception to this is the cvs diff command. It will return a suc‐
92 cessful status if it found no differences, or a failure status if there
93 were differences or if there was an error. Because this behavior pro‐
94 vides no good way to detect errors, in the future it is possible that
95 cvs diff will be changed to behave like the other cvs commands.
96
97
99 Default options and the ~/.cvsrc file
100 There are some command_options that are used so often that you might
101 have set up an alias or some other means to make sure you always spec‐
102 ify that option. One example (the one that drove the implementation of
103 the .cvsrc support, actually) is that many people find the default out‐
104 put of the diff command to be very hard to read, and that either con‐
105 text diffs or unidiffs are much easier to understand.
106
107 The ~/.cvsrc file is a way that you can add default options to cvs_com‐
108 mands within cvs, instead of relying on aliases or other shell scripts.
109
110 The format of the ~/.cvsrc file is simple. The file is searched for a
111 line that begins with the same name as the cvs_command being executed.
112 If a match is found, then the remainder of the line is split up (at
113 whitespace characters) into separate options and added to the command
114 arguments before any options from the command line.
115
116 If a command has two names (e.g., checkout and co), the official name,
117 not necessarily the one used on the command line, will be used to match
118 against the file. So if this is the contents of the user's ~/.cvsrc
119 file:
120
121
122 log -N
123 diff -uN
124 rdiff -u
125 update -Pd
126 checkout -P
127 release -d
128
129
130
131
132 the command cvs checkout foo would have the -P option added to the
133 arguments, as well as cvs co foo.
134
135 With the example file above, the output from cvs diff foobar will be in
136 unidiff format. cvs diff -c foobar will provide context diffs, as
137 usual. Getting "old" format diffs would be slightly more complicated,
138 because diff doesn't have an option to specify use of the "old" format,
139 so you would need cvs -f diff foobar.
140
141 In place of the command name you can use cvs to specify global options
142 (see node `Global options' in the CVS manual). For example the follow‐
143 ing line in .cvsrc
144
145
146 cvs -z6
147
148
149
150
151 causes cvs to use compression level 6.
152
153
155 The available cvs_options (that are given to the left of cvs_command)
156 are:
157
158
159
160 --allow-root=rootdir
161
162 Specify legal cvsroot directory. See `Password authentication
163 server' in the CVS manual.
164
165
166
167 -a
168
169 Authenticate all communication between the client and the server.
170 Only has an effect on the cvs client. As of this writing, this is
171 only implemented when using a GSSAPI connection (see node `GSSAPI
172 authenticated' in the CVS manual). Authentication prevents certain
173 sorts of attacks involving hijacking the active tcp connection.
174 Enabling authentication does not enable encryption.
175
176
177
178 -b bindir
179
180 In cvs 1.9.18 and older, this specified that rcs programs are in the
181 bindir directory. Current versions of cvs do not run rcs programs;
182 for compatibility this option is accepted, but it does nothing.
183
184
185
186 -T tempdir
187
188 Use tempdir as the directory where temporary files are located.
189 Overrides the setting of the $TMPDIR environment variable and any
190 precompiled directory. This parameter should be specified as an
191 absolute pathname. (When running client/server, -T affects only the
192 local process; specifying -T for the client has no effect on the
193 server and vice versa.)
194
195
196
197 -d cvs_root_directory
198
199 Use cvs_root_directory as the root directory pathname of the reposi‐
200 tory. Overrides the setting of the $CVSROOT environment variable.
201 See `Repository' in the CVS manual.
202
203
204
205 -e editor
206
207 Use editor to enter revision log information. Overrides the setting
208 of the $CVSEDITOR and $EDITOR environment variables. For more infor‐
209 mation, see `Committing your changes' in the CVS manual.
210
211
212
213 -f
214
215 Do not read the ~/.cvsrc file. This option is most often used
216 because of the non-orthogonality of the cvs option set. For example,
217 the cvs log option -N (turn off display of tag names) does not have a
218 corresponding option to turn the display on. So if you have -N in
219 the ~/.cvsrc entry for log, you may need to use -f to show the tag
220 names.
221
222
223
224 -H
225
226
227
228
229 --help
230
231 Display usage information about the specified cvs_command (but do not
232 actually execute the command). If you don't specify a command name,
233 cvs -H displays overall help for cvs, including a list of other help
234 options.
235
236
237
238 -n
239
240 Do not change any files. Attempt to execute the cvs_command, but
241 only to issue reports; do not remove, update, or merge any existing
242 files, or create any new files.
243
244 Note that cvs will not necessarily produce exactly the same output as
245 without -n. In some cases the output will be the same, but in other
246 cases cvs will skip some of the processing that would have been
247 required to produce the exact same output.
248
249
250
251 -Q
252
253 Cause the command to be really quiet; the command will only generate
254 output for serious problems.
255
256
257
258 -q
259
260 Cause the command to be somewhat quiet; informational messages, such
261 as reports of recursion through subdirectories, are suppressed.
262
263
264
265 -r
266
267 Make new working files read-only. Same effect as if the $CVSREAD
268 environment variable is set (see node `Environment variables' in the
269 CVS manual). The default is to make working files writable, unless
270 watches are on (see node `Watches' in the CVS manual).
271
272
273
274 -s variable=value
275
276 Set a user variable (see node `Variables' in the CVS manual).
277
278
279
280 -t
281
282 Trace program execution; display messages showing the steps of cvs
283 activity. Particularly useful with -n to explore the potential
284 impact of an unfamiliar command.
285
286
287
288 -v
289
290
291
292
293 --version
294
295 Display version and copyright information for cvs.
296
297
298
299 -w
300
301 Make new working files read-write. Overrides the setting of the
302 $CVSREAD environment variable. Files are created read-write by
303 default, unless $CVSREAD is set or -r is given.
304
305
306
307 -x
308
309 Encrypt all communication between the client and the server. Only
310 has an effect on the cvs client. As of this writing, this is only
311 implemented when using a GSSAPI connection (see node `GSSAPI authen‐
312 ticated' in the CVS manual) or a Kerberos connection (see node `Ker‐
313 beros authenticated' in the CVS manual). Enabling encryption implies
314 that message traffic is also authenticated. Encryption support is
315 not available by default; it must be enabled using a special config‐
316 ure option, --enable-encryption, when you build cvs.
317
318
319
320 -z gzip-level
321
322 Set the compression level. Valid levels are 1 (high speed, low com‐
323 pression) to 9 (low speed, high compression), or 0 to disable com‐
324 pression (the default). Only has an effect on the cvs client.
325
326
327
329 Common command options
330 This section describes the command_options that are available across
331 several cvs commands. These options are always given to the right of
332 cvs_command. Not all commands support all of these options; each option
333 is only supported for commands where it makes sense. However, when a
334 command has one of these options you can almost always count on the
335 same behavior of the option as in other commands. (Other command
336 options, which are listed with the individual commands, may have dif‐
337 ferent behavior from one cvs command to the other).
338
339 The history command is an exception; it supports many options that con‐
340 flict even with these standard options.
341
342
343
344 -D date_spec
345
346 Use the most recent revision no later than date_spec. date_spec is a
347 single argument, a date description specifying a date in the past.
348
349 The specification is sticky when you use it to make a private copy of
350 a source file; that is, when you get a working file using -D, cvs
351 records the date you specified, so that further updates in the same
352 directory will use the same date (for more information on sticky
353 tags/dates, see node `Sticky tags' in the CVS manual).
354
355 -D is available with the annotate, checkout, diff, export, history,
356 rdiff, rtag, and update commands. (The history command uses this
357 option in a slightly different way; see node `history options' in the
358 CVS manual).
359
360 A wide variety of date formats are supported by cvs. The most stan‐
361 dard ones are ISO8601 (from the International Standards Organization)
362 and the Internet e-mail standard (specified in RFC822 as amended by
363 RFC1123).
364
365 ISO8601 dates have many variants but a few examples are:
366
367
368 1972-09-24
369 1972-09-24 20:05
370
371
372
373
374 There are a lot more ISO8601 date formats, and cvs accepts many of
375 them, but you probably don't want to hear the whole long story :-).
376
377 In addition to the dates allowed in Internet e-mail itself, cvs also
378 allows some of the fields to be omitted. For example:
379
380
381 24 Sep 1972 20:05
382 24 Sep
383
384
385
386
387 The date is interpreted as being in the local timezone, unless a spe‐
388 cific timezone is specified.
389
390 These two date formats are preferred. However, cvs currently accepts
391 a wide variety of other date formats. They are intentionally not
392 documented here in any detail, and future versions of cvs might not
393 accept all of them.
394
395 One such format is month/day/year. This may confuse people who are
396 accustomed to having the month and day in the other order; 1/4/96 is
397 January 4, not April 1.
398
399 Remember to quote the argument to the -D flag so that your shell
400 doesn't interpret spaces as argument separators. A command using the
401 -D flag can look like this:
402
403
404 $ cvs diff -D "1 hour ago" cvs.texinfo
405
406
407
408
409
410
411 -f
412
413 When you specify a particular date or tag to cvs commands, they nor‐
414 mally ignore files that do not contain the tag (or did not exist
415 prior to the date) that you specified. Use the -f option if you want
416 files retrieved even when there is no match for the tag or date.
417 (The most recent revision of the file will be used).
418
419 Note that even with -f, a tag that you specify must exist (that is,
420 in some file, not necessary in every file). This is so that cvs will
421 continue to give an error if you mistype a tag name.
422
423 -f is available with these commands: annotate, checkout, export,
424 rdiff, rtag, and update.
425
426 WARNING: The commit and remove commands also have a -f option, but
427 it has a different behavior for those commands. See `commit options'
428 in the CVS manual, and `Removing files' in the CVS manual.
429
430
431
432 -k kflag
433
434 Alter the default processing of keywords. See `Keyword substitution'
435 in the CVS manual, for the meaning of kflag. Your kflag specifica‐
436 tion is sticky when you use it to create a private copy of a source
437 file; that is, when you use this option with the checkout or update
438 commands, cvs associates your selected kflag with the file, and con‐
439 tinues to use it with future update commands on the same file until
440 you specify otherwise.
441
442 The -k option is available with the add, checkout, diff, rdiff,
443 import and update commands.
444
445
446
447 -l
448
449 Local; run only in current working directory, rather than recursing
450 through subdirectories.
451
452 Available with the following commands: annotate, checkout, commit,
453 diff, edit, editors, export, log, rdiff, remove, rtag, status, tag,
454 unedit, update, watch, and watchers.
455
456
457
458 -m message
459
460 Use message as log information, instead of invoking an editor.
461
462 Available with the following commands: add, commit and import.
463
464
465
466 -n
467
468 Do not run any tag program. (A program can be specified to run in
469 the modules database (see node `modules' in the CVS manual); this
470 option bypasses it).
471
472 This is not the same as the cvs -n program option, which you can
473 specify to the left of a cvs command!
474
475 Available with the checkout, export, and rtag commands.
476
477
478
479 -P
480
481 Prune empty directories. See `Removing directories' in the CVS man‐
482 ual.
483
484
485
486 -p
487
488 Pipe the files retrieved from the repository to standard output,
489 rather than writing them in the current directory. Available with
490 the checkout and update commands.
491
492
493
494 -R
495
496 Process directories recursively. This is on by default.
497
498 Available with the following commands: annotate, checkout, commit,
499 diff, edit, editors, export, rdiff, remove, rtag, status, tag,
500 unedit, update, watch, and watchers.
501
502
503
504 -r tag
505
506 Use the revision specified by the tag argument instead of the default
507 head revision. As well as arbitrary tags defined with the tag or
508 rtag command, two special tags are always available: HEAD refers to
509 the most recent version available in the repository, and BASE refers
510 to the revision you last checked out into the current working direc‐
511 tory.
512
513 The tag specification is sticky when you use this with checkout or
514 update to make your own copy of a file: cvs remembers the tag and
515 continues to use it on future update commands, until you specify oth‐
516 erwise (for more information on sticky tags/dates, see node `Sticky
517 tags' in the CVS manual).
518
519 The tag can be either a symbolic or numeric tag, as described in
520 `Tags' in the CVS manual, or the name of a branch, as described in
521 `Branching and merging' in the CVS manual. When a command expects a
522 specific revision, the name of a branch is interpreted as the most
523 recent revision on that branch.
524
525 Specifying the -q global option along with the -r command option is
526 often useful, to suppress the warning messages when the rcs file does
527 not contain the specified tag.
528
529 This is not the same as the overall cvs -r option, which you can
530 specify to the left of a cvs command!
531
532 -r is available with the annotate, checkout, commit, diff, history,
533 export, rdiff, rtag, and update commands.
534
535
536
537 -W
538
539 Specify file names that should be filtered. You can use this option
540 repeatedly. The spec can be a file name pattern of the same type
541 that you can specify in the .cvswrappers file. Available with the
542 following commands: import, and update.
543
544
545
547 Add files and directories to the repository
548 · Synopsis: add [-k rcs-kflag] [-m message] files...
549
550 · Requires: repository, working directory.
551
552 · Changes: repository, working directory.
553
554 The add command is used to present new files and directories for
555 addition into the cvs repository. When add is used on a directory, a
556 new directory is created in the repository immediately. When used on
557 a file, only the working directory is updated. Changes to the repos‐
558 itory are not made until the commit command is used on the newly
559 added file.
560
561 The add command also resurrects files that have been previously
562 removed. This can be done before or after the commit command is used
563 to finalize the removal of files. Resurrected files are restored
564 into the working directory at the time the add command is executed.
565
566
568 These standard options are supported by add (see node `Common options'
569 in the CVS manual, for a complete description of them):
570
571
572
573 -k kflag
574
575 Process keywords according to kflag. See `Keyword substitution' in
576 the CVS manual. This option is sticky; future updates of this file
577 in this working directory will use the same kflag. The status com‐
578 mand can be viewed to see the sticky options. For more information
579 on the status command, see node `Invoking CVS' in the CVS manual.
580
581
582
583 -m message
584
585 Use message as the log message, instead of invoking an editor.
586
587
589 Adding a directory
590 $ mkdir doc
591 $ cvs add doc
592 Directory /path/to/repository/doc added to the repository
593
594
595
596
597
598 Adding a file
599 $ >TODO
600 $ cvs add TODO
601 cvs add: scheduling file `TODO' for addition
602 cvs add: use 'cvs commit' to add this file permanently
603
604
605
606
607
608 Undoing a remove command
609 $ rm -f makefile
610 $ cvs remove makefile
611 cvs remove: scheduling `makefile' for removal
612 cvs remove: use 'cvs commit' to remove this file permanently
613 $ cvs add makefile
614 U makefile
615 cvs add: makefile, version 1.2, resurrected
616
617
618
619
620
622 Administration
623 · Requires: repository, working directory.
624
625 · Changes: repository.
626
627 · Synonym: rcs
628
629 This is the cvs interface to assorted administrative facilities.
630 Some of them have questionable usefulness for cvs but exist for his‐
631 torical purposes. Some of the questionable options are likely to
632 disappear in the future. This command does work recursively, so
633 extreme care should be used.
634
635 On unix, if there is a group named cvsadmin, only members of that
636 group can run cvs admin (except for the cvs admin -k command, which
637 can be run by anybody). This group should exist on the server, or
638 any system running the non-client/server cvs. To disallow cvs admin
639 for all users, create a group with no users in it. On NT, the cvsad‐
640 min feature does not exist and all users can run cvs admin.
641
642
644 Some of these options have questionable usefulness for cvs but exist
645 for historical purposes. Some even make it impossible to use cvs until
646 you undo the effect!
647
648
649
650 -Aoldfile
651
652 Might not work together with cvs. Append the access list of oldfile
653 to the access list of the rcs file.
654
655
656
657 -alogins
658
659 Might not work together with cvs. Append the login names appearing
660 in the comma-separated list logins to the access list of the rcs
661 file.
662
663
664
665 -b[rev]
666
667 Set the default branch to rev. In cvs, you normally do not manipu‐
668 late default branches; sticky tags (see node `Sticky tags' in the CVS
669 manual) are a better way to decide which branch you want to work on.
670 There is one reason to run cvs admin -b: to revert to the vendor's
671 version when using vendor branches (see node `Reverting local
672 changes' in the CVS manual). There can be no space between -b and
673 its argument.
674
675
676
677 -cstring
678
679 Sets the comment leader to string. The comment leader is not used by
680 current versions of cvs or rcs 5.7. Therefore, you can almost surely
681 not worry about it. See `Keyword substitution' in the CVS manual.
682
683
684
685 -e[logins]
686
687 Might not work together with cvs. Erase the login names appearing in
688 the comma-separated list logins from the access list of the RCS file.
689 If logins is omitted, erase the entire access list. There can be no
690 space between -e and its argument.
691
692
693
694 -I
695
696 Run interactively, even if the standard input is not a terminal.
697 This option does not work with the client/server cvs and is likely to
698 disappear in a future release of cvs.
699
700
701
702 -i
703
704 Useless with cvs. This creates and initializes a new rcs file, with‐
705 out depositing a revision. With cvs, add files with the cvs add com‐
706 mand (see node `Adding files' in the CVS manual).
707
708
709
710 -ksubst
711
712 Set the default keyword substitution to subst. See `Keyword substi‐
713 tution' in the CVS manual. Giving an explicit -k option to cvs
714 update, cvs export, or cvs checkout overrides this default.
715
716
717
718 -l[rev]
719
720 Lock the revision with number rev. If a branch is given, lock the
721 latest revision on that branch. If rev is omitted, lock the latest
722 revision on the default branch. There can be no space between -l and
723 its argument.
724
725 This can be used in conjunction with the rcslock.pl script in the
726 contrib directory of the cvs source distribution to provide reserved
727 checkouts (where only one user can be editing a given file at a
728 time). See the comments in that file for details (and see the README
729 file in that directory for disclaimers about the unsupported nature
730 of contrib). According to comments in that file, locking must set to
731 strict (which is the default).
732
733
734
735 -L
736
737 Set locking to strict. Strict locking means that the owner of an RCS
738 file is not exempt from locking for checkin. For use with cvs,
739 strict locking must be set; see the discussion under the -l option
740 above.
741
742
743
744 -mrev:msg
745
746 Replace the log message of revision rev with msg.
747
748
749
750 -Nname[:[rev]]
751
752 Act like -n, except override any previous assignment of name. For
753 use with magic branches, see `Magic branch numbers' in the CVS man‐
754 ual.
755
756
757
758 -nname[:[rev]]
759
760 Associate the symbolic name name with the branch or revision rev. It
761 is normally better to use cvs tag or cvs rtag instead. Delete the
762 symbolic name if both : and rev are omitted; otherwise, print an
763 error message if name is already associated with another number. If
764 rev is symbolic, it is expanded before association. A rev consisting
765 of a branch number followed by a . stands for the current latest
766 revision in the branch. A : with an empty rev stands for the current
767 latest revision on the default branch, normally the trunk. For exam‐
768 ple, cvs admin -nname: associates name with the current latest revi‐
769 sion of all the RCS files; this contrasts with cvs admin -nname:$
770 which associates name with the revision numbers extracted from key‐
771 word strings in the corresponding working files.
772
773
774
775 -orange
776
777 Deletes (outdates) the revisions given by range.
778
779 Note that this command can be quite dangerous unless you know exactly
780 what you are doing (for example see the warnings below about how the
781 rev1:rev2 syntax is confusing).
782
783 If you are short on disc this option might help you. But think twice
784 before using it—there is no way short of restoring the latest backup
785 to undo this command! If you delete different revisions than you
786 planned, either due to carelessness or (heaven forbid) a cvs bug,
787 there is no opportunity to correct the error before the revisions are
788 deleted. It probably would be a good idea to experiment on a copy of
789 the repository first.
790
791 Specify range in one of the following ways:
792
793
794 rev1::rev2
795
796 Collapse all revisions between rev1 and rev2, so that cvs only
797 stores the differences associated with going from rev1 to rev2, not
798 intermediate steps. For example, after -o 1.3::1.5 one can
799 retrieve revision 1.3, revision 1.5, or the differences to get from
800 1.3 to 1.5, but not the revision 1.4, or the differences between
801 1.3 and 1.4. Other examples: -o 1.3::1.4 and -o 1.3::1.3 have no
802 effect, because there are no intermediate revisions to remove.
803
804
805 ::rev
806
807 Collapse revisions between the beginning of the branch containing
808 rev and rev itself. The branchpoint and rev are left intact. For
809 example, -o ::1.3.2.6 deletes revision 1.3.2.1, revision 1.3.2.5,
810 and everything in between, but leaves 1.3 and 1.3.2.6 intact.
811
812
813 rev::
814
815 Collapse revisions between rev and the end of the branch containing
816 rev. Revision rev is left intact but the head revision is deleted.
817
818
819 rev
820
821 Delete the revision rev. For example, -o 1.3 is equivalent to -o
822 1.2::1.4.
823
824
825 rev1:rev2
826
827 Delete the revisions from rev1 to rev2, inclusive, on the same
828 branch. One will not be able to retrieve rev1 or rev2 or any of
829 the revisions in between. For example, the command cvs admin
830 -oR_1_01:R_1_02 . is rarely useful. It means to delete revisions
831 up to, and including, the tag R_1_02. But beware! If there are
832 files that have not changed between R_1_02 and R_1_03 the file will
833 have the same numerical revision number assigned to the tags R_1_02
834 and R_1_03. So not only will it be impossible to retrieve R_1_02;
835 R_1_03 will also have to be restored from the tapes! In most cases
836 you want to specify rev1::rev2 instead.
837
838
839 :rev
840
841 Delete revisions from the beginning of the branch containing rev up
842 to and including rev.
843
844
845 rev:
846
847 Delete revisions from revision rev, including rev itself, to the
848 end of the branch containing rev.
849
850 None of the revisions to be deleted may have branches or locks.
851
852 If any of the revisions to be deleted have symbolic names, and one
853 specifies one of the :: syntaxes, then cvs will give an error and
854 not delete any revisions. If you really want to delete both the
855 symbolic names and the revisions, first delete the symbolic names
856 with cvs tag -d, then run cvs admin -o. If one specifies the
857 non-:: syntaxes, then cvs will delete the revisions but leave the
858 symbolic names pointing to nonexistent revisions. This behavior is
859 preserved for compatibility with previous versions of cvs, but
860 because it isn't very useful, in the future it may change to be
861 like the :: case.
862
863 Due to the way cvs handles branches rev cannot be specified symbol‐
864 ically if it is a branch. See `Magic branch numbers' in the CVS
865 manual for an explanation.
866
867 Make sure that no-one has checked out a copy of the revision you
868 outdate. Strange things will happen if he starts to edit it and
869 tries to check it back in. For this reason, this option is not a
870 good way to take back a bogus commit; commit a new revision undoing
871 the bogus change instead (see node `Merging two revisions' in the
872 CVS manual).
873
874
875
876 -q
877
878 Run quietly; do not print diagnostics.
879
880
881
882 -sstate[:rev]
883
884 Useful with cvs. Set the state attribute of the revision rev to
885 state. If rev is a branch number, assume the latest revision on that
886 branch. If rev is omitted, assume the latest revision on the default
887 branch. Any identifier is acceptable for state. A useful set of
888 states is Exp (for experimental), Stab (for stable), and Rel (for
889 released). By default, the state of a new revision is set to Exp
890 when it is created. The state is visible in the output from cvs log
891 (see node `log' in the CVS manual), and in the $Log$ and $State$ key‐
892 words (see node `Keyword substitution' in the CVS manual). Note that
893 cvs uses the dead state for its own purposes (see node `Attic' in the
894 CVS manual); to take a file to or from the dead state use commands
895 like cvs remove and cvs add (see node `Adding and removing' in the
896 CVS manual), not cvs admin -s.
897
898
899
900 -t[file]
901
902 Useful with cvs. Write descriptive text from the contents of the
903 named file into the RCS file, deleting the existing text. The file
904 pathname may not begin with -. The descriptive text can be seen in
905 the output from cvs log (see node `log' in the CVS manual). There
906 can be no space between -t and its argument.
907
908 If file is omitted, obtain the text from standard input, terminated
909 by end-of-file or by a line containing . by itself. Prompt for the
910 text if interaction is possible; see -I.
911
912
913
914 -t-string
915
916 Similar to -tfile. Write descriptive text from the string into the
917 rcs file, deleting the existing text. There can be no space between
918 -t and its argument.
919
920
921
922 -U
923
924 Set locking to non-strict. Non-strict locking means that the owner
925 of a file need not lock a revision for checkin. For use with cvs,
926 strict locking must be set; see the discussion under the -l option
927 above.
928
929
930
931 -u[rev]
932
933 See the option -l above, for a discussion of using this option with
934 cvs. Unlock the revision with number rev. If a branch is given,
935 unlock the latest revision on that branch. If rev is omitted, remove
936 the latest lock held by the caller. Normally, only the locker of a
937 revision may unlock it; somebody else unlocking a revision breaks the
938 lock. This causes the original locker to be sent a commit notifica‐
939 tion (see node `Getting Notified' in the CVS manual). There can be
940 no space between -u and its argument.
941
942
943
944 -Vn
945
946 In previous versions of cvs, this option meant to write an rcs file
947 which would be acceptable to rcs version n, but it is now obsolete
948 and specifying it will produce an error.
949
950
951
952 -xsuffixes
953
954 In previous versions of cvs, this was documented as a way of specify‐
955 ing the names of the rcs files. However, cvs has always required
956 that the rcs files used by cvs end in ,v, so this option has never
957 done anything useful.
958
959
960
962 What revision modified each line of a file?
963 · Synopsis: annotate [options] files...
964
965 · Requires: repository.
966
967 · Synonym: blame
968
969 · Changes: nothing.
970
971 For each file in files, print the head revision of the trunk,
972 together with information on the last modification for each line.
973
974
976 These standard options are supported by annotate (see node `Common
977 options' in the CVS manual for a complete description of them):
978
979
980
981 -l
982
983 Local directory only, no recursion.
984
985
986
987 -R
988
989 Process directories recursively.
990
991
992
993 -f
994
995 Use head revision if tag/date not found.
996
997
998
999 -F
1000
1001 Annotate binary files.
1002
1003
1004
1005 -r revision
1006
1007 Annotate file as of specified revision/tag.
1008
1009
1010
1011 -D date
1012
1013 Annotate file as of specified date.
1014
1015
1017 For example:
1018
1019
1020 $ cvs annotate ssfile
1021 Annotations for ssfile
1022 ***************
1023 1.1 (mary 27-Mar-96): ssfile line 1
1024 1.2 (joe 28-Mar-96): ssfile line 2
1025
1026
1027
1028
1029 The file ssfile currently contains two lines. The ssfile line 1 line
1030 was checked in by mary on March 27. Then, on March 28, joe added a
1031 line ssfile line 2, without modifying the ssfile line 1 line. This
1032 report doesn't tell you anything about lines which have been deleted or
1033 replaced; you need to use cvs diff for that (see node `diff' in the CVS
1034 manual).
1035
1036 The options to cvs annotate are listed in `Invoking CVS' in the CVS
1037 manual, and can be used to select the files and revisions to annotate.
1038 The options are described in more detail there and in `Common options'
1039 in the CVS manual.
1040
1041
1043 Check out sources for editing
1044 · Synopsis: checkout [options] modules...
1045
1046 · Requires: repository.
1047
1048 · Changes: working directory.
1049
1050 · Synonyms: co, get
1051
1052 Create or update a working directory containing copies of the source
1053 files specified by modules. You must execute checkout before using
1054 most of the other cvs commands, since most of them operate on your
1055 working directory.
1056
1057 The modules are either symbolic names for some collection of source
1058 directories and files, or paths to directories or files in the repos‐
1059 itory. The symbolic names are defined in the modules file. See
1060 `modules' in the CVS manual.
1061
1062 Depending on the modules you specify, checkout may recursively create
1063 directories and populate them with the appropriate source files. You
1064 can then edit these source files at any time (regardless of whether
1065 other software developers are editing their own copies of the
1066 sources); update them to include new changes applied by others to the
1067 source repository; or commit your work as a permanent change to the
1068 source repository.
1069
1070 Note that checkout is used to create directories. The top-level
1071 directory created is always added to the directory where checkout is
1072 invoked, and usually has the same name as the specified module. In
1073 the case of a module alias, the created sub-directory may have a dif‐
1074 ferent name, but you can be sure that it will be a sub-directory, and
1075 that checkout will show the relative path leading to each file as it
1076 is extracted into your private work area (unless you specify the -Q
1077 global option).
1078
1079 The files created by checkout are created read-write, unless the -r
1080 option to cvs (see node `Global options' in the CVS manual) is speci‐
1081 fied, the CVSREAD environment variable is specified (see node `Envi‐
1082 ronment variables' in the CVS manual), or a watch is in effect for
1083 that file (see node `Watches' in the CVS manual).
1084
1085 Note that running checkout on a directory that was already built by a
1086 prior checkout is also permitted. This is similar to specifying the
1087 -d option to the update command in the sense that new directories
1088 that have been created in the repository will appear in your work
1089 area. However, checkout takes a module name whereas update takes a
1090 directory name. Also to use checkout this way it must be run from
1091 the top level directory (where you originally ran checkout from), so
1092 before you run checkout to update an existing directory, don't forget
1093 to change your directory to the top level directory.
1094
1095 For the output produced by the checkout command, see node `update
1096 output' in the CVS manual.
1097
1098
1100 These standard options are supported by checkout (see node `Common
1101 options' in the CVS manual for a complete description of them):
1102
1103
1104
1105 -D date
1106
1107 Use the most recent revision no later than date. This option is
1108 sticky, and implies -P. See `Sticky tags' in the CVS manual for more
1109 information on sticky tags/dates.
1110
1111
1112
1113 -f
1114
1115 Only useful with the -D date or -r tag flags. If no matching revi‐
1116 sion is found, retrieve the most recent revision (instead of ignoring
1117 the file).
1118
1119
1120
1121 -k kflag
1122
1123 Process keywords according to kflag. See `Keyword substitution' in
1124 the CVS manual. This option is sticky; future updates of this file
1125 in this working directory will use the same kflag. The status com‐
1126 mand can be viewed to see the sticky options. See `Invoking CVS' in
1127 the CVS manual for more information on the status command.
1128
1129
1130
1131 -l
1132
1133 Local; run only in current working directory.
1134
1135
1136
1137 -n
1138
1139 Do not run any checkout program (as specified with the -o option in
1140 the modules file; see node `modules' in the CVS manual).
1141
1142
1143
1144 -P
1145
1146 Prune empty directories. See `Moving directories' in the CVS manual.
1147
1148
1149
1150 -p
1151
1152 Pipe files to the standard output.
1153
1154
1155
1156 -R
1157
1158 Checkout directories recursively. This option is on by default.
1159
1160
1161
1162 -r tag
1163
1164 Use revision tag. This option is sticky, and implies -P. See
1165 `Sticky tags' in the CVS manual, for more information on sticky
1166 tags/dates.
1167
1168 In addition to those, you can use these special command options with
1169 checkout:
1170
1171
1172
1173 -A
1174
1175 Reset any sticky tags, dates, or -k options. Does not reset sticky
1176 -k options on modified files. See `Sticky tags' in the CVS manual
1177 for more information on sticky tags/dates.
1178
1179
1180
1181 -c
1182
1183 Copy the module file, sorted, to the standard output, instead of cre‐
1184 ating or modifying any files or directories in your working direc‐
1185 tory.
1186
1187
1188
1189 -d dir
1190
1191 Create a directory called dir for the working files, instead of using
1192 the module name. In general, using this flag is equivalent to using
1193 mkdir dir; cd dir followed by the checkout command without the -d
1194 flag.
1195
1196 There is an important exception, however. It is very convenient when
1197 checking out a single item to have the output appear in a directory
1198 that doesn't contain empty intermediate directories. In this case
1199 only, cvs tries to ``shorten'' pathnames to avoid those empty direc‐
1200 tories.
1201
1202 For example, given a module foo that contains the file bar.c, the
1203 command cvs co -d dir foo will create directory dir and place bar.c
1204 inside. Similarly, given a module bar which has subdirectory baz
1205 wherein there is a file quux.c, the command cvs co -d dir bar/baz
1206 will create directory dir and place quux.c inside.
1207
1208 Using the -N flag will defeat this behavior. Given the same module
1209 definitions above, cvs co -N -d dir foo will create directories
1210 dir/foo and place bar.c inside, while cvs co -N -d dir bar/baz will
1211 create directories dir/bar/baz and place quux.c inside.
1212
1213
1214
1215 -j tag
1216
1217 With two -j options, merge changes from the revision specified with
1218 the first -j option to the revision specified with the second j
1219 option, into the working directory.
1220
1221 With one -j option, merge changes from the ancestor revision to the
1222 revision specified with the -j option, into the working directory.
1223 The ancestor revision is the common ancestor of the revision which
1224 the working directory is based on, and the revision specified in the
1225 -j option.
1226
1227 In addition, each -j option can contain an optional date specifica‐
1228 tion which, when used with branches, can limit the chosen revision to
1229 one within a specific date. An optional date is specified by adding
1230 a colon (:) to the tag: -jSymbolic_Tag:Date_Specifier.
1231
1232 See `Branching and merging' in the CVS manual.
1233
1234
1235
1236 -N
1237
1238 Only useful together with -d dir. With this option, cvs will not
1239 ``shorten'' module paths in your working directory when you check out
1240 a single module. See the -d flag for examples and a discussion.
1241
1242
1243
1244 -s
1245
1246 Like -c, but include the status of all modules, and sort it by the
1247 status string. See `modules' in the CVS manual, for info about the
1248 -s option that is used inside the modules file to set the module sta‐
1249 tus.
1250
1251
1253 Get a copy of the module tc:
1254
1255
1256 $ cvs checkout tc
1257
1258
1259
1260
1261 Get a copy of the module tc as it looked one day ago:
1262
1263
1264 $ cvs checkout -D yesterday tc
1265
1266
1267
1268
1269
1271 Check files into the repository
1272 · Synopsis: commit [-lRf] [-m 'log_message' | -F file] [-r revision]
1273 [files...]
1274
1275 · Requires: working directory, repository.
1276
1277 · Changes: repository.
1278
1279 · Synonym: ci
1280
1281 Use commit when you want to incorporate changes from your working
1282 source files into the source repository.
1283
1284 If you don't specify particular files to commit, all of the files in
1285 your working current directory are examined. commit is careful to
1286 change in the repository only those files that you have really
1287 changed. By default (or if you explicitly specify the -R option),
1288 files in subdirectories are also examined and committed if they have
1289 changed; you can use the -l option to limit commit to the current
1290 directory only.
1291
1292 commit verifies that the selected files are up to date with the cur‐
1293 rent revisions in the source repository; it will notify you, and exit
1294 without committing, if any of the specified files must be made cur‐
1295 rent first with update (see node `update' in the CVS manual). commit
1296 does not call the update command for you, but rather leaves that for
1297 you to do when the time is right.
1298
1299 When all is well, an editor is invoked to allow you to enter a log
1300 message that will be written to one or more logging programs (see
1301 node `modules' in the CVS manual, and see node `loginfo' in the CVS
1302 manual) and placed in the rcs file inside the repository. This log
1303 message can be retrieved with the log command; see node `log' in the
1304 CVS manual. You can specify the log message on the command line with
1305 the -m message option, and thus avoid the editor invocation, or use
1306 the -F file option to specify that the argument file contains the log
1307 message.
1308
1309
1311 These standard options are supported by commit (see node `Common
1312 options' in the CVS manual for a complete description of them):
1313
1314
1315
1316 -l
1317
1318 Local; run only in current working directory.
1319
1320
1321
1322 -R
1323
1324 Commit directories recursively. This is on by default.
1325
1326
1327
1328 -r revision
1329
1330 Commit to revision. revision must be either a branch, or a revision
1331 on the main trunk that is higher than any existing revision number
1332 (see node `Assigning revisions' in the CVS manual). You cannot com‐
1333 mit to a specific revision on a branch.
1334
1335 commit also supports these options:
1336
1337
1338
1339 -F file
1340
1341 Read the log message from file, instead of invoking an editor.
1342
1343
1344
1345 -f
1346
1347 Note that this is not the standard behavior of the -f option as
1348 defined in `Common options' in the CVS manual.
1349
1350 Force cvs to commit a new revision even if you haven't made any
1351 changes to the file. If the current revision of file is 1.7, then
1352 the following two commands are equivalent:
1353
1354
1355 $ cvs commit -f file
1356 $ cvs commit -r 1.8 file
1357
1358
1359
1360
1361 The -f option disables recursion (i.e., it implies -l). To force cvs
1362 to commit a new revision for all files in all subdirectories, you
1363 must use -f -R.
1364
1365
1366
1367 -m message
1368
1369 Use message as the log message, instead of invoking an editor.
1370
1371
1373 Committing to a branch
1374 You can commit to a branch revision (one that has an even number of
1375 dots) with the -r option. To create a branch revision, use the -b
1376 option of the rtag or tag commands (see node `Branching and merging' in
1377 the CVS manual). Then, either checkout or update can be used to base
1378 your sources on the newly created branch. From that point on, all com‐
1379 mit changes made within these working sources will be automatically
1380 added to a branch revision, thereby not disturbing main-line develop‐
1381 ment in any way. For example, if you had to create a patch to the 1.2
1382 version of the product, even though the 2.0 version is already under
1383 development, you might do:
1384
1385
1386 $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
1387 $ cvs checkout -r FCS1_2_Patch product_module
1388 $ cd product_module
1389 [[ hack away ]]
1390 $ cvs commit
1391
1392
1393
1394
1395 This works automatically since the -r option is sticky.
1396
1397
1398 Creating the branch after editing
1399 Say you have been working on some extremely experimental software,
1400 based on whatever revision you happened to checkout last week. If oth‐
1401 ers in your group would like to work on this software with you, but
1402 without disturbing main-line development, you could commit your change
1403 to a new branch. Others can then checkout your experimental stuff and
1404 utilize the full benefit of cvs conflict resolution. The scenario
1405 might look like:
1406
1407
1408 [[ hacked sources are present ]]
1409 $ cvs tag -b EXPR1
1410 $ cvs update -r EXPR1
1411 $ cvs commit
1412
1413
1414
1415
1416 The update command will make the -r EXPR1 option sticky on all files.
1417 Note that your changes to the files will never be removed by the update
1418 command. The commit will automatically commit to the correct branch,
1419 because the -r is sticky. You could also do like this:
1420
1421
1422 [[ hacked sources are present ]]
1423 $ cvs tag -b EXPR1
1424 $ cvs commit -r EXPR1
1425
1426
1427
1428
1429 but then, only those files that were changed by you will have the -r
1430 EXPR1 sticky flag. If you hack away, and commit without specifying the
1431 -r EXPR1 flag, some files may accidentally end up on the main trunk.
1432
1433 To work with you on the experimental change, others would simply do
1434
1435
1436 $ cvs checkout -r EXPR1 whatever_module
1437
1438
1439
1440
1441
1443 Show differences between revisions
1444 · Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D
1445 date1] [-r rev2 | -D date2]] [files...]
1446
1447 · Requires: working directory, repository.
1448
1449 · Changes: nothing.
1450
1451 The diff command is used to compare different revisions of files.
1452 The default action is to compare your working files with the revi‐
1453 sions they were based on, and report any differences that are found.
1454
1455 If any file names are given, only those files are compared. If any
1456 directories are given, all files under them will be compared.
1457
1458 The exit status for diff is different than for other cvs commands;
1459 for details see node `Exit status' in the CVS manual.
1460
1461
1463 These standard options are supported by diff (see node `Common options'
1464 in the CVS manual for a complete description of them):
1465
1466
1467
1468 -D date
1469
1470 Use the most recent revision no later than date. See -r for how this
1471 affects the comparison.
1472
1473
1474
1475 -k kflag
1476
1477 Process keywords according to kflag. See `Keyword substitution' in
1478 the CVS manual.
1479
1480
1481
1482 -l
1483
1484 Local; run only in current working directory.
1485
1486
1487
1488 -R
1489
1490 Examine directories recursively. This option is on by default.
1491
1492
1493
1494 -r tag
1495
1496 Compare with revision tag. Zero, one or two -r options can be
1497 present. With no -r option, the working file will be compared with
1498 the revision it was based on. With one -r, that revision will be
1499 compared to your current working file. With two -r options those two
1500 revisions will be compared (and your working file will not affect the
1501 outcome in any way).
1502
1503 One or both -r options can be replaced by a -D date option, described
1504 above.
1505
1506 The following options specify the format of the output. They have
1507 the same meaning as in GNU diff. Most options have two equivalent
1508 names, one of which is a single letter preceded by -, and the other
1509 of which is a long name preceded by --.
1510
1511
1512
1513 -lines
1514
1515 Show lines (an integer) lines of context. This option does not spec‐
1516 ify an output format by itself; it has no effect unless it is com‐
1517 bined with -c or -u. This option is obsolete. For proper operation,
1518 patch typically needs at least two lines of context.
1519
1520
1521
1522 -a
1523
1524 Treat all files as text and compare them line-by-line, even if they
1525 do not seem to be text.
1526
1527
1528
1529 -b
1530
1531 Ignore trailing white space and consider all other sequences of one
1532 or more white space characters to be equivalent.
1533
1534
1535
1536 -B
1537
1538 Ignore changes that just insert or delete blank lines.
1539
1540
1541
1542 --binary
1543
1544 Read and write data in binary mode.
1545
1546
1547
1548 --brief
1549
1550 Report only whether the files differ, not the details of the differ‐
1551 ences.
1552
1553
1554
1555 -c
1556
1557 Use the context output format.
1558
1559
1560
1561 -C lines
1562
1563
1564
1565
1566 --context[=lines]
1567
1568 Use the context output format, showing lines (an integer) lines of
1569 context, or three if lines is not given. For proper operation, patch
1570 typically needs at least two lines of context.
1571
1572
1573
1574 --changed-group-format=format
1575
1576 Use format to output a line group containing differing lines from
1577 both files in if-then-else format. See `Line group formats' in the
1578 CVS manual.
1579
1580
1581
1582 -d
1583
1584 Change the algorithm to perhaps find a smaller set of changes. This
1585 makes diff slower (sometimes much slower).
1586
1587
1588
1589 -e
1590
1591
1592
1593
1594 --ed
1595
1596 Make output that is a valid ed script.
1597
1598
1599
1600 --expand-tabs
1601
1602 Expand tabs to spaces in the output, to preserve the alignment of
1603 tabs in the input files.
1604
1605
1606
1607 -f
1608
1609 Make output that looks vaguely like an ed script but has changes in
1610 the order they appear in the file.
1611
1612
1613
1614 -F regexp
1615
1616 In context and unified format, for each hunk of differences, show
1617 some of the last preceding line that matches regexp.
1618
1619
1620
1621 --forward-ed
1622
1623 Make output that looks vaguely like an ed script but has changes in
1624 the order they appear in the file.
1625
1626
1627
1628 -H
1629
1630 Use heuristics to speed handling of large files that have numerous
1631 scattered small changes.
1632
1633
1634
1635 --horizon-lines=lines
1636
1637 Do not discard the last lines lines of the common prefix and the
1638 first lines lines of the common suffix.
1639
1640
1641
1642 -i
1643
1644 Ignore changes in case; consider upper- and lower-case letters equiv‐
1645 alent.
1646
1647
1648
1649 -I regexp
1650
1651 Ignore changes that just insert or delete lines that match regexp.
1652
1653
1654
1655 --ifdef=name
1656
1657 Make merged if-then-else output using name.
1658
1659
1660
1661 --ignore-all-space
1662
1663 Ignore white space when comparing lines.
1664
1665
1666
1667 --ignore-blank-lines
1668
1669 Ignore changes that just insert or delete blank lines.
1670
1671
1672
1673 --ignore-case
1674
1675 Ignore changes in case; consider upper- and lower-case to be the
1676 same.
1677
1678
1679
1680 --ignore-matching-lines=regexp
1681
1682 Ignore changes that just insert or delete lines that match regexp.
1683
1684
1685
1686 --ignore-space-change
1687
1688 Ignore trailing white space and consider all other sequences of one
1689 or more white space characters to be equivalent.
1690
1691
1692
1693 --initial-tab
1694
1695 Output a tab rather than a space before the text of a line in normal
1696 or context format. This causes the alignment of tabs in the line to
1697 look normal.
1698
1699
1700
1701 -L label
1702
1703 Use label instead of the file name in the context format and unified
1704 format headers.
1705
1706
1707
1708 --label=label
1709
1710 Use label instead of the file name in the context format and unified
1711 format headers.
1712
1713
1714
1715 --left-column
1716
1717 Print only the left column of two common lines in side by side for‐
1718 mat.
1719
1720
1721
1722 --line-format=format
1723
1724 Use format to output all input lines in if-then-else format. See
1725 `Line formats' in the CVS manual.
1726
1727
1728
1729 --minimal
1730
1731 Change the algorithm to perhaps find a smaller set of changes. This
1732 makes diff slower (sometimes much slower).
1733
1734
1735
1736 -n
1737
1738 Output RCS-format diffs; like -f except that each command specifies
1739 the number of lines affected.
1740
1741
1742
1743 -N
1744
1745
1746
1747
1748 --new-file
1749
1750 In directory comparison, if a file is found in only one directory,
1751 treat it as present but empty in the other directory.
1752
1753
1754
1755 --new-group-format=format
1756
1757 Use format to output a group of lines taken from just the second file
1758 in if-then-else format. See `Line group formats' in the CVS manual.
1759
1760
1761
1762 --new-line-format=format
1763
1764 Use format to output a line taken from just the second file in if-
1765 then-else format. See `Line formats' in the CVS manual.
1766
1767
1768
1769 --old-group-format=format
1770
1771 Use format to output a group of lines taken from just the first file
1772 in if-then-else format. See `Line group formats' in the CVS manual.
1773
1774
1775
1776 --old-line-format=format
1777
1778 Use format to output a line taken from just the first file in if-
1779 then-else format. See `Line formats' in the CVS manual.
1780
1781
1782
1783 -p
1784
1785 Show which C function each change is in.
1786
1787
1788
1789 --rcs
1790
1791 Output RCS-format diffs; like -f except that each command specifies
1792 the number of lines affected.
1793
1794
1795
1796 --report-identical-files
1797
1798
1799
1800
1801 -s
1802
1803 Report when two files are the same.
1804
1805
1806
1807 --show-c-function
1808
1809 Show which C function each change is in.
1810
1811
1812
1813 --show-function-line=regexp
1814
1815 In context and unified format, for each hunk of differences, show
1816 some of the last preceding line that matches regexp.
1817
1818
1819
1820 --side-by-side
1821
1822 Use the side by side output format.
1823
1824
1825
1826 --speed-large-files
1827
1828 Use heuristics to speed handling of large files that have numerous
1829 scattered small changes.
1830
1831
1832
1833 --suppress-common-lines
1834
1835 Do not print common lines in side by side format.
1836
1837
1838
1839 -t
1840
1841 Expand tabs to spaces in the output, to preserve the alignment of
1842 tabs in the input files.
1843
1844
1845
1846 -T
1847
1848 Output a tab rather than a space before the text of a line in normal
1849 or context format. This causes the alignment of tabs in the line to
1850 look normal.
1851
1852
1853
1854 --text
1855
1856 Treat all files as text and compare them line-by-line, even if they
1857 do not appear to be text.
1858
1859
1860
1861 -u
1862
1863 Use the unified output format.
1864
1865
1866
1867 --unchanged-group-format=format
1868
1869 Use format to output a group of common lines taken from both files in
1870 if-then-else format. see node `Line group formats' in the CVS man‐
1871 ual.
1872
1873
1874
1875 --unchanged-line-format=format
1876
1877 Use format to output a line common to both files in if-then-else for‐
1878 mat. see node `Line formats' in the CVS manual.
1879
1880
1881
1882 -U lines
1883
1884
1885
1886
1887 --unified[=lines]
1888
1889 Use the unified output format, showing lines (an integer) lines of
1890 context, or three if lines is not given. For proper operation, patch
1891 typically needs at least two lines of context.
1892
1893
1894
1895 -w
1896
1897 Ignore white space when comparing lines.
1898
1899
1900
1901 -W columns
1902
1903
1904
1905
1906 --width=columns
1907
1908 Use an output width of columns in side by side format.
1909
1910
1911
1912 -y
1913
1914 Use the side by side output format.
1915
1916
1918 Line group formats let you specify formats suitable for many applica‐
1919 tions that allow if-then-else input, including programming languages
1920 and text formatting languages. A line group format specifies the out‐
1921 put format for a contiguous group of similar lines.
1922
1923 For example, the following command compares the TeX file myfile with
1924 the original version from the repository, and outputs a merged file in
1925 which old regions are surrounded by \begin{em}-\end{em} lines, and new
1926 regions are surrounded by \begin{bf}-\end{bf} lines.
1927
1928
1929 cvs diff \
1930
1931 --old-group-format='\begin{em}
1932 %<\end{em}
1933 ' \
1934
1935 --new-group-format='\begin{bf}
1936 %>\end{bf}
1937 ' \
1938
1939 myfile
1940
1941
1942
1943
1944 The following command is equivalent to the above example, but it is a
1945 little more verbose, because it spells out the default line group for‐
1946 mats.
1947
1948
1949 cvs diff \
1950
1951 --old-group-format='\begin{em}
1952 %<\end{em}
1953 ' \
1954
1955 --new-group-format='\begin{bf}
1956 %>\end{bf}
1957 ' \
1958
1959 --unchanged-group-format='%=' \
1960
1961 --changed-group-format='\begin{em}
1962 %<\end{em}
1963 \begin{bf}
1964 %>\end{bf}
1965 ' \
1966
1967 myfile
1968
1969
1970
1971
1972 Here is a more advanced example, which outputs a diff listing with
1973 headers containing line numbers in a ``plain English'' style.
1974
1975
1976 cvs diff \
1977
1978 --unchanged-group-format='' \
1979
1980 --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
1981 %<' \
1982
1983 --new-group-format='-------- %dN line%(N=1?:s) added after %de:
1984 %>' \
1985
1986 --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
1987 %<-------- to:
1988 %>' \
1989
1990 myfile
1991
1992
1993
1994
1995 To specify a line group format, use one of the options listed below.
1996 You can specify up to four line group formats, one for each kind of
1997 line group. You should quote format, because it typically contains
1998 shell metacharacters.
1999
2000
2001
2002 --old-group-format=format
2003
2004 These line groups are hunks containing only lines from the first
2005 file. The default old group format is the same as the changed group
2006 format if it is specified; otherwise it is a format that outputs the
2007 line group as-is.
2008
2009
2010
2011 --new-group-format=format
2012
2013 These line groups are hunks containing only lines from the second
2014 file. The default new group format is same as the changed group for‐
2015 mat if it is specified; otherwise it is a format that outputs the
2016 line group as-is.
2017
2018
2019
2020 --changed-group-format=format
2021
2022 These line groups are hunks containing lines from both files. The
2023 default changed group format is the concatenation of the old and new
2024 group formats.
2025
2026
2027
2028 --unchanged-group-format=format
2029
2030 These line groups contain lines common to both files. The default
2031 unchanged group format is a format that outputs the line group as-is.
2032
2033 In a line group format, ordinary characters represent themselves;
2034 conversion specifications start with % and have one of the following
2035 forms.
2036
2037
2038
2039 %<
2040
2041 stands for the lines from the first file, including the trailing new‐
2042 line. Each line is formatted according to the old line format (see
2043 node `Line formats' in the CVS manual).
2044
2045
2046
2047 %>
2048
2049 stands for the lines from the second file, including the trailing
2050 newline. Each line is formatted according to the new line format.
2051
2052
2053
2054 %=
2055
2056 stands for the lines common to both files, including the trailing
2057 newline. Each line is formatted according to the unchanged line for‐
2058 mat.
2059
2060
2061
2062 %%
2063
2064 stands for %.
2065
2066
2067
2068 %c'C'
2069
2070 where C is a single character, stands for C. C may not be a back‐
2071 slash or an apostrophe. For example, %c':' stands for a colon, even
2072 inside the then-part of an if-then-else format, which a colon would
2073 normally terminate.
2074
2075
2076
2077 %c'\O'
2078
2079 where O is a string of 1, 2, or 3 octal digits, stands for the char‐
2080 acter with octal code O. For example, %c'\0' stands for a null char‐
2081 acter.
2082
2083
2084
2085 Fn
2086
2087 where F is a printf conversion specification and n is one of the fol‐
2088 lowing letters, stands for n's value formatted with F.
2089
2090
2091 e
2092
2093 The line number of the line just before the group in the old file.
2094
2095
2096 f
2097
2098 The line number of the first line in the group in the old file;
2099 equals e + 1.
2100
2101
2102 l
2103
2104 The line number of the last line in the group in the old file.
2105
2106
2107 m
2108
2109 The line number of the line just after the group in the old file;
2110 equals l + 1.
2111
2112
2113 n
2114
2115 The number of lines in the group in the old file; equals l - f + 1.
2116
2117
2118 E, F, L, M, N
2119
2120 Likewise, for lines in the new file.
2121
2122
2123 The printf conversion specification can be %d, %o, %x, or %X, spec‐
2124 ifying decimal, octal, lower case hexadecimal, or upper case hexa‐
2125 decimal output respectively. After the % the following options can
2126 appear in sequence: a - specifying left-justification; an integer
2127 specifying the minimum field width; and a period followed by an
2128 optional integer specifying the minimum number of digits. For
2129 example, %5dN prints the number of new lines in the group in a
2130 field of width 5 characters, using the printf format "%5d".
2131
2132
2133
2134 (A=B?T:E)
2135
2136 If A equals B then T else E. A and B are each either a decimal con‐
2137 stant or a single letter interpreted as above. This format spec is
2138 equivalent to T if A's value equals B's; otherwise it is equivalent
2139 to E.
2140
2141 For example, %(N=0?no:%dN) line%(N=1?:s) is equivalent to no lines if
2142 N (the number of lines in the group in the new file) is 0, to 1 line
2143 if N is 1, and to %dN lines otherwise.
2144
2145
2147 Line formats control how each line taken from an input file is output
2148 as part of a line group in if-then-else format.
2149
2150 For example, the following command outputs text with a one-column
2151 change indicator to the left of the text. The first column of output
2152 is - for deleted lines, | for added lines, and a space for unchanged
2153 lines. The formats contain newline characters where newlines are
2154 desired on output.
2155
2156
2157 cvs diff \
2158
2159 --old-line-format='-%l
2160 ' \
2161
2162 --new-line-format='|%l
2163 ' \
2164
2165 --unchanged-line-format=' %l
2166 ' \
2167
2168 myfile
2169
2170
2171
2172
2173 To specify a line format, use one of the following options. You should
2174 quote format, since it often contains shell metacharacters.
2175
2176
2177
2178 --old-line-format=format
2179
2180 formats lines just from the first file.
2181
2182
2183
2184 --new-line-format=format
2185
2186 formats lines just from the second file.
2187
2188
2189
2190 --unchanged-line-format=format
2191
2192 formats lines common to both files.
2193
2194
2195
2196 --line-format=format
2197
2198 formats all lines; in effect, it sets all three above options simul‐
2199 taneously.
2200
2201 In a line format, ordinary characters represent themselves; conver‐
2202 sion specifications start with % and have one of the following forms.
2203
2204
2205
2206 %l
2207
2208 stands for the contents of the line, not counting its trailing new‐
2209 line (if any). This format ignores whether the line is incomplete.
2210
2211
2212
2213 %L
2214
2215 stands for the contents of the line, including its trailing newline
2216 (if any). If a line is incomplete, this format preserves its incom‐
2217 pleteness.
2218
2219
2220
2221 %%
2222
2223 stands for %.
2224
2225
2226
2227 %c'C'
2228
2229 where C is a single character, stands for C. C may not be a back‐
2230 slash or an apostrophe. For example, %c':' stands for a colon.
2231
2232
2233
2234 %c'\O'
2235
2236 where O is a string of 1, 2, or 3 octal digits, stands for the char‐
2237 acter with octal code O. For example, %c'\0' stands for a null char‐
2238 acter.
2239
2240
2241
2242 Fn
2243
2244 where F is a printf conversion specification, stands for the line
2245 number formatted with F. For example, %.5dn prints the line number
2246 using the printf format "%.5d". see node `Line group formats' in the
2247 CVS manual, for more about printf conversion specifications.
2248
2249
2250 The default line format is %l followed by a newline character.
2251
2252 If the input contains tab characters and it is important that they
2253 line up on output, you should ensure that %l or %L in a line format
2254 is just after a tab stop (e.g. by preceding %l or %L with a tab char‐
2255 acter), or you should use the -t or --expand-tabs option.
2256
2257 Taken together, the line and line group formats let you specify many
2258 different formats. For example, the following command uses a format
2259 similar to diff's normal format. You can tailor this command to get
2260 fine control over diff's output.
2261
2262
2263 cvs diff \
2264
2265 --old-line-format='< %l
2266 ' \
2267
2268 --new-line-format='> %l
2269 ' \
2270
2271 --old-group-format='%df%(f=l?:,%dl)d%dE
2272 %<' \
2273
2274 --new-group-format='%dea%dF%(F=L?:,%dL)
2275 %>' \
2276
2277 --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
2278 %<—
2279 %>' \
2280
2281 --unchanged-group-format='' \
2282
2283 myfile
2284
2285
2286
2287
2288
2290 The following line produces a Unidiff (-u flag) between revision 1.14
2291 and 1.19 of backend.c. Due to the -kk flag no keywords are substi‐
2292 tuted, so differences that only depend on keyword substitution are
2293 ignored.
2294
2295
2296 $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
2297
2298
2299
2300
2301 Suppose the experimental branch EXPR1 was based on a set of files
2302 tagged RELEASE_1_0. To see what has happened on that branch, the fol‐
2303 lowing can be used:
2304
2305
2306 $ cvs diff -r RELEASE_1_0 -r EXPR1
2307
2308
2309
2310
2311 A command like this can be used to produce a context diff between two
2312 releases:
2313
2314
2315 $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
2316
2317
2318
2319
2320 If you are maintaining ChangeLogs, a command like the following just
2321 before you commit your changes may help you write the ChangeLog entry.
2322 All local modifications that have not yet been committed will be
2323 printed.
2324
2325
2326 $ cvs diff -u | less
2327
2328
2329
2330
2331
2333 Export sources from CVS, similar to checkout
2334 · Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir] mod‐
2335 ule...
2336
2337 · Requires: repository.
2338
2339 · Changes: current directory.
2340
2341 This command is a variant of checkout; use it when you want a copy of
2342 the source for module without the cvs administrative directories.
2343 For example, you might use export to prepare source for shipment off-
2344 site. This command requires that you specify a date or tag (with -D
2345 or -r), so that you can count on reproducing the source you ship to
2346 others (and thus it always prunes empty directories).
2347
2348 One often would like to use -kv with cvs export. This causes any
2349 keywords to be expanded such that an import done at some other site
2350 will not lose the keyword revision information. But be aware that
2351 doesn't handle an export containing binary files correctly. Also be
2352 aware that after having used -kv, one can no longer use the ident
2353 command (which is part of the rcs suite—see ident(1)) which looks for
2354 keyword strings. If you want to be able to use ident you must not
2355 use -kv.
2356
2357
2359 These standard options are supported by export (see node `Common
2360 options' in the CVS manual, for a complete description of them):
2361
2362
2363
2364 -D date
2365
2366 Use the most recent revision no later than date.
2367
2368
2369
2370 -f
2371
2372 If no matching revision is found, retrieve the most recent revision
2373 (instead of ignoring the file).
2374
2375
2376
2377 -l
2378
2379 Local; run only in current working directory.
2380
2381
2382
2383 -n
2384
2385 Do not run any checkout program.
2386
2387
2388
2389 -R
2390
2391 Export directories recursively. This is on by default.
2392
2393
2394
2395 -r tag
2396
2397 Use revision tag.
2398
2399 In addition, these options (that are common to checkout and export)
2400 are also supported:
2401
2402
2403
2404 -d dir
2405
2406 Create a directory called dir for the working files, instead of using
2407 the module name. See `checkout options' in the CVS manual for com‐
2408 plete details on how cvs handles this flag.
2409
2410
2411
2412 -k subst
2413
2414 Set keyword expansion mode (see node `Substitution modes' in the CVS
2415 manual).
2416
2417
2418
2419 -N
2420
2421 Only useful together with -d dir. See `checkout options' in the CVS
2422 manual for complete details on how cvs handles this flag.
2423
2424
2426 Show status of files and users
2427 · Synopsis: history [-report] [-flags] [-options args] [files...]
2428
2429 · Requires: the file $CVSROOT/CVSROOT/history
2430
2431 · Changes: nothing.
2432
2433 cvs can keep a history file that tracks each use of the checkout,
2434 commit, rtag, update, and release commands. You can use history to
2435 display this information in various formats.
2436
2437 Logging must be enabled by creating the file $CVSROOT/CVSROOT/his‐
2438 tory.
2439
2440 history uses -f, -l, -n, and -p in ways that conflict with the normal
2441 use inside cvs (see node `Common options' in the CVS manual).
2442
2443
2445 Several options (shown above as -report) control what kind of report
2446 is generated:
2447
2448
2449
2450 -c
2451
2452 Report on each time commit was used (i.e., each time the repository
2453 was modified).
2454
2455
2456
2457 -e
2458
2459 Everything (all record types). Equivalent to specifying -x with all
2460 record types. Of course, -e will also include record types which are
2461 added in a future version of cvs; if you are writing a script which
2462 can only handle certain record types, you'll want to specify -x.
2463
2464
2465
2466 -m module
2467
2468 Report on a particular module. (You can meaningfully use -m more
2469 than once on the command line.)
2470
2471
2472
2473 -o
2474
2475 Report on checked-out modules. This is the default report type.
2476
2477
2478
2479 -T
2480
2481 Report on all tags.
2482
2483
2484
2485 -x type
2486
2487 Extract a particular set of record types type from the cvs history.
2488 The types are indicated by single letters, which you may specify in
2489 combination.
2490
2491 Certain commands have a single record type:
2492
2493
2494 F
2495
2496 release
2497
2498 O
2499
2500 checkout
2501
2502 E
2503
2504 export
2505
2506 T
2507
2508 rtag
2509
2510 One of five record types may result from an update:
2511
2512
2513 C
2514
2515 A merge was necessary but collisions were detected (requiring man‐
2516 ual merging).
2517
2518 G
2519
2520 A merge was necessary and it succeeded.
2521
2522 U
2523
2524 A working file was copied from the repository.
2525
2526 P
2527
2528 A working file was patched to match the repository.
2529
2530 W
2531
2532 The working copy of a file was deleted during update (because it
2533 was gone from the repository).
2534
2535 One of three record types results from commit:
2536
2537
2538 A
2539
2540 A file was added for the first time.
2541
2542 M
2543
2544 A file was modified.
2545
2546 R
2547
2548 A file was removed.
2549
2550 The options shown as -flags constrain or expand the report without
2551 requiring option arguments:
2552
2553
2554
2555 -a
2556
2557 Show data for all users (the default is to show data only for the
2558 user executing history).
2559
2560
2561
2562 -l
2563
2564 Show last modification only.
2565
2566
2567
2568 -w
2569
2570 Show only the records for modifications done from the same working
2571 directory where history is executing.
2572
2573 The options shown as -options args constrain the report based on an
2574 argument:
2575
2576
2577
2578 -b str
2579
2580 Show data back to a record containing the string str in either
2581 the module name, the file name, or the repository path.
2582
2583
2584
2585 -D date
2586
2587 Show data since date. This is slightly different from the normal use
2588 of -D date, which selects the newest revision older than date.
2589
2590
2591
2592 -f file
2593
2594 Show data for a particular file (you can specify several -f options
2595 on the same command line). This is equivalent to specifying the file
2596 on the command line.
2597
2598
2599
2600 -n module
2601
2602 Show data for a particular module (you can specify several -n options
2603 on the same command line).
2604
2605
2606
2607 -p repository
2608
2609 Show data for a particular source repository (you can specify sev‐
2610 eral -p options on the same command line).
2611
2612
2613
2614 -r rev
2615
2616 Show records referring to revisions since the revision or tag named
2617 rev appears in individual rcs files. Each rcs file is searched for
2618 the revision or tag.
2619
2620
2621
2622 -t tag
2623
2624 Show records since tag tag was last added to the history file. This
2625 differs from the -r flag above in that it reads only the history
2626 file, not the rcs files, and is much faster.
2627
2628
2629
2630 -u name
2631
2632 Show records for user name.
2633
2634
2635
2636 -z timezone
2637
2638 Show times in the selected records using the specified time zone
2639 instead of UTC.
2640
2641
2643 Import sources into CVS, using vendor branches
2644 · Synopsis: import [-options] repository vendortag releasetag...
2645
2646 · Requires: Repository, source distribution directory.
2647
2648 · Changes: repository.
2649
2650 Use import to incorporate an entire source distribution from an out‐
2651 side source (e.g., a source vendor) into your source repository
2652 directory. You can use this command both for initial creation of a
2653 repository, and for wholesale updates to the module from the outside
2654 source. See `Tracking sources' in the CVS manual for a discussion on
2655 this subject.
2656
2657 The repository argument gives a directory name (or a path to a direc‐
2658 tory) under the cvs root directory for repositories; if the directory
2659 did not exist, import creates it.
2660
2661 When you use import for updates to source that has been modified in
2662 your source repository (since a prior import), it will notify you of
2663 any files that conflict in the two branches of development; use
2664 checkout -j to reconcile the differences, as import instructs you to
2665 do.
2666
2667 If cvs decides a file should be ignored (see node `cvsignore' in the
2668 CVS manual), it does not import it and prints I followed by the
2669 filename (see node `import output' in the CVS manual for a complete
2670 description of the output).
2671
2672 If the file $CVSROOT/CVSROOT/cvswrappers exists, any file whose names
2673 match the specifications in that file will be treated as packages and
2674 the appropriate filtering will be performed on the file/directory
2675 before being imported. See `Wrappers' in the CVS manual.
2676
2677 The outside source is saved in a first-level branch, by default
2678 1.1.1. Updates are leaves of this branch; for example, files from
2679 the first imported collection of source will be revision 1.1.1.1,
2680 then files from the first imported update will be revision 1.1.1.2,
2681 and so on.
2682
2683 At least three arguments are required. repository is needed to iden‐
2684 tify the collection of source. vendortag is a tag for the entire
2685 branch (e.g., for 1.1.1). You must also specify at least one
2686 releasetag to uniquely identify the files at the leaves created each
2687 time you execute import. The releasetag should be new, not previ‐
2688 ously existing in the repository file, and uniquely identify the
2689 imported release,
2690
2691 Note that import does not change the directory in which you invoke
2692 it. In particular, it does not set up that directory as a cvs work‐
2693 ing directory; if you want to work with the sources import them first
2694 and then check them out into a different directory (see node `Getting
2695 the source' in the CVS manual).
2696
2697
2699 This standard option is supported by import (see node `Common options'
2700 in the CVS manual for a complete description):
2701
2702
2703
2704 -m message
2705
2706 Use message as log information, instead of invoking an editor.
2707
2708 There are the following additional special options.
2709
2710
2711
2712 -b branch
2713
2714 See `Multiple vendor branches' in the CVS manual.
2715
2716
2717
2718 -d
2719
2720 Use each file's modification time as the time of import rather than
2721 the current time.
2722
2723
2724
2725 -k subst
2726
2727 Indicate the keyword expansion mode desired. This setting will apply
2728 to all files created during the import, but not to any files that
2729 previously existed in the repository. See `Substitution modes' in
2730 the CVS manual for a list of valid -k settings.
2731
2732
2733
2734 -I name
2735
2736 Specify file names that should be ignored during import. You can use
2737 this option repeatedly. To avoid ignoring any files at all (even
2738 those ignored by default), specify `-I !'.
2739
2740 name can be a file name pattern of the same type that you can specify
2741 in the .cvsignore file. See `cvsignore' in the CVS manual.
2742
2743
2744
2745 -W spec
2746
2747 Specify file names that should be filtered during import. You can
2748 use this option repeatedly.
2749
2750 spec can be a file name pattern of the same type that you can specify
2751 in the .cvswrappers file. see node `Wrappers' in the CVS manual.
2752
2753
2755 import keeps you informed of its progress by printing a line for each
2756 file, preceded by one character indicating the status of the file:
2757
2758
2759
2760 U file
2761
2762 The file already exists in the repository and has not been locally
2763 modified; a new revision has been created (if necessary).
2764
2765
2766
2767 N file
2768
2769 The file is a new file which has been added to the repository.
2770
2771
2772
2773 C file
2774
2775 The file already exists in the repository but has been locally modi‐
2776 fied; you will have to merge the changes.
2777
2778
2779
2780 I file
2781
2782 The file is being ignored (see node `cvsignore' in the CVS manual).
2783
2784
2785
2786 L file
2787
2788 The file is a symbolic link; cvs import ignores symbolic links. Peo‐
2789 ple periodically suggest that this behavior should be changed, but if
2790 there is a consensus on what it should be changed to, it doesn't seem
2791 to be apparent. (Various options in the modules file can be used to
2792 recreate symbolic links on checkout, update, etc.; see node `modules'
2793 in the CVS manual.)
2794
2795
2797 See `Tracking sources' in the CVS manual, and `From files' in the CVS
2798 manual.
2799
2800
2802 Print out log information for files
2803 · Synopsis: log [options] [files...]
2804
2805 · Requires: repository, working directory.
2806
2807 · Changes: nothing.
2808
2809 Display log information for files. log used to call the rcs utility
2810 rlog. Although this is no longer true in the current sources, this
2811 history determines the format of the output and the options, which
2812 are not quite in the style of the other cvs commands.
2813
2814 The output includes the location of the rcs file, the head revision
2815 (the latest revision on the trunk), all symbolic names (tags) and
2816 some other things. For each revision, the revision number, the
2817 author, the number of lines added/deleted and the log message are
2818 printed. All times are displayed in Coordinated Universal Time
2819 (UTC). (Other parts of cvs print times in the local timezone).
2820
2821 log uses -R in a way that conflicts with the normal use inside cvs
2822 (see node `Common options' in the CVS manual).
2823
2824
2826 By default, log prints all information that is available. All other
2827 options restrict the output. Note that the revision selection options
2828 (-b, -d, -r, -s, and -w) have no effect, other than possibly causing a
2829 search for files in Attic directories, when used in conjunction with
2830 the options that restrict the output to only log header fields (-h, -R,
2831 and -t) unless the -S option is also specified.
2832
2833
2834
2835 -b
2836
2837 Print information about the revisions on the default branch, normally
2838 the highest branch on the trunk.
2839
2840
2841
2842 -d dates
2843
2844 Print information about revisions with a checkin date/time in the
2845 range given by the semicolon-separated list of dates. The date for‐
2846 mats accepted are those accepted by the -D option to many other cvs
2847 commands (see node `Common options' in the CVS manual). Dates can be
2848 combined into ranges as follows:
2849
2850
2851 d1<d2
2852
2853
2854
2855 d2>d1
2856
2857 Select the revisions that were deposited between d1 and d2.
2858
2859
2860 <d
2861
2862
2863
2864 d>
2865
2866 Select all revisions dated d or earlier.
2867
2868
2869 d<
2870
2871
2872
2873 >d
2874
2875 Select all revisions dated d or later.
2876
2877
2878 d
2879
2880 Select the single, latest revision dated d or earlier.
2881
2882 The > or < characters may be followed by = to indicate an inclusive
2883 range rather than an exclusive one.
2884
2885 Note that the separator is a semicolon (;).
2886
2887
2888
2889 -h
2890
2891 Print only the name of the rcs file, name of the file in the working
2892 directory, head, default branch, access list, locks, symbolic names,
2893 and suffix.
2894
2895
2896
2897 -l
2898
2899 Local; run only in current working directory. (Default is to run
2900 recursively).
2901
2902
2903
2904 -N
2905
2906 Do not print the list of tags for this file. This option can be very
2907 useful when your site uses a lot of tags, so rather than "more"'ing
2908 over 3 pages of tag information, the log information is presented
2909 without tags at all.
2910
2911
2912
2913 -n
2914
2915 Print the list of tags for this file. This option can be very useful
2916 when your .cvsrc file has a log -N entry as a way to get a full list
2917 of all of the tags.
2918
2919
2920
2921 -R
2922
2923 Print only the name of the rcs file.
2924
2925
2926
2927 -rrevisions
2928
2929 Print information about revisions given in the comma-separated list
2930 revisions of revisions and ranges. The following table explains the
2931 available range formats:
2932
2933
2934 rev1:rev2
2935
2936 Revisions rev1 to rev2 (which must be on the same branch).
2937
2938
2939 rev1::rev2
2940
2941 The same, but excluding rev1.
2942
2943
2944 :rev
2945
2946
2947
2948 ::rev
2949
2950 Revisions from the beginning of the branch up to and including rev.
2951
2952
2953 rev:
2954
2955 Revisions starting with rev to the end of the branch containing
2956 rev.
2957
2958
2959 rev::
2960
2961 Revisions starting just after rev to the end of the branch contain‐
2962 ing rev.
2963
2964
2965 branch
2966
2967 An argument that is a branch means all revisions on that branch.
2968
2969
2970 branch1:branch2
2971
2972
2973
2974 branch1::branch2
2975
2976 A range of branches means all revisions on the branches in that
2977 range.
2978
2979
2980 branch.
2981
2982 The latest revision in branch.
2983
2984 A bare -r with no revisions means the latest revision on the
2985 default branch, normally the trunk. There can be no space between
2986 the -r option and its argument.
2987
2988
2989
2990 -S
2991
2992 Suppress the header if no revisions are selected.
2993
2994
2995
2996 -s states
2997
2998 Print information about revisions whose state attributes match one of
2999 the states given in the comma-separated list states. Individual
3000 states may be any text string, though cvs commonly only uses two
3001 states, Exp and dead. See `admin options' in the CVS manual for more
3002 information.
3003
3004
3005
3006 -t
3007
3008 Print the same as -h, plus the descriptive text.
3009
3010
3011
3012 -wlogins
3013
3014 Print information about revisions checked in by users with login
3015 names appearing in the comma-separated list logins. If logins is
3016 omitted, the user's login is assumed. There can be no space between
3017 the -w option and its argument.
3018
3019 log prints the intersection of the revisions selected with the
3020 options -d, -s, and -w, intersected with the union of the revisions
3021 selected by -b and -r.
3022
3023
3025 Contributed examples are gratefully accepted.
3026
3027
3029 'patch' format diffs between releases
3030 · rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
3031
3032 · Requires: repository.
3033
3034 · Changes: nothing.
3035
3036 · Synonym: patch
3037
3038 Builds a Larry Wall format patch(1) file between two releases, that
3039 can be fed directly into the patch program to bring an old release
3040 up-to-date with the new release. (This is one of the few cvs com‐
3041 mands that operates directly from the repository, and doesn't require
3042 a prior checkout.) The diff output is sent to the standard output
3043 device.
3044
3045 You can specify (using the standard -r and -D options) any combina‐
3046 tion of one or two revisions or dates. If only one revision or date
3047 is specified, the patch file reflects differences between that revi‐
3048 sion or date and the current head revisions in the rcs file.
3049
3050 Note that if the software release affected is contained in more than
3051 one directory, then it may be necessary to specify the -p option to
3052 the patch command when patching the old sources, so that patch is
3053 able to find the files that are located in other directories.
3054
3055
3057 These standard options are supported by rdiff (see node `Common
3058 options' in the CVS manual for a complete description of them):
3059
3060
3061
3062 -D date
3063
3064 Use the most recent revision no later than date.
3065
3066
3067
3068 -f
3069
3070 If no matching revision is found, retrieve the most recent revision
3071 (instead of ignoring the file).
3072
3073
3074
3075 -k kflag
3076
3077 Process keywords according to kflag. See `Keyword substitution' in
3078 the CVS manual.
3079
3080
3081
3082 -l
3083
3084 Local; don't descend subdirectories.
3085
3086
3087
3088 -R
3089
3090 Examine directories recursively. This option is on by default.
3091
3092
3093
3094 -r tag
3095
3096 Use revision tag.
3097
3098 In addition to the above, these options are available:
3099
3100
3101
3102 -c
3103
3104 Use the context diff format. This is the default format.
3105
3106
3107
3108 -s
3109
3110 Create a summary change report instead of a patch. The summary
3111 includes information about files that were changed or added between
3112 the releases. It is sent to the standard output device. This is
3113 useful for finding out, for example, which files have changed between
3114 two dates or revisions.
3115
3116
3117
3118 -t
3119
3120 A diff of the top two revisions is sent to the standard output
3121 device. This is most useful for seeing what the last change to a
3122 file was.
3123
3124
3125
3126 -u
3127
3128 Use the unidiff format for the context diffs. Remember that old ver‐
3129 sions of the patch program can't handle the unidiff format, so if you
3130 plan to post this patch to the net you should probably not use -u.
3131
3132
3133
3134 -V vn
3135
3136 Expand keywords according to the rules current in rcs version vn (the
3137 expansion format changed with rcs version 5). Note that this option
3138 is no longer accepted. cvs will always expand keywords the way that
3139 rcs version 5 does.
3140
3141
3143 Suppose you receive mail from foo@example.net asking for an update from
3144 release 1.2 to 1.4 of the tc compiler. You have no such patches on
3145 hand, but with cvs that can easily be fixed with a command such as
3146 this:
3147
3148
3149 $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
3150 > Mail -s 'The patches you asked for' foo@example.net
3151
3152
3153
3154
3155 Suppose you have made release 1.3, and forked a branch called R_1_3fix
3156 for bug fixes. R_1_3_1 corresponds to release 1.3.1, which was made
3157 some time ago. Now, you want to see how much development has been done
3158 on the branch. This command can be used:
3159
3160
3161 $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
3162 cvs rdiff: Diffing module-name
3163 File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
3164 File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
3165 File bar.h,v changed from revision 1.29.2.1 to 1.2
3166
3167
3168
3169
3170
3172 Indicate that a Module is no longer in use
3173 · release [-d] directories...
3174
3175 · Requires: Working directory.
3176
3177 · Changes: Working directory, history log.
3178
3179 This command is meant to safely cancel the effect of cvs checkout.
3180 Since cvs doesn't lock files, it isn't strictly necessary to use this
3181 command. You can always simply delete your working directory, if you
3182 like; but you risk losing changes you may have forgotten, and you
3183 leave no trace in the cvs history file (see node `history file' in
3184 the CVS manual) that you've abandoned your checkout.
3185
3186 Use cvs release to avoid these problems. This command checks that no
3187 uncommitted changes are present; that you are executing it from imme‐
3188 diately above a cvs working directory; and that the repository
3189 recorded for your files is the same as the repository defined in the
3190 module database.
3191
3192 If all these conditions are true, cvs release leaves a record of its
3193 execution (attesting to your intentionally abandoning your checkout)
3194 in the cvs history log.
3195
3196
3198 The release command supports one command option:
3199
3200
3201
3202 -d
3203
3204 Delete your working copy of the file if the release succeeds. If
3205 this flag is not given your files will remain in your working direc‐
3206 tory.
3207
3208 WARNING: The release command deletes all directories and files
3209 recursively. This has the very serious side-effect that any direc‐
3210 tory created inside checked-out sources, and not added to the reposi‐
3211 tory (using the add command; see node `Adding files' in the CVS man‐
3212 ual) will be silently deleted—even if it is non-empty!
3213
3214
3216 Before release releases your sources it will print a one-line message
3217 for any file that is not up-to-date.
3218
3219
3220
3221 U file
3222
3223
3224
3225
3226 P file
3227
3228 There exists a newer revision of this file in the repository, and you
3229 have not modified your local copy of the file (U and P mean the same
3230 thing).
3231
3232
3233
3234 A file
3235
3236 The file has been added to your private copy of the sources, but has
3237 not yet been committed to the repository. If you delete your copy of
3238 the sources this file will be lost.
3239
3240
3241
3242 R file
3243
3244 The file has been removed from your private copy of the sources, but
3245 has not yet been removed from the repository, since you have not yet
3246 committed the removal. See `commit' in the CVS manual.
3247
3248
3249
3250 M file
3251
3252 The file is modified in your working directory. There might also be
3253 a newer revision inside the repository.
3254
3255
3256
3257 ? file
3258
3259 file is in your working directory, but does not correspond to any‐
3260 thing in the source repository, and is not in the list of files for
3261 cvs to ignore (see the description of the -I option, and see node
3262 `cvsignore' in the CVS manual). If you remove your working sources,
3263 this file will be lost.
3264
3265
3267 Release the tc directory, and delete your local working copy of the
3268 files.
3269
3270
3271 $ cd .. # You must stand immediately above the
3272
3273 # sources when you issue cvs release.
3274 $ cvs release -d tc
3275 You have [0] altered files in this repository.
3276 Are you sure you want to release (and delete) directory `tc': y
3277 $
3278
3279
3280
3281
3282
3284 Remove files from active use
3285 · Synopsis: remove [-flR] [files...]
3286
3287 · Requires: repository, working directory.
3288
3289 · Changes: working directory.
3290
3291 The remove command is used to remove unwanted files from active use.
3292 The user normally deletes the files from the working directory prior
3293 to invocation of the remove command. Only the working directory is
3294 updated. Changes to the repository are not made until the commit
3295 command is run.
3296
3297 The remove command does not delete files from from the repository.
3298 cvs keeps all historical data in the repository so that it is possi‐
3299 ble to reconstruct previous states of the projects under revision
3300 control.
3301
3302 To undo cvs remove or to resurrect files that were previously
3303 removed, see node `add' in the CVS manual.
3304
3305
3307 These standard options are supported by remove (see node `Common
3308 options' in the CVS manual for a complete description of them):
3309
3310
3311
3312 -l
3313
3314 Local; run only in current working directory. See `Recursive behav‐
3315 ior' in the CVS manual.
3316
3317
3318
3319 -R
3320
3321 Process directories recursively. See `Recursive behavior' in the CVS
3322 manual.
3323
3324
3325 In addition, these options are also supported:
3326
3327
3328
3329 -f
3330
3331 Note that this is not the standard behavior of the -f option as
3332 defined in `Common options' in the CVS manual.
3333
3334 Delete files before removing them.
3335
3336 Entire directory hierarchies are easily removed using -f, but take
3337 note that it is not as easy to resurrect directory hierarchies as it
3338 is to remove them.
3339
3340
3341
3343 Removing a file
3344 $ cvs remove remove.me
3345 cvs remove: file `remove.me' still in working directory
3346 cvs remove: 1 file exists; remove it first
3347 $ rm -f remove.me
3348 $ cvs remove remove.me
3349 cvs remove: scheduling `remove.me' for removal
3350 cvs remove: use 'cvs commit' to remove this file permanently
3351
3352 $ ls remove.it
3353 remove.it
3354 $ cvs remove -f remove.it
3355 cvs remove: scheduling `remove.it' for removal
3356 cvs remove: use 'cvs commit' to remove this file permanently
3357
3358
3359
3360
3361
3362 Removing entire directories
3363 $ tree -d a
3364 a
3365 |-- CVS
3366 `-- b
3367
3368 `-- CVS
3369
3370 3 directories
3371 $ cvs remove -f a
3372 cvs remove: Removing a
3373 cvs remove: Removing a/b
3374 cvs remove: scheduling `a/b/c' for removal
3375 cvs remove: use 'cvs commit' to remove this file permanently
3376
3377
3378
3379
3380
3382 Bring work tree in sync with repository
3383 · update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D
3384 date] [-W spec] files...
3385
3386 · Requires: repository, working directory.
3387
3388 · Changes: working directory.
3389
3390 After you've run checkout to create your private copy of source from
3391 the common repository, other developers will continue changing the
3392 central source. From time to time, when it is convenient in your
3393 development process, you can use the update command from within your
3394 working directory to reconcile your work with any revisions applied
3395 to the source repository since your last checkout or update.
3396
3397
3399 These standard options are available with update (see node `Common
3400 options' in the CVS manual for a complete description of them):
3401
3402
3403
3404 -D date
3405
3406 Use the most recent revision no later than date. This option is
3407 sticky, and implies -P. See `Sticky tags' in the CVS manual for more
3408 information on sticky tags/dates.
3409
3410
3411
3412 -f
3413
3414 Only useful with the -D date or -r tag flags. If no matching revi‐
3415 sion is found, retrieve the most recent revision (instead of ignoring
3416 the file).
3417
3418
3419
3420 -k kflag
3421
3422 Process keywords according to kflag. See `Keyword substitution' in
3423 the CVS manual. This option is sticky; future updates of this file
3424 in this working directory will use the same kflag. The status com‐
3425 mand can be viewed to see the sticky options. See `Invoking CVS' in
3426 the CVS manual for more information on the status command.
3427
3428
3429
3430 -l
3431
3432 Local; run only in current working directory. See `Recursive behav‐
3433 ior' in the CVS manual.
3434
3435
3436
3437 -P
3438
3439 Prune empty directories. See `Moving directories' in the CVS manual.
3440
3441
3442
3443 -p
3444
3445 Pipe files to the standard output.
3446
3447
3448
3449 -R
3450
3451 Update directories recursively (default). See `Recursive behavior'
3452 in the CVS manual.
3453
3454
3455
3456 -r rev
3457
3458 Retrieve revision/tag rev. This option is sticky, and implies -P.
3459 See `Sticky tags' in the CVS manual, for more information on sticky
3460 tags/dates.
3461
3462 These special options are also available with update.
3463
3464
3465
3466 -A
3467
3468 Reset any sticky tags, dates, or -k options. Does not reset sticky
3469 -k options on modified files. See `Sticky tags' in the CVS manual
3470 for more information on sticky tags/dates.
3471
3472
3473
3474 -C
3475
3476 Overwrite locally modified files with clean copies from the reposi‐
3477 tory (the modified file is saved in .#file.revision, however).
3478
3479
3480
3481 -d
3482
3483 Create any directories that exist in the repository if they're miss‐
3484 ing from the working directory. Normally, update acts only on direc‐
3485 tories and files that were already enrolled in your working direc‐
3486 tory.
3487
3488 This is useful for updating directories that were created in the
3489 repository since the initial checkout; but it has an unfortunate side
3490 effect. If you deliberately avoided certain directories in the
3491 repository when you created your working directory (either through
3492 use of a module name or by listing explicitly the files and directo‐
3493 ries you wanted on the command line), then updating with -d will cre‐
3494 ate those directories, which may not be what you want.
3495
3496
3497
3498 -I name
3499
3500 Ignore files whose names match name (in your working directory) dur‐
3501 ing the update. You can specify -I more than once on the command
3502 line to specify several files to ignore. Use -I ! to avoid ignoring
3503 any files at all. See `cvsignore' in the CVS manual for other ways
3504 to make cvs ignore some files.
3505
3506
3507
3508 -Wspec
3509
3510 Specify file names that should be filtered during update. You can
3511 use this option repeatedly.
3512
3513 spec can be a file name pattern of the same type that you can specify
3514 in the .cvswrappers file. See `Wrappers' in the CVS manual.
3515
3516
3517
3518 -jrevision
3519
3520 With two -j options, merge changes from the revision specified with
3521 the first -j option to the revision specified with the second j
3522 option, into the working directory.
3523
3524 With one -j option, merge changes from the ancestor revision to the
3525 revision specified with the -j option, into the working directory.
3526 The ancestor revision is the common ancestor of the revision which
3527 the working directory is based on, and the revision specified in the
3528 -j option.
3529
3530 Note that using a single -j tagname option rather than -j branchname
3531 to merge changes from a branch will often not remove files which were
3532 removed on the branch. See `Merging adds and removals' in the CVS
3533 manual for more information.
3534
3535 In addition, each -j option can contain an optional date specifica‐
3536 tion which, when used with branches, can limit the chosen revision to
3537 one within a specific date. An optional date is specified by adding
3538 a colon (:) to the tag: -jSymbolic_Tag:Date_Specifier.
3539
3540 See `Branching and merging' in the CVS manual.
3541
3542
3543
3545 update and checkout keep you informed of their progress by printing a
3546 line for each file, preceded by one character indicating the status of
3547 the file:
3548
3549
3550
3551 U file
3552
3553 The file was brought up to date with respect to the repository. This
3554 is done for any file that exists in the repository but not in your
3555 working directory, and for files that you haven't changed but are not
3556 the most recent versions available in the repository.
3557
3558
3559
3560 P file
3561
3562 Like U, but the cvs server sends a patch instead of an entire file.
3563 This accomplishes the same thing as U using less bandwidth.
3564
3565
3566
3567 A file
3568
3569 The file has been added to your private copy of the sources, and will
3570 be added to the source repository when you run commit on the file.
3571 This is a reminder to you that the file needs to be committed.
3572
3573
3574
3575 R file
3576
3577 The file has been removed from your private copy of the sources, and
3578 will be removed from the source repository when you run commit on the
3579 file. This is a reminder to you that the file needs to be committed.
3580
3581
3582
3583 M file
3584
3585 The file is modified in your working directory.
3586
3587 M can indicate one of two states for a file you're working on: either
3588 there were no modifications to the same file in the repository, so
3589 that your file remains as you last saw it; or there were modifica‐
3590 tions in the repository as well as in your copy, but they were merged
3591 successfully, without conflict, in your working directory.
3592
3593 cvs will print some messages if it merges your work, and a backup
3594 copy of your working file (as it looked before you ran update) will
3595 be made. The exact name of that file is printed while update runs.
3596
3597
3598
3599 C file
3600
3601 A conflict was detected while trying to merge your changes to file
3602 with changes from the source repository. file (the copy in your
3603 working directory) is now the result of attempting to merge the two
3604 revisions; an unmodified copy of your file is also in your working
3605 directory, with the name .#file.revision where revision is the revi‐
3606 sion that your modified file started from. Resolve the conflict as
3607 described in `Conflicts example' in the CVS manual. (Note that some
3608 systems automatically purge files that begin with .# if they have not
3609 been accessed for a few days. If you intend to keep a copy of your
3610 original file, it is a very good idea to rename it.) Under vms, the
3611 file name starts with __ rather than .#.
3612
3613
3614
3615 ? file
3616
3617 file is in your working directory, but does not correspond to any‐
3618 thing in the source repository, and is not in the list of files for
3619 cvs to ignore (see the description of the -I option, and see node
3620 `cvsignore' in the CVS manual).
3621
3623 Dick Grune
3624 Original author of the cvs shell script version posted to
3625 comp.sources.unix in the volume6 release of December, 1986.
3626 Credited with much of the cvs conflict resolution algorithms.
3627
3628 Brian Berliner
3629 Coder and designer of the cvs program itself in April, 1989,
3630 based on the original work done by Dick.
3631
3632 Jeff Polk
3633 Helped Brian with the design of the cvs module and vendor branch
3634 support and author of the checkin(1) shell script (the ancestor
3635 of cvs import).
3636
3637 Larry Jones, Derek R. Price, and Mark D. Baushke
3638 Have helped maintain cvs for many years.
3639
3640 And many others too numerous to mention here.
3641
3643 The most comprehensive manual for CVS is Version Management with CVS by
3644 Per Cederqvist et al. Depending on your system, you may be able to get
3645 it with the info CVS command or it may be available as cvs.pdf (Porta‐
3646 ble Document Format), cvs.ps (PostScript), cvs.texinfo (Texinfo
3647 source), or cvs.html.
3648
3649 For CVS updates, more information on documentation, software related to
3650 CVS, development of CVS, and more, see:
3651
3652 http://cvs.nongnu.org
3653
3654 ci(1), co(1), cvs(5), cvsbug(8), diff(1), grep(1), patch(1), rcs(1), rcsd‐
3655 iff(1), rcsmerge(1), rlog(1).
3656
3657
3658
3659 CVS(1)