xref: /openbsd-src/gnu/usr.bin/cvs/doc/cvs.info-6 (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
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    `:REV'
747          Revisions from the beginning of the branch up to and
748          including REV.
749
750    `REV:'
751          Revisions starting with REV to the end of the branch
752          containing REV.
753
754    `BRANCH'
755          An argument that is a branch means all revisions on that
756          branch.
757
758    `BRANCH1:BRANCH2'
759          A range of branches means all revisions on the branches in
760          that range.
761
762    `BRANCH.'
763          The latest revision in BRANCH.
764
765     A bare `-r' with no revisions means the latest revision on the
766     default branch, normally the trunk.  There can be no space between
767     the `-r' option and its argument.
768
769`-s STATES'
770     Print information about revisions whose state attributes match one
771     of the states given in the comma-separated list STATES.
772
773`-t'
774     Print the same as `-h', plus the descriptive text.
775
776`-wLOGINS'
777     Print information about revisions checked in by users with login
778     names appearing in the comma-separated list LOGINS.  If LOGINS is
779     omitted, the user's login is assumed.  There can be no space
780     between the `-w' option and its argument.
781
782   `log' prints the intersection of the revisions selected with the
783options `-d', `-s', and `-w', intersected with the union of the
784revisions selected by `-b' and `-r'.
785
786
787File: cvs.info,  Node: log examples,  Prev: log options,  Up: log
788
789log examples
790------------
791
792   Contributed examples are gratefully accepted.
793
794
795File: cvs.info,  Node: rdiff,  Next: release,  Prev: log,  Up: CVS commands
796
797rdiff--'patch' format diffs between releases
798============================================
799
800   * rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
801
802   * Requires: repository.
803
804   * Changes: nothing.
805
806   * Synonym: patch
807
808   Builds a Larry Wall format patch(1) file between two releases, that
809can be fed directly into the `patch' program to bring an old release
810up-to-date with the new release.  (This is one of the few CVS commands
811that operates directly from the repository, and doesn't require a prior
812checkout.) The diff output is sent to the standard output device.
813
814   You can specify (using the standard `-r' and `-D' options) any
815combination of one or two revisions or dates.  If only one revision or
816date is specified, the patch file reflects differences between that
817revision or date and the current head revisions in the RCS file.
818
819   Note that if the software release affected is contained in more than
820one directory, then it may be necessary to specify the `-p' option to
821the `patch' command when patching the old sources, so that `patch' is
822able to find the files that are located in other directories.
823
824* Menu:
825
826* rdiff options::               rdiff options
827* rdiff examples::              rdiff examples
828
829
830File: cvs.info,  Node: rdiff options,  Next: rdiff examples,  Up: rdiff
831
832rdiff options
833-------------
834
835   These standard options are supported by `rdiff' (*note Common
836options::, for a complete description of them):
837
838`-D DATE'
839     Use the most recent revision no later than DATE.
840
841`-f'
842     If no matching revision is found, retrieve the most recent
843     revision (instead of ignoring the file).
844
845`-l'
846     Local; don't descend subdirectories.
847
848`-R'
849     Examine directories recursively.  This option is on by default.
850
851`-r TAG'
852     Use revision TAG.
853
854   In addition to the above, these options are available:
855
856`-c'
857     Use the context diff format.  This is the default format.
858
859`-s'
860     Create a summary change report instead of a patch.  The summary
861     includes information about files that were changed or added
862     between the releases.  It is sent to the standard output device.
863     This is useful for finding out, for example, which files have
864     changed between two dates or revisions.
865
866`-t'
867     A diff of the top two revisions is sent to the standard output
868     device.  This is most useful for seeing what the last change to a
869     file was.
870
871`-u'
872     Use the unidiff format for the context diffs.  Remember that old
873     versions of the `patch' program can't handle the unidiff format,
874     so if you plan to post this patch to the net you should probably
875     not use `-u'.
876
877`-V VN'
878     Expand keywords according to the rules current in RCS version VN
879     (the expansion format changed with RCS version 5).  Note that this
880     option is no longer accepted.  CVS will always expand keywords the
881     way that RCS version 5 does.
882
883
884File: cvs.info,  Node: rdiff examples,  Prev: rdiff options,  Up: rdiff
885
886rdiff examples
887--------------
888
889   Suppose you receive mail from foo@example.net asking for an update
890from release 1.2 to 1.4 of the tc compiler.  You have no such patches
891on hand, but with CVS that can easily be fixed with a command such as
892this:
893
894     $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
895     $$ Mail -s 'The patches you asked for' foo@example.net
896
897   Suppose you have made release 1.3, and forked a branch called
898`R_1_3fix' for bugfixes.  `R_1_3_1' corresponds to release 1.3.1, which
899was made some time ago.  Now, you want to see how much development has
900been done on the branch.  This command can be used:
901
902     $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
903     cvs rdiff: Diffing module-name
904     File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
905     File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
906     File bar.h,v changed from revision 1.29.2.1 to 1.2
907
908
909File: cvs.info,  Node: release,  Next: update,  Prev: rdiff,  Up: CVS commands
910
911release--Indicate that a Module is no longer in use
912===================================================
913
914   * release [-d] directories...
915
916   * Requires: Working directory.
917
918   * Changes: Working directory, history log.
919
920   This command is meant to safely cancel the effect of `cvs checkout'.
921Since CVS doesn't lock files, it isn't strictly necessary to use this
922command.  You can always simply delete your working directory, if you
923like; but you risk losing changes you may have forgotten, and you leave
924no trace in the CVS history file (*note history file::) that you've
925abandoned your checkout.
926
927   Use `cvs release' to avoid these problems.  This command checks that
928no uncommitted changes are present; that you are executing it from
929immediately above a CVS working directory; and that the repository
930recorded for your files is the same as the repository defined in the
931module database.
932
933   If all these conditions are true, `cvs release' leaves a record of
934its execution (attesting to your intentionally abandoning your
935checkout) in the CVS history log.
936
937* Menu:
938
939* release options::             release options
940* release output::              release output
941* release examples::            release examples
942
943
944File: cvs.info,  Node: release options,  Next: release output,  Up: release
945
946release options
947---------------
948
949   The `release' command supports one command option:
950
951`-d'
952     Delete your working copy of the file if the release succeeds.  If
953     this flag is not given your files will remain in your working
954     directory.
955
956     *Warning:*  The `release' command deletes all directories and
957     files recursively.  This has the very serious side-effect that any
958     directory that you have created inside your checked-out sources,
959     and not added to the repository (using the `add' command; *note
960     Adding files::) will be silently deleted--even if it is non-empty!
961
962
963File: cvs.info,  Node: release output,  Next: release examples,  Prev: release options,  Up: release
964
965release output
966--------------
967
968   Before `release' releases your sources it will print a one-line
969message for any file that is not up-to-date.
970
971   *Warning:*  Any new directories that you have created, but not added
972to the CVS directory hierarchy with the `add' command (*note Adding
973files::) will be silently ignored (and deleted, if `-d' is specified),
974even if they contain files.
975
976`U FILE'
977`P FILE'
978     There exists a newer revision of this file in the repository, and
979     you have not modified your local copy of the file (`U' and `P'
980     mean the same thing).
981
982`A FILE'
983     The file has been added to your private copy of the sources, but
984     has not yet been committed to the repository.  If you delete your
985     copy of the sources this file will be lost.
986
987`R FILE'
988     The file has been removed from your private copy of the sources,
989     but has not yet been removed from the repository, since you have
990     not yet committed the removal.  *Note commit::.
991
992`M FILE'
993     The file is modified in your working directory.  There might also
994     be a newer revision inside the repository.
995
996`? FILE'
997     FILE is in your working directory, but does not correspond to
998     anything in the source repository, and is not in the list of files
999     for CVS to ignore (see the description of the `-I' option, and
1000     *note cvsignore::).  If you remove your working sources, this file
1001     will be lost.
1002
1003
1004File: cvs.info,  Node: release examples,  Prev: release output,  Up: release
1005
1006release examples
1007----------------
1008
1009   Release the `tc' directory, and delete your local working copy of
1010the files.
1011
1012     $ cd ..         # You must stand immediately above the
1013                     # sources when you issue `cvs release'.
1014     $ cvs release -d tc
1015     You have [0] altered files in this repository.
1016     Are you sure you want to release (and delete) directory `tc': y
1017     $
1018
1019
1020File: cvs.info,  Node: update,  Prev: release,  Up: CVS commands
1021
1022update--Bring work tree in sync with repository
1023===============================================
1024
1025   * update [-AdflPpR] [-d] [-r tag|-D date] files...
1026
1027   * Requires: repository, working directory.
1028
1029   * Changes: working directory.
1030
1031   After you've run checkout to create your private copy of source from
1032the common repository, other developers will continue changing the
1033central source.  From time to time, when it is convenient in your
1034development process, you can use the `update' command from within your
1035working directory to reconcile your work with any revisions applied to
1036the source repository since your last checkout or update.
1037
1038* Menu:
1039
1040* update options::              update options
1041* update output::               update output
1042
1043
1044File: cvs.info,  Node: update options,  Next: update output,  Up: update
1045
1046update options
1047--------------
1048
1049   These standard options are available with `update' (*note Common
1050options::, for a complete description of them):
1051
1052`-D date'
1053     Use the most recent revision no later than DATE.  This option is
1054     sticky, and implies `-P'.  See *Note Sticky tags::, for more
1055     information on sticky tags/dates.
1056
1057`-f'
1058     Only useful with the `-D DATE' or `-r TAG' flags.  If no matching
1059     revision is found, retrieve the most recent revision (instead of
1060     ignoring the file).
1061
1062`-k KFLAG'
1063     Process keywords according to KFLAG.  See *Note Keyword
1064     substitution::.  This option is sticky; future updates of this
1065     file in this working directory will use the same KFLAG.  The
1066     `status' command can be viewed to see the sticky options.  See
1067     *Note Invoking CVS::, for more information on the `status' command.
1068
1069`-l'
1070     Local; run only in current working directory.  *Note Recursive
1071     behavior::.
1072
1073`-P'
1074     Prune empty directories.  See *Note Moving directories::.
1075
1076`-p'
1077     Pipe files to the standard output.
1078
1079`-R'
1080     Update directories recursively (default).  *Note Recursive
1081     behavior::.
1082
1083`-r rev'
1084     Retrieve revision/tag REV.  This option is sticky, and implies
1085     `-P'.  See *Note Sticky tags::, for more information on sticky
1086     tags/dates.
1087
1088   These special options are also available with `update'.
1089
1090`-A'
1091     Reset any sticky tags, dates, or `-k' options.  See *Note Sticky
1092     tags::, for more information on sticky tags/dates.
1093
1094`-C'
1095     Overwrite locally modified files with clean copies from the
1096     repository (the modified file is saved in `.#FILE.REVISION',
1097     however).
1098
1099`-d'
1100     Create any directories that exist in the repository if they're
1101     missing from the working directory.  Normally, `update' acts only
1102     on directories and files that were already enrolled in your
1103     working directory.
1104
1105     This is useful for updating directories that were created in the
1106     repository since the initial checkout; but it has an unfortunate
1107     side effect.  If you deliberately avoided certain directories in
1108     the repository when you created your working directory (either
1109     through use of a module name or by listing explicitly the files
1110     and directories you wanted on the command line), then updating
1111     with `-d' will create those directories, which may not be what you
1112     want.
1113
1114`-I NAME'
1115     Ignore files whose names match NAME (in your working directory)
1116     during the update.  You can specify `-I' more than once on the
1117     command line to specify several files to ignore.  Use `-I !' to
1118     avoid ignoring any files at all.  *Note cvsignore::, for other
1119     ways to make CVS ignore some files.
1120
1121`-WSPEC'
1122     Specify file names that should be filtered during update.  You can
1123     use this option repeatedly.
1124
1125     SPEC can be a file name pattern of the same type that you can
1126     specify in the `.cvswrappers' file. *Note Wrappers::.
1127
1128`-jREVISION'
1129     With two `-j' options, merge changes from the revision specified
1130     with the first `-j' option to the revision specified with the
1131     second `j' option, into the working directory.
1132
1133     With one `-j' option, merge changes from the ancestor revision to
1134     the revision specified with the `-j' option, into the working
1135     directory.  The ancestor revision is the common ancestor of the
1136     revision which the working directory is based on, and the revision
1137     specified in the `-j' option.
1138
1139     In addition, each `-j' option can contain an optional date
1140     specification which, when used with branches, can limit the chosen
1141     revision to one within a specific date.  An optional date is
1142     specified by adding a colon (:) to the tag:
1143     `-jSYMBOLIC_TAG:DATE_SPECIFIER'.
1144
1145     *Note Branching and merging::.
1146
1147
1148File: cvs.info,  Node: update output,  Prev: update options,  Up: update
1149
1150update output
1151-------------
1152
1153   `update' and `checkout' keep you informed of their progress by
1154printing a line for each file, preceded by one character indicating the
1155status of the file:
1156
1157`U FILE'
1158     The file was brought up to date with respect to the repository.
1159     This is done for any file that exists in the repository but not in
1160     your source, and for files that you haven't changed but are not
1161     the most recent versions available in the repository.
1162
1163`P FILE'
1164     Like `U', but the CVS server sends a patch instead of an entire
1165     file.  These two things accomplish the same thing.
1166
1167`A FILE'
1168     The file has been added to your private copy of the sources, and
1169     will be added to the source repository when you run `commit' on
1170     the file.  This is a reminder to you that the file needs to be
1171     committed.
1172
1173`R FILE'
1174     The file has been removed from your private copy of the sources,
1175     and will be removed from the source repository when you run
1176     `commit' on the file.  This is a reminder to you that the file
1177     needs to be committed.
1178
1179`M FILE'
1180     The file is modified in  your  working  directory.
1181
1182     `M' can indicate one of two states for a file you're working on:
1183     either there were no modifications to the same file in the
1184     repository, so that your file remains as you last saw it; or there
1185     were modifications in the repository as well as in your copy, but
1186     they were merged successfully, without conflict, in your working
1187     directory.
1188
1189     CVS will print some messages if it merges your work, and a backup
1190     copy of your working file (as it looked before you ran `update')
1191     will be made.  The exact name of that file is printed while
1192     `update' runs.
1193
1194`C FILE'
1195     A conflict was detected while trying to merge your changes to FILE
1196     with changes from the source repository.  FILE (the copy in your
1197     working directory) is now the result of attempting to merge the
1198     two revisions; an unmodified copy of your file is also in your
1199     working directory, with the name `.#FILE.REVISION' where REVISION
1200     is the revision that your modified file started from.  Resolve the
1201     conflict as described in *Note Conflicts example::.  (Note that
1202     some systems automatically purge files that begin with `.#' if
1203     they have not been accessed for a few days.  If you intend to keep
1204     a copy of your original file, it is a very good idea to rename
1205     it.)  Under VMS, the file name starts with `__' rather than `.#'.
1206
1207`? FILE'
1208     FILE is in your working directory, but does not correspond to
1209     anything in the source repository, and is not in the list of files
1210     for CVS to ignore (see the description of the `-I' option, and
1211     *note cvsignore::).
1212
1213