xref: /openbsd/gnu/usr.bin/cvs/doc/cvs.info-6 (revision 771fbea0)
1This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
2
3START-INFO-DIR-ENTRY
4* CVS: (cvs).          Concurrent Versions System
5END-INFO-DIR-ENTRY
6
7   Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
8Free Software Foundation, Inc.
9
10   Permission is granted to make and distribute verbatim copies of this
11manual provided the copyright notice and this permission notice are
12preserved on all copies.
13
14   Permission is granted to copy and distribute modified versions of
15this manual under the conditions for verbatim copying, provided also
16that the entire resulting derived work is distributed under the terms
17of a permission notice identical to this one.
18
19   Permission is granted to copy and distribute translations of this
20manual into another language, under the above conditions for modified
21versions, except that this permission notice may be stated in a
22translation approved by the Free Software Foundation.
23
24
25File: cvs.info,  Node: commit options,  Next: commit examples,  Up: commit
26
27commit options
28--------------
29
30   These standard options are supported by `commit' (*note Common
31options::, for a complete description of them):
32
33`-l'
34     Local; run only in current working directory.
35
36`-n'
37     Do not run any module program.
38
39`-R'
40     Commit directories recursively.  This is on by default.
41
42`-r REVISION'
43     Commit to REVISION.  REVISION must be either a branch, or a
44     revision on the main trunk that is higher than any existing
45     revision number (*note Assigning revisions::).  You cannot commit
46     to a specific revision on a branch.
47
48   `commit' also supports these options:
49
50`-F FILE'
51     Read the log message from FILE, instead of invoking an editor.
52
53`-f'
54     Note that this is not the standard behavior of the `-f' option as
55     defined in *Note Common options::.
56
57     Force CVS to commit a new revision even if you haven't made any
58     changes to the file.  If the current revision of FILE is 1.7, then
59     the following two commands are equivalent:
60
61          $ cvs commit -f FILE
62          $ cvs commit -r 1.8 FILE
63
64     The `-f' option disables recursion (i.e., it implies `-l').  To
65     force CVS to commit a new revision for all files in all
66     subdirectories, you must use `-f -R'.
67
68`-m MESSAGE'
69     Use MESSAGE as the log message, instead of invoking an editor.
70
71
72File: cvs.info,  Node: commit examples,  Prev: commit options,  Up: commit
73
74commit examples
75---------------
76
77Committing to a branch
78......................
79
80   You can commit to a branch revision (one that has an even number of
81dots) with the `-r' option.  To create a branch revision, use the `-b'
82option of the `rtag' or `tag' commands (*note Branching and merging::).
83Then, either `checkout' or `update' can be used to base your sources
84on the newly created branch.  From that point on, all `commit' changes
85made within these working sources will be automatically added to a
86branch revision, thereby not disturbing main-line development in any
87way.  For example, if you had to create a patch to the 1.2 version of
88the product, even though the 2.0 version is already under development,
89you might do:
90
91     $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
92     $ cvs checkout -r FCS1_2_Patch product_module
93     $ cd product_module
94     [[ hack away ]]
95     $ cvs commit
96
97This works automatically since the `-r' option is sticky.
98
99Creating the branch after editing
100.................................
101
102   Say you have been working on some extremely experimental software,
103based on whatever revision you happened to checkout last week.  If
104others in your group would like to work on this software with you, but
105without disturbing main-line development, you could commit your change
106to a new branch.  Others can then checkout your experimental stuff and
107utilize the full benefit of CVS conflict resolution.  The scenario might
108look like:
109
110     [[ hacked sources are present ]]
111     $ cvs tag -b EXPR1
112     $ cvs update -r EXPR1
113     $ cvs commit
114
115   The `update' command will make the `-r EXPR1' option sticky on all
116files.  Note that your changes to the files will never be removed by the
117`update' command.  The `commit' will automatically commit to the
118correct branch, because the `-r' is sticky.  You could also do like
119this:
120
121     [[ hacked sources are present ]]
122     $ cvs tag -b EXPR1
123     $ cvs commit -r EXPR1
124
125but then, only those files that were changed by you will have the `-r
126EXPR1' sticky flag.  If you hack away, and commit without specifying
127the `-r EXPR1' flag, some files may accidentally end up on the main
128trunk.
129
130   To work with you on the experimental change, others would simply do
131
132     $ cvs checkout -r EXPR1 whatever_module
133
134
135File: cvs.info,  Node: diff,  Next: export,  Prev: commit,  Up: CVS commands
136
137diff--Show differences between revisions
138========================================
139
140   * Synopsis: diff [-lR] [format_options] [[-r rev1 | -D date1] [-r
141     rev2 |  -D date2]] [files...]
142
143   * Requires: working directory, repository.
144
145   * Changes: nothing.
146
147   The `diff' command is used to compare different revisions of files.
148The default action is to compare your working files with the revisions
149they were based on, and report any differences that are found.
150
151   If any file names are given, only those files are compared.  If any
152directories are given, all files under them will be compared.
153
154   The exit status for diff is different than for other CVS commands;
155for details *Note Exit status::.
156
157* Menu:
158
159* diff options::                diff options
160* diff examples::               diff examples
161
162
163File: cvs.info,  Node: diff options,  Next: diff examples,  Up: diff
164
165diff options
166------------
167
168   These standard options are supported by `diff' (*note Common
169options::, for a complete description of them):
170
171`-D DATE'
172     Use the most recent revision no later than DATE.  See `-r' for how
173     this affects the comparison.
174
175`-k KFLAG'
176     Process keywords according to KFLAG.  See *Note Keyword
177     substitution::.
178
179`-l'
180     Local; run only in current working directory.
181
182`-R'
183     Examine directories recursively.  This option is on by default.
184
185`-r TAG'
186     Compare with revision TAG.  Zero, one or two `-r' options can be
187     present.  With no `-r' option, the working file will be compared
188     with the revision it was based on.  With one `-r', that revision
189     will be compared to your current working file.  With two `-r'
190     options those two revisions will be compared (and your working
191     file will not affect the outcome in any way).
192
193     One or both `-r' options can be replaced by a `-D DATE' option,
194     described above.
195
196   The following options specify the format of the output.  They have
197the same meaning as in GNU diff.
198
199     -0 -1 -2 -3 -4 -5 -6 -7 -8 -9
200     --binary
201     --brief
202     --changed-group-format=ARG
203     -c
204       -C NLINES
205       --context[=LINES]
206     -e --ed
207     -t --expand-tabs
208     -f --forward-ed
209     --horizon-lines=ARG
210     --ifdef=ARG
211     -w --ignore-all-space
212     -B --ignore-blank-lines
213     -i --ignore-case
214     -I REGEXP
215        --ignore-matching-lines=REGEXP
216     -h
217     -b --ignore-space-change
218     -T --initial-tab
219     -L LABEL
220       --label=LABEL
221     --left-column
222     -d --minimal
223     -N --new-file
224     --new-line-format=ARG
225     --old-line-format=ARG
226     --paginate
227     -n --rcs
228     -s --report-identical-files
229     -p
230     --show-c-function
231     -y --side-by-side
232     -F REGEXP
233     --show-function-line=REGEXP
234     -H --speed-large-files
235     --suppress-common-lines
236     -a --text
237     --unchanged-group-format=ARG
238     -u
239       -U NLINES
240       --unified[=LINES]
241     -V ARG
242     -W COLUMNS
243       --width=COLUMNS
244
245
246File: cvs.info,  Node: diff examples,  Prev: diff options,  Up: diff
247
248diff examples
249-------------
250
251   The following line produces a Unidiff (`-u' flag) between revision
2521.14 and 1.19 of `backend.c'.  Due to the `-kk' flag no keywords are
253substituted, so differences that only depend on keyword substitution
254are ignored.
255
256     $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
257
258   Suppose the experimental branch EXPR1 was based on a set of files
259tagged RELEASE_1_0.  To see what has happened on that branch, the
260following can be used:
261
262     $ cvs diff -r RELEASE_1_0 -r EXPR1
263
264   A command like this can be used to produce a context diff between
265two releases:
266
267     $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
268
269   If you are maintaining ChangeLogs, a command like the following just
270before you commit your changes may help you write the ChangeLog entry.
271All local modifications that have not yet been committed will be
272printed.
273
274     $ cvs diff -u | less
275
276
277File: cvs.info,  Node: export,  Next: history,  Prev: diff,  Up: CVS commands
278
279export--Export sources from CVS, similar to checkout
280====================================================
281
282   * Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir]
283     module...
284
285   * Requires: repository.
286
287   * Changes: current directory.
288
289   This command is a variant of `checkout'; use it when you want a copy
290of the source for module without the CVS administrative directories.
291For example, you might use `export' to prepare source for shipment
292off-site.  This command requires that you specify a date or tag (with
293`-D' or `-r'), so that you can count on reproducing the source you ship
294to others (and thus it always prunes empty directories).
295
296   One often would like to use `-kv' with `cvs export'.  This causes
297any keywords to be expanded such that an import done at some other site
298will not lose the keyword revision information.  But be aware that
299doesn't handle an export containing binary files correctly.  Also be
300aware that after having used `-kv', one can no longer use the `ident'
301command (which is part of the RCS suite--see ident(1)) which looks for
302keyword strings.  If you want to be able to use `ident' you must not
303use `-kv'.
304
305* Menu:
306
307* export options::              export options
308
309
310File: cvs.info,  Node: export options,  Up: export
311
312export options
313--------------
314
315   These standard options are supported by `export' (*note Common
316options::, for a complete description of them):
317
318`-D DATE'
319     Use the most recent revision no later than DATE.
320
321`-f'
322     If no matching revision is found, retrieve the most recent
323     revision (instead of ignoring the file).
324
325`-l'
326     Local; run only in current working directory.
327
328`-n'
329     Do not run any checkout program.
330
331`-R'
332     Export directories recursively.  This is on by default.
333
334`-r TAG'
335     Use revision TAG.
336
337   In addition, these options (that are common to `checkout' and
338`export') are also supported:
339
340`-d DIR'
341     Create a directory called DIR for the working files, instead of
342     using the module name.  *Note checkout options::, for complete
343     details on how CVS handles this flag.
344
345`-k SUBST'
346     Set keyword expansion mode (*note Substitution modes::).
347
348`-N'
349     Only useful together with `-d DIR'.  *Note checkout options::, for
350     complete details on how CVS handles this flag.
351
352
353File: cvs.info,  Node: history,  Next: import,  Prev: export,  Up: CVS commands
354
355history--Show status of files and users
356=======================================
357
358   * Synopsis:     history [-report] [-flags] [-options args] [files...]
359
360   * Requires: the file `$CVSROOT/CVSROOT/history'
361
362   * Changes: nothing.
363
364   CVS can keep a history file that tracks each use of the `checkout',
365`commit', `rtag', `update', and `release' commands.  You can use
366`history' to display this information in various formats.
367
368   Logging must be enabled by creating the file
369`$CVSROOT/CVSROOT/history'.
370
371   *Warning:* `history' uses `-f', `-l', `-n', and `-p' in ways that
372conflict with the normal use inside CVS (*note Common options::).
373
374* Menu:
375
376* history options::             history options
377
378
379File: cvs.info,  Node: history options,  Up: history
380
381history options
382---------------
383
384   Several options (shown above as `-report')  control  what kind of
385report is generated:
386
387`-c'
388     Report on each time commit was used (i.e., each time the
389     repository was modified).
390
391`-e'
392     Everything (all record types).  Equivalent to specifying `-x' with
393     all record types.  Of course, `-e' will also include record types
394     which are added in a future version of CVS; if you are writing a
395     script which can only handle certain record types, you'll want to
396     specify `-x'.
397
398`-m MODULE'
399     Report on a particular module.  (You can meaningfully use `-m'
400     more than once on the command line.)
401
402`-o'
403     Report on checked-out modules.  This is the default report type.
404
405`-T'
406     Report on all tags.
407
408`-x TYPE'
409     Extract a particular set of record types TYPE from the CVS
410     history.  The types are indicated by single letters, which you may
411     specify in combination.
412
413     Certain commands have a single record type:
414
415    `F'
416          release
417
418    `O'
419          checkout
420
421    `E'
422          export
423
424    `T'
425          rtag
426
427     One of four record types may result from an update:
428
429    `C'
430          A merge was necessary but collisions were detected (requiring
431          manual merging).
432
433    `G'
434          A merge was necessary and it succeeded.
435
436    `U'
437          A working file was copied from the repository.
438
439    `W'
440          The working copy of a file was deleted during update (because
441          it was gone from the repository).
442
443     One of three record types results from commit:
444
445    `A'
446          A file was added for the first time.
447
448    `M'
449          A file was modified.
450
451    `R'
452          A file was removed.
453
454   The options shown as `-flags' constrain or expand the report without
455requiring option arguments:
456
457`-a'
458     Show data for all users (the default is to show data only for the
459     user executing `history').
460
461`-l'
462     Show last modification only.
463
464`-w'
465     Show only the records for modifications done from the same working
466     directory where `history' is executing.
467
468   The options shown as `-options ARGS' constrain the report based on
469an argument:
470
471`-b STR'
472     Show data back to a record containing  the  string STR  in  either
473     the module name, the file name, or the repository path.
474
475`-D DATE'
476     Show data since DATE.  This is slightly different from the normal
477     use of `-D DATE', which selects the newest revision older than
478     DATE.
479
480`-f FILE'
481     Show data for a particular file (you can specify several `-f'
482     options on the same command line).  This is equivalent to
483     specifying the file on the command line.
484
485`-n MODULE'
486     Show data for a particular module (you can specify several `-n'
487     options on the same command line).
488
489`-p REPOSITORY'
490     Show data for a particular source repository  (you can specify
491     several `-p' options on the same command line).
492
493`-r REV'
494     Show records referring to revisions since the revision or tag
495     named REV appears in individual RCS files.  Each RCS file is
496     searched for the revision or tag.
497
498`-t TAG'
499     Show records since tag TAG was last added to the history file.
500     This differs from the `-r' flag above in that it reads only the
501     history file, not the RCS files, and is much faster.
502
503`-u NAME'
504     Show records for user NAME.
505
506`-z TIMEZONE'
507     Show times in the selected records using the specified time zone
508     instead of UTC.
509
510
511File: cvs.info,  Node: import,  Next: log,  Prev: history,  Up: CVS commands
512
513import--Import sources into CVS, using vendor branches
514======================================================
515
516   * Synopsis: import [-options] repository vendortag releasetag...
517
518   * Requires: Repository, source distribution directory.
519
520   * Changes: repository.
521
522   Use `import' to incorporate an entire source distribution from an
523outside source (e.g., a source vendor) into your source repository
524directory.  You can use this command both for initial creation of a
525repository, and for wholesale updates to the module from the outside
526source.  *Note Tracking sources::, for a discussion on this subject.
527
528   The REPOSITORY argument gives a directory name (or a path to a
529directory) under the CVS root directory for repositories; if the
530directory did not exist, import creates it.
531
532   When you use import for updates to source that has been modified in
533your source repository (since a prior import), it will notify you of
534any files that conflict in the two branches of development; use
535`checkout -j' to reconcile the differences, as import instructs you to
536do.
537
538   If CVS decides a file should be ignored (*note cvsignore::), it does
539not import it and prints `I ' followed by the filename (*note import
540output::, for a complete description of the output).
541
542   If the file `$CVSROOT/CVSROOT/cvswrappers' exists, any file whose
543names match the specifications in that file will be treated as packages
544and the appropriate filtering will be performed on the file/directory
545before being imported.  *Note Wrappers::.
546
547   The outside source is saved in a first-level branch, by default
5481.1.1.  Updates are leaves of this branch; for example, files from the
549first imported collection of source will be revision 1.1.1.1, then
550files from the first imported update will be revision 1.1.1.2, and so
551on.
552
553   At least three arguments are required.  REPOSITORY is needed to
554identify the collection of source.  VENDORTAG is a tag for the entire
555branch (e.g., for 1.1.1).  You must also specify at least one
556RELEASETAG to identify the files at the leaves created each time you
557execute `import'.
558
559   Note that `import' does _not_ change the directory in which you
560invoke it.  In particular, it does not set up that directory as a CVS
561working directory; if you want to work with the sources import them
562first and then check them out into a different directory (*note Getting
563the source::).
564
565* Menu:
566
567* import options::              import options
568* import output::               import output
569* import examples::             import examples
570
571
572File: cvs.info,  Node: import options,  Next: import output,  Up: import
573
574import options
575--------------
576
577   This standard option is supported by `import' (*note Common
578options::, for a complete description):
579
580`-m MESSAGE'
581     Use MESSAGE as log information, instead of invoking an editor.
582
583   There are the following additional special options.
584
585`-b BRANCH'
586     See *Note Multiple vendor branches::.
587
588`-k SUBST'
589     Indicate the keyword expansion mode desired.  This setting will
590     apply to all files created during the import, but not to any files
591     that previously existed in the repository.  See *Note Substitution
592     modes::, for a list of valid `-k' settings.
593
594`-I NAME'
595     Specify file names that should be ignored during import.  You can
596     use this option repeatedly.  To avoid ignoring any files at all
597     (even those ignored by default), specify `-I !'.
598
599     NAME can be a file name pattern of the same type that you can
600     specify in the `.cvsignore' file.  *Note cvsignore::.
601
602`-W SPEC'
603     Specify file names that should be filtered during import.  You can
604     use this option repeatedly.
605
606     SPEC can be a file name pattern of the same type that you can
607     specify in the `.cvswrappers' file. *Note Wrappers::.
608
609
610File: cvs.info,  Node: import output,  Next: import examples,  Prev: import options,  Up: import
611
612import output
613-------------
614
615   `import' keeps you informed of its progress by printing a line for
616each file, preceded by one character indicating the status of the file:
617
618`U FILE'
619     The file already exists in the repository and has not been locally
620     modified; a new revision has been created (if necessary).
621
622`N FILE'
623     The file is a new file which has been added to the repository.
624
625`C FILE'
626     The file already exists in the repository but has been locally
627     modified; you will have to merge the changes.
628
629`I FILE'
630     The file is being ignored (*note cvsignore::).
631
632`L FILE'
633     The file is a symbolic link; `cvs import' ignores symbolic links.
634     People periodically suggest that this behavior should be changed,
635     but if there is a consensus on what it should be changed to, it
636     doesn't seem to be apparent.  (Various options in the `modules'
637     file can be used to recreate symbolic links on checkout, update,
638     etc.; *note modules::.)
639
640
641File: cvs.info,  Node: import examples,  Prev: import output,  Up: import
642
643import examples
644---------------
645
646   See *Note Tracking sources::, and *Note From files::.
647
648
649File: cvs.info,  Node: log,  Next: rdiff,  Prev: import,  Up: CVS commands
650
651log--Print out log information for files
652========================================
653
654   * Synopsis: log [options] [files...]
655
656   * Requires: repository, working directory.
657
658   * Changes: nothing.
659
660   Display log information for files.  `log' used to call the RCS
661utility `rlog'.  Although this is no longer true in the current
662sources, this history determines the format of the output and the
663options, which are not quite in the style of the other CVS commands.
664
665   The output includes the location of the RCS file, the "head"
666revision (the latest revision on the trunk), all symbolic names (tags)
667and some other things.  For each revision, the revision number, the
668author, the number of lines added/deleted and the log message are
669printed.  All times are displayed in Coordinated Universal Time (UTC).
670(Other parts of CVS print times in the local timezone).
671
672   *Warning:* `log' uses `-R' in a way that conflicts with the normal
673use inside CVS (*note Common options::).
674
675* Menu:
676
677* log options::                 log options
678* log examples::                log examples
679
680
681File: cvs.info,  Node: log options,  Next: log examples,  Up: log
682
683log options
684-----------
685
686   By default, `log' prints all information that is available.  All
687other options restrict the output.
688
689`-b'
690     Print information about the revisions on the default branch,
691     normally the highest branch on the trunk.
692
693`-d DATES'
694     Print information about revisions with a checkin date/time in the
695     range given by the semicolon-separated list of dates.  The date
696     formats accepted are those accepted by the `-D' option to many
697     other CVS commands (*note Common options::).  Dates can be
698     combined into ranges as follows:
699
700    `D1<D2'
701    `D2>D1'
702          Select the revisions that were deposited between D1 and D2.
703
704    `<D'
705    `D>'
706          Select all revisions dated D or earlier.
707
708    `D<'
709    `>D'
710          Select all revisions dated D or later.
711
712    `D'
713          Select the single, latest revision dated D or earlier.
714
715     The `>' or `<' characters may be followed by `=' to indicate an
716     inclusive range rather than an exclusive one.
717
718     Note that the separator is a semicolon (;).
719
720`-h'
721     Print only the name of the RCS file, name of the file in the
722     working directory, head, default branch, access list, locks,
723     symbolic names, and suffix.
724
725`-l'
726     Local; run only in current working directory.  (Default is to run
727     recursively).
728
729`-N'
730     Do not print the list of tags for this file.  This option can be
731     very useful when your site uses a lot of tags, so rather than
732     "more"'ing over 3 pages of tag information, the log information is
733     presented without tags at all.
734
735`-R'
736     Print only the name of the RCS file.
737
738`-rREVISIONS'
739     Print information about revisions given in the comma-separated
740     list REVISIONS of revisions and ranges.  The following table
741     explains the available range formats:
742
743    `REV1:REV2'
744          Revisions REV1 to REV2 (which must be on the same branch).
745
746    `REV1::REV2'
747          Revisions between, but not including, REV1 and REV2.
748
749    `:REV'
750          Revisions from the beginning of the branch up to and
751          including REV.
752
753    `::REV'
754          Revisions from the beginning of the branch up to, but not
755          including, REV.
756
757    `REV:'
758          Revisions starting with REV to the end of the branch
759          containing REV.
760
761    `REV:'
762          Revisions starting just after REV to the end of the branch
763          containing REV.
764
765    `BRANCH'
766          An argument that is a branch means all revisions on that
767          branch.
768
769    `BRANCH1:BRANCH2'
770    `BRANCH1::BRANCH2'
771          A range of branches means all revisions on the branches in
772          that range.
773
774    `BRANCH.'
775          The latest revision in BRANCH.
776
777     A bare `-r' with no revisions means the latest revision on the
778     default branch, normally the trunk.  There can be no space between
779     the `-r' option and its argument.
780
781`-s STATES'
782     Print information about revisions whose state attributes match one
783     of the states given in the comma-separated list STATES.
784
785`-t'
786     Print the same as `-h', plus the descriptive text.
787
788`-wLOGINS'
789     Print information about revisions checked in by users with login
790     names appearing in the comma-separated list LOGINS.  If LOGINS is
791     omitted, the user's login is assumed.  There can be no space
792     between the `-w' option and its argument.
793
794   `log' prints the intersection of the revisions selected with the
795options `-d', `-s', and `-w', intersected with the union of the
796revisions selected by `-b' and `-r'.
797
798
799File: cvs.info,  Node: log examples,  Prev: log options,  Up: log
800
801log examples
802------------
803
804   Contributed examples are gratefully accepted.
805
806
807File: cvs.info,  Node: rdiff,  Next: release,  Prev: log,  Up: CVS commands
808
809rdiff--'patch' format diffs between releases
810============================================
811
812   * rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
813
814   * Requires: repository.
815
816   * Changes: nothing.
817
818   * Synonym: patch
819
820   Builds a Larry Wall format patch(1) file between two releases, that
821can be fed directly into the `patch' program to bring an old release
822up-to-date with the new release.  (This is one of the few CVS commands
823that operates directly from the repository, and doesn't require a prior
824checkout.) The diff output is sent to the standard output device.
825
826   You can specify (using the standard `-r' and `-D' options) any
827combination of one or two revisions or dates.  If only one revision or
828date is specified, the patch file reflects differences between that
829revision or date and the current head revisions in the RCS file.
830
831   Note that if the software release affected is contained in more than
832one directory, then it may be necessary to specify the `-p' option to
833the `patch' command when patching the old sources, so that `patch' is
834able to find the files that are located in other directories.
835
836* Menu:
837
838* rdiff options::               rdiff options
839* rdiff examples::              rdiff examples
840
841
842File: cvs.info,  Node: rdiff options,  Next: rdiff examples,  Up: rdiff
843
844rdiff options
845-------------
846
847   These standard options are supported by `rdiff' (*note Common
848options::, for a complete description of them):
849
850`-D DATE'
851     Use the most recent revision no later than DATE.
852
853`-f'
854     If no matching revision is found, retrieve the most recent
855     revision (instead of ignoring the file).
856
857`-l'
858     Local; don't descend subdirectories.
859
860`-R'
861     Examine directories recursively.  This option is on by default.
862
863`-r TAG'
864     Use revision TAG.
865
866   In addition to the above, these options are available:
867
868`-c'
869     Use the context diff format.  This is the default format.
870
871`-s'
872     Create a summary change report instead of a patch.  The summary
873     includes information about files that were changed or added
874     between the releases.  It is sent to the standard output device.
875     This is useful for finding out, for example, which files have
876     changed between two dates or revisions.
877
878`-t'
879     A diff of the top two revisions is sent to the standard output
880     device.  This is most useful for seeing what the last change to a
881     file was.
882
883`-u'
884     Use the unidiff format for the context diffs.  Remember that old
885     versions of the `patch' program can't handle the unidiff format,
886     so if you plan to post this patch to the net you should probably
887     not use `-u'.
888
889`-V VN'
890     Expand keywords according to the rules current in RCS version VN
891     (the expansion format changed with RCS version 5).  Note that this
892     option is no longer accepted.  CVS will always expand keywords the
893     way that RCS version 5 does.
894
895
896File: cvs.info,  Node: rdiff examples,  Prev: rdiff options,  Up: rdiff
897
898rdiff examples
899--------------
900
901   Suppose you receive mail from foo@example.net asking for an update
902from release 1.2 to 1.4 of the tc compiler.  You have no such patches
903on hand, but with CVS that can easily be fixed with a command such as
904this:
905
906     $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
907     $$ Mail -s 'The patches you asked for' foo@example.net
908
909   Suppose you have made release 1.3, and forked a branch called
910`R_1_3fix' for bugfixes.  `R_1_3_1' corresponds to release 1.3.1, which
911was made some time ago.  Now, you want to see how much development has
912been done on the branch.  This command can be used:
913
914     $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
915     cvs rdiff: Diffing module-name
916     File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
917     File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
918     File bar.h,v changed from revision 1.29.2.1 to 1.2
919
920
921File: cvs.info,  Node: release,  Next: update,  Prev: rdiff,  Up: CVS commands
922
923release--Indicate that a Module is no longer in use
924===================================================
925
926   * release [-d] directories...
927
928   * Requires: Working directory.
929
930   * Changes: Working directory, history log.
931
932   This command is meant to safely cancel the effect of `cvs checkout'.
933Since CVS doesn't lock files, it isn't strictly necessary to use this
934command.  You can always simply delete your working directory, if you
935like; but you risk losing changes you may have forgotten, and you leave
936no trace in the CVS history file (*note history file::) that you've
937abandoned your checkout.
938
939   Use `cvs release' to avoid these problems.  This command checks that
940no uncommitted changes are present; that you are executing it from
941immediately above a CVS working directory; and that the repository
942recorded for your files is the same as the repository defined in the
943module database.
944
945   If all these conditions are true, `cvs release' leaves a record of
946its execution (attesting to your intentionally abandoning your
947checkout) in the CVS history log.
948
949* Menu:
950
951* release options::             release options
952* release output::              release output
953* release examples::            release examples
954
955
956File: cvs.info,  Node: release options,  Next: release output,  Up: release
957
958release options
959---------------
960
961   The `release' command supports one command option:
962
963`-d'
964     Delete your working copy of the file if the release succeeds.  If
965     this flag is not given your files will remain in your working
966     directory.
967
968     *Warning:*  The `release' command deletes all directories and
969     files recursively.  This has the very serious side-effect that any
970     directory that you have created inside your checked-out sources,
971     and not added to the repository (using the `add' command; *note
972     Adding files::) will be silently deleted--even if it is non-empty!
973
974
975File: cvs.info,  Node: release output,  Next: release examples,  Prev: release options,  Up: release
976
977release output
978--------------
979
980   Before `release' releases your sources it will print a one-line
981message for any file that is not up-to-date.
982
983   *Warning:*  Any new directories that you have created, but not added
984to the CVS directory hierarchy with the `add' command (*note Adding
985files::) will be silently ignored (and deleted, if `-d' is specified),
986even if they contain files.
987
988`U FILE'
989`P FILE'
990     There exists a newer revision of this file in the repository, and
991     you have not modified your local copy of the file (`U' and `P'
992     mean the same thing).
993
994`A FILE'
995     The file has been added to your private copy of the sources, but
996     has not yet been committed to the repository.  If you delete your
997     copy of the sources this file will be lost.
998
999`R FILE'
1000     The file has been removed from your private copy of the sources,
1001     but has not yet been removed from the repository, since you have
1002     not yet committed the removal.  *Note commit::.
1003
1004`M FILE'
1005     The file is modified in your working directory.  There might also
1006     be a newer revision inside the repository.
1007
1008`? FILE'
1009     FILE is in your working directory, but does not correspond to
1010     anything in the source repository, and is not in the list of files
1011     for CVS to ignore (see the description of the `-I' option, and
1012     *note cvsignore::).  If you remove your working sources, this file
1013     will be lost.
1014
1015
1016File: cvs.info,  Node: release examples,  Prev: release output,  Up: release
1017
1018release examples
1019----------------
1020
1021   Release the `tc' directory, and delete your local working copy of
1022the files.
1023
1024     $ cd ..         # You must stand immediately above the
1025                     # sources when you issue `cvs release'.
1026     $ cvs release -d tc
1027     You have [0] altered files in this repository.
1028     Are you sure you want to release (and delete) directory `tc': y
1029     $
1030
1031
1032File: cvs.info,  Node: update,  Prev: release,  Up: CVS commands
1033
1034update--Bring work tree in sync with repository
1035===============================================
1036
1037   * update [-AdflPpR] [-d] [-r tag|-D date] files...
1038
1039   * Requires: repository, working directory.
1040
1041   * Changes: working directory.
1042
1043   After you've run checkout to create your private copy of source from
1044the common repository, other developers will continue changing the
1045central source.  From time to time, when it is convenient in your
1046development process, you can use the `update' command from within your
1047working directory to reconcile your work with any revisions applied to
1048the source repository since your last checkout or update.
1049
1050* Menu:
1051
1052* update options::              update options
1053* update output::               update output
1054
1055
1056File: cvs.info,  Node: update options,  Next: update output,  Up: update
1057
1058update options
1059--------------
1060
1061   These standard options are available with `update' (*note Common
1062options::, for a complete description of them):
1063
1064`-D date'
1065     Use the most recent revision no later than DATE.  This option is
1066     sticky, and implies `-P'.  See *Note Sticky tags::, for more
1067     information on sticky tags/dates.
1068
1069`-f'
1070     Only useful with the `-D DATE' or `-r TAG' flags.  If no matching
1071     revision is found, retrieve the most recent revision (instead of
1072     ignoring the file).
1073
1074`-k KFLAG'
1075     Process keywords according to KFLAG.  See *Note Keyword
1076     substitution::.  This option is sticky; future updates of this
1077     file in this working directory will use the same KFLAG.  The
1078     `status' command can be viewed to see the sticky options.  See
1079     *Note Invoking CVS::, for more information on the `status' command.
1080
1081`-l'
1082     Local; run only in current working directory.  *Note Recursive
1083     behavior::.
1084
1085`-P'
1086     Prune empty directories.  See *Note Moving directories::.
1087
1088`-p'
1089     Pipe files to the standard output.
1090
1091`-R'
1092     Update directories recursively (default).  *Note Recursive
1093     behavior::.
1094
1095`-r rev'
1096     Retrieve revision/tag REV.  This option is sticky, and implies
1097     `-P'.  See *Note Sticky tags::, for more information on sticky
1098     tags/dates.
1099
1100   These special options are also available with `update'.
1101
1102`-A'
1103     Reset any sticky tags, dates, or `-k' options.  See *Note Sticky
1104     tags::, for more information on sticky tags/dates.
1105
1106`-C'
1107     Overwrite locally modified files with clean copies from the
1108     repository (the modified file is saved in `.#FILE.REVISION',
1109     however).
1110
1111`-d'
1112     Create any directories that exist in the repository if they're
1113     missing from the working directory.  Normally, `update' acts only
1114     on directories and files that were already enrolled in your
1115     working directory.
1116
1117     This is useful for updating directories that were created in the
1118     repository since the initial checkout; but it has an unfortunate
1119     side effect.  If you deliberately avoided certain directories in
1120     the repository when you created your working directory (either
1121     through use of a module name or by listing explicitly the files
1122     and directories you wanted on the command line), then updating
1123     with `-d' will create those directories, which may not be what you
1124     want.
1125
1126`-I NAME'
1127     Ignore files whose names match NAME (in your working directory)
1128     during the update.  You can specify `-I' more than once on the
1129     command line to specify several files to ignore.  Use `-I !' to
1130     avoid ignoring any files at all.  *Note cvsignore::, for other
1131     ways to make CVS ignore some files.
1132
1133`-WSPEC'
1134     Specify file names that should be filtered during update.  You can
1135     use this option repeatedly.
1136
1137     SPEC can be a file name pattern of the same type that you can
1138     specify in the `.cvswrappers' file. *Note Wrappers::.
1139
1140`-jREVISION'
1141     With two `-j' options, merge changes from the revision specified
1142     with the first `-j' option to the revision specified with the
1143     second `j' option, into the working directory.
1144
1145     With one `-j' option, merge changes from the ancestor revision to
1146     the revision specified with the `-j' option, into the working
1147     directory.  The ancestor revision is the common ancestor of the
1148     revision which the working directory is based on, and the revision
1149     specified in the `-j' option.
1150
1151     Note that using a single `-j TAGNAME' option rather than `-j
1152     BRANCHNAME' to merge changes from a branch will often not remove
1153     files which were removed on the branch.  *Note Merging adds and
1154     removals::, for more.
1155
1156     In addition, each `-j' option can contain an optional date
1157     specification which, when used with branches, can limit the chosen
1158     revision to one within a specific date.  An optional date is
1159     specified by adding a colon (:) to the tag:
1160     `-jSYMBOLIC_TAG:DATE_SPECIFIER'.
1161
1162     *Note Branching and merging::.
1163
1164
1165File: cvs.info,  Node: update output,  Prev: update options,  Up: update
1166
1167update output
1168-------------
1169
1170   `update' and `checkout' keep you informed of their progress by
1171printing a line for each file, preceded by one character indicating the
1172status of the file:
1173
1174`U FILE'
1175     The file was brought up to date with respect to the repository.
1176     This is done for any file that exists in the repository but not in
1177     your source, and for files that you haven't changed but are not
1178     the most recent versions available in the repository.
1179
1180`P FILE'
1181     Like `U', but the CVS server sends a patch instead of an entire
1182     file.  These two things accomplish the same thing.
1183
1184`A FILE'
1185     The file has been added to your private copy of the sources, and
1186     will be added to the source repository when you run `commit' on
1187     the file.  This is a reminder to you that the file needs to be
1188     committed.
1189
1190`R FILE'
1191     The file has been removed from your private copy of the sources,
1192     and will be removed from the source repository when you run
1193     `commit' on the file.  This is a reminder to you that the file
1194     needs to be committed.
1195
1196`M FILE'
1197     The file is modified in  your  working  directory.
1198
1199     `M' can indicate one of two states for a file you're working on:
1200     either there were no modifications to the same file in the
1201     repository, so that your file remains as you last saw it; or there
1202     were modifications in the repository as well as in your copy, but
1203     they were merged successfully, without conflict, in your working
1204     directory.
1205
1206     CVS will print some messages if it merges your work, and a backup
1207     copy of your working file (as it looked before you ran `update')
1208     will be made.  The exact name of that file is printed while
1209     `update' runs.
1210
1211`C FILE'
1212     A conflict was detected while trying to merge your changes to FILE
1213     with changes from the source repository.  FILE (the copy in your
1214     working directory) is now the result of attempting to merge the
1215     two revisions; an unmodified copy of your file is also in your
1216     working directory, with the name `.#FILE.REVISION' where REVISION
1217     is the revision that your modified file started from.  Resolve the
1218     conflict as described in *Note Conflicts example::.  (Note that
1219     some systems automatically purge files that begin with `.#' if
1220     they have not been accessed for a few days.  If you intend to keep
1221     a copy of your original file, it is a very good idea to rename
1222     it.)  Under VMS, the file name starts with `__' rather than `.#'.
1223
1224`? FILE'
1225     FILE is in your working directory, but does not correspond to
1226     anything in the source repository, and is not in the list of files
1227     for CVS to ignore (see the description of the `-I' option, and
1228     *note cvsignore::).
1229
1230