home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / cvs-1.8.7-bin.lha / info / cvs.info-3 < prev    next >
Encoding:
GNU Info File  |  1996-10-12  |  48.6 KB  |  1,254 lines

  1. This is Info file cvs.info, produced by Makeinfo-1.64 from the input
  2. file /ade-src/fsf/cvs/doc/cvs.texinfo.
  3.  
  4.    Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
  5. Free Software Foundation, Inc.
  6.  
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.  
  11.    Permission is granted to copy and distribute modified versions of
  12. this manual under the conditions for verbatim copying, provided also
  13. that the section entitled "GNU General Public License" is included
  14. exactly as in the original, and provided that the entire resulting
  15. derived work is distributed under the terms of a permission notice
  16. identical to this one.
  17.  
  18.    Permission is granted to copy and distribute translations of this
  19. manual into another language, under the above conditions for modified
  20. versions, except that the section entitled "GNU General Public License"
  21. and this permission notice may be included in translations approved by
  22. the Free Software Foundation instead of in the original English.
  23.  
  24. 
  25. File: cvs.info,  Node: Inside,  Next: Rename by copying,  Prev: Outside,  Up: Moving files
  26.  
  27. Moving the history file
  28. =======================
  29.  
  30.    This method is more dangerous, since it involves moving files inside
  31. the repository.  Read this entire section before trying it out!
  32.  
  33.      $ cd $CVSROOT/MODULE
  34.      $ mv OLD,v NEW,v
  35.  
  36. Advantages:
  37.  
  38.    * The log of changes is maintained intact.
  39.  
  40.    * The revision numbers are not affected.
  41.  
  42. Disadvantages:
  43.  
  44.    * Old releases of the module cannot easily be fetched from the
  45.      repository.  (The file will show up as NEW even in revisions from
  46.      the time before it was renamed).
  47.  
  48.    * There is no log information of when the file was renamed.
  49.  
  50.    * Nasty things might happen if someone accesses the history file
  51.      while you are moving it.  Make sure no one else runs any of the CVS
  52.      commands while you move it.
  53.  
  54. 
  55. File: cvs.info,  Node: Rename by copying,  Prev: Inside,  Up: Moving files
  56.  
  57. Copying the history file
  58. ========================
  59.  
  60.    This way also involves direct modifications to the repository.  It
  61. is safe, but not without drawbacks.
  62.  
  63.      # Copy the RCS file inside the repository
  64.      $ cd $CVSROOT/MODULE
  65.      $ cp OLD,v NEW,v
  66.      # Remove the old file
  67.      $ cd ~/MODULE
  68.      $ rm OLD
  69.      $ cvs remove OLD
  70.      $ cvs commit OLD
  71.      # Remove all tags from NEW
  72.      $ cvs update NEW
  73.      $ cvs log NEW             # Remember the tag names
  74.      $ cvs tag -d TAG1
  75.      $ cvs tag -d TAG2
  76.      ...
  77.  
  78.    By removing the tags you will be able to check out old revisions of
  79. the module.
  80.  
  81. Advantages:
  82.  
  83.    * Checking out old revisions works correctly, as long as you use
  84.      `-rTAG' and not `-DDATE' to retrieve the revisions.
  85.  
  86.    * The log of changes is maintained intact.
  87.  
  88.    * The revision numbers are not affected.
  89.  
  90. Disadvantages:
  91.  
  92.    * You cannot easily see the history of the file across the rename.
  93.  
  94.    * Unless you use the `-r rev' (*note commit options::.) flag when
  95.      NEW is committed its revision numbers will start at 1.0 again.
  96.  
  97. 
  98. File: cvs.info,  Node: Moving directories,  Next: History browsing,  Prev: Moving files,  Up: Top
  99.  
  100. Moving and renaming directories
  101. *******************************
  102.  
  103.    If you want to be able to retrieve old versions of the module, you
  104. must move each file in the directory with the CVS commands.  *Note
  105. Outside::.  The old, empty directory will remain inside the repository,
  106. but it will not appear in your workspace when you check out the module
  107. in the future.
  108.  
  109.    If you really want to rename or delete a directory, you can do it
  110. like this:
  111.  
  112.   1. Inform everyone who has a copy of the module that the directory
  113.      will be renamed.  They should commit all their changes, and remove
  114.      their working copies of the module, before you take the steps
  115.      below.
  116.  
  117.   2. Rename the directory inside the repository.
  118.  
  119.           $ cd $CVSROOT/MODULE
  120.           $ mv OLD-DIR NEW-DIR
  121.  
  122.   3. Fix the CVS administrative files, if necessary (for instance if
  123.      you renamed an entire module).
  124.  
  125.   4. Tell everyone that they can check out the module and continue
  126.      working.
  127.  
  128.  
  129.    If someone had a working copy of the module the CVS commands will
  130. cease to work for him, until he removes the directory that disappeared
  131. inside the repository.
  132.  
  133.    It is almost always better to move the files in the directory
  134. instead of moving the directory.  If you move the directory you are
  135. unlikely to be able to retrieve old releases correctly, since they
  136. probably depend on the name of the directories.
  137.  
  138. 
  139. File: cvs.info,  Node: History browsing,  Next: Keyword substitution,  Prev: Moving directories,  Up: Top
  140.  
  141. History browsing
  142. ****************
  143.  
  144.    Once you have used CVS to store a version control history--what
  145. files have changed when, how, and by whom, there are a variety of
  146. mechanisms for looking through the history.
  147.  
  148. * Menu:
  149.  
  150. * log messages::                Log messages
  151. * history database::            The history database
  152. * user-defined logging::        User-defined logging
  153. * annotate::                    What revision modified each line of a file?
  154.  
  155. 
  156. File: cvs.info,  Node: log messages,  Next: history database,  Up: History browsing
  157.  
  158. Log messages
  159. ============
  160.  
  161.    Whenever you commit a file you specify a log message.
  162.  
  163.    To look through the log messages which have been specified for every
  164. revision which has been committed, use the `cvs log' command (*note
  165. log::.).
  166.  
  167. 
  168. File: cvs.info,  Node: history database,  Next: user-defined logging,  Prev: log messages,  Up: History browsing
  169.  
  170. The history database
  171. ====================
  172.  
  173.    You can use the history file (*note history file::.) to log various
  174. CVS actions.  To retrieve the information from the history file, use
  175. the `cvs history' command (*note history::.).
  176.  
  177. 
  178. File: cvs.info,  Node: user-defined logging,  Next: annotate,  Prev: history database,  Up: History browsing
  179.  
  180. User-defined logging
  181. ====================
  182.  
  183.    You can customize CVS to log various kinds of actions, in whatever
  184. manner you choose.  These mechanisms operate by executing a script at
  185. various times.  The script might append a message to a file listing the
  186. information and the programmer who created it, or send mail to a group
  187. of developers, or, perhaps, post a message to a particular newsgroup.
  188. To log commits, use the `loginfo' file (*note loginfo::.).  To log
  189. commits, checkouts, exports, and tags, respectively, you can also use
  190. the `-i', `-o', `-e', and `-t' options in the modules file.  For a more
  191. flexible way of giving notifications to various users, which requires
  192. less in the way of keeping centralized scripts up to date, use the `cvs
  193. watch add' command (*note Getting Notified::.); this command is useful
  194. even if you are not using `cvs watch on'.
  195.  
  196.    The `taginfo' file defines programs to execute when someone executes
  197. a `tag' or `rtag' command.  The `taginfo' file has the standard form
  198. for administrative files (*note Administrative files::.), where each
  199. line is a regular expression followed by a command to execute.  The
  200. arguments passed to the command are, in order, the TAGNAME, OPERATION
  201. (`add' for `tag', `mov' for `tag -F', and `del' for `tag -d'),
  202. REPOSITORY, and any remaining are pairs of FILENAME REVISION.  A
  203. non-zero exit of the filter program will cause the tag to be aborted.
  204.  
  205. 
  206. File: cvs.info,  Node: annotate,  Prev: user-defined logging,  Up: History browsing
  207.  
  208. Annotate command
  209. ================
  210.  
  211.  - Command: cvs annotate [`-lf'] [`-r rev'|`-D date'] FILES ...
  212.      For each file in FILES, print the head revision of the trunk,
  213.      together with information on the last modification for each line.
  214.      For example:
  215.  
  216.           $ cvs annotate ssfile
  217.           Annotations for ssfile
  218.           ***************
  219.           1.1          (mary     27-Mar-96): ssfile line 1
  220.           1.2          (joe      28-Mar-96): ssfile line 2
  221.  
  222.      The file `ssfile' currently contains two lines.  The `ssfile line
  223.      1' line was checked in by `mary' on March 27.  Then, on March 28,
  224.      `joe' added a line `ssfile line 2', without modifying the `ssfile
  225.      line 1' line.  This report doesn't tell you anything about lines
  226.      which have been deleted or replaced; you need to use `cvs diff'
  227.      for that (*note diff::.).
  228.  
  229.  
  230.    These standard options are available with `annotate' (*note Common
  231. options::., for a complete description of them):
  232.  
  233. `-D DATE'
  234.      Annotate the most recent revision no later than DATE.
  235.  
  236. `-f'
  237.      Only useful with the `-D DATE' or `-r TAG' flags.  If no matching
  238.      revision is found, annotate the most recent revision (instead of
  239.      ignoring the file).
  240.  
  241. `-l'
  242.      Local; run only in current working directory.  *Note Recursive
  243.      behavior::.
  244.  
  245. `-r TAG'
  246.      Annotate revision TAG.
  247.  
  248. 
  249. File: cvs.info,  Node: Keyword substitution,  Next: Binary files,  Prev: History browsing,  Up: Top
  250.  
  251. Keyword substitution
  252. ********************
  253.  
  254.    As long as you edit source files inside your working copy of a
  255. module you can always find out the state of your files via `cvs status'
  256. and `cvs log'.  But as soon as you export the files from your
  257. development environment it becomes harder to identify which revisions
  258. they are.
  259.  
  260.    RCS uses a mechanism known as "keyword substitution" (or "keyword
  261. expansion") to help identifying the files.  Embedded strings of the form
  262. `$KEYWORD$' and `$KEYWORD:...$' in a file are replaced with strings of
  263. the form `$KEYWORD:VALUE$' whenever you obtain a new revision of the
  264. file.
  265.  
  266. * Menu:
  267.  
  268. * Keyword list::                RCS Keywords
  269. * Using keywords::              Using keywords
  270. * Avoiding substitution::       Avoiding substitution
  271. * Substitution modes::          Substitution modes
  272. * Log keyword::                 Problems with the $Log$ keyword.
  273.  
  274. 
  275. File: cvs.info,  Node: Keyword list,  Next: Using keywords,  Up: Keyword substitution
  276.  
  277. RCS Keywords
  278. ============
  279.  
  280.    This is a list of the keywords that RCS currently (in release
  281. 5.6.0.1) supports:
  282.  
  283. `$Author$'
  284.      The login name of the user who checked in the revision.
  285.  
  286. `$Date$'
  287.      The date and time (UTC) the revision was checked in.
  288.  
  289. `$Header$'
  290.      A standard header containing the full pathname of the RCS file,
  291.      the revision number, the date (UTC), the author, the state, and
  292.      the locker (if locked).  Files will normally never be locked when
  293.      you use CVS.
  294.  
  295. `$Id$'
  296.      Same as `$Header$', except that the RCS filename is without a path.
  297.  
  298. `$Name$'
  299.      Tag name used to check out this file.
  300.  
  301. `$Locker$'
  302.      The login name of the user who locked the revision (empty if not
  303.      locked, and thus almost always useless when you are using CVS).
  304.  
  305. `$Log$'
  306.      The log message supplied during commit, preceded by a header
  307.      containing the RCS filename, the revision number, the author, and
  308.      the date (UTC).  Existing log messages are *not* replaced.
  309.      Instead, the new log message is inserted after `$Log:...$'.  Each
  310.      new line is prefixed with a "comment leader" which RCS guesses
  311.      from the file name extension.  It can be changed with `cvs admin
  312.      -c'.  *Note admin options::.  This keyword is useful for
  313.      accumulating a complete change log in a source file, but for
  314.      several reasons it can be problematic.  *Note Log keyword::.
  315.  
  316. `$RCSfile$'
  317.      The name of the RCS file without a path.
  318.  
  319. `$Revision$'
  320.      The revision number assigned to the revision.
  321.  
  322. `$Source$'
  323.      The full pathname of the RCS file.
  324.  
  325. `$State$'
  326.      The state assigned to the revision.  States can be assigned with
  327.      `cvs admin -s'--*Note admin options::.
  328.  
  329. 
  330. File: cvs.info,  Node: Using keywords,  Next: Avoiding substitution,  Prev: Keyword list,  Up: Keyword substitution
  331.  
  332. Using keywords
  333. ==============
  334.  
  335.    To include a keyword string you simply include the relevant text
  336. string, such as `$Id$', inside the file, and commit the file.  CVS will
  337. automatically expand the string as part of the commit operation.
  338.  
  339.    It is common to embed `$Id$' string in the C source code.  This
  340. example shows the first few lines of a typical file, after keyword
  341. substitution has been performed:
  342.  
  343.      static char *rcsid="$Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $";
  344.      /* The following lines will prevent `gcc' version 2.X
  345.         from issuing an "unused variable" warning. */
  346.      #if __GNUC__ == 2
  347.      #define USE(var) static void * use_##var = (&use_##var, (void *) &var)
  348.      USE (rcsid);
  349.      #endif
  350.  
  351.    Even though a clever optimizing compiler could remove the unused
  352. variable `rcsid', most compilers tend to include the string in the
  353. binary.  Some compilers have a `#pragma' directive to include literal
  354. text in the binary.
  355.  
  356.    The `ident' command (which is part of the RCS package) can be used
  357. to extract keywords and their values from a file.  This can be handy
  358. for text files, but it is even more useful for extracting keywords from
  359. binary files.
  360.  
  361.      $ ident samp.c
  362.      samp.c:
  363.           $Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
  364.      $ gcc samp.c
  365.      $ ident a.out
  366.      a.out:
  367.           $Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
  368.  
  369.    SCCS is another popular revision control system.  It has a command,
  370. `what', which is very similar to `ident' and used for the same purpose.
  371. Many sites without RCS have SCCS.  Since `what' looks for the
  372. character sequence `@(#)' it is easy to include keywords that are
  373. detected by either command.  Simply prefix the RCS keyword with the
  374. magic SCCS phrase, like this:
  375.  
  376.      static char *id="@(#) $Id: ab.c,v 1.5 1993/10/19 14:57:32 ceder Exp $";
  377.  
  378. 
  379. File: cvs.info,  Node: Avoiding substitution,  Next: Substitution modes,  Prev: Using keywords,  Up: Keyword substitution
  380.  
  381. Avoiding substitution
  382. =====================
  383.  
  384.    Keyword substitution has its disadvantages.  Sometimes you might
  385. want the literal text string `$Author$' to appear inside a file without
  386. RCS interpreting it as a keyword and expanding it into something like
  387. `$Author: ceder $'.
  388.  
  389.    There is unfortunately no way to selectively turn off keyword
  390. substitution.  You can use `-ko' (*note Substitution modes::.) to turn
  391. off keyword substitution entirely.
  392.  
  393.    In many cases you can avoid using RCS keywords in the source, even
  394. though they appear in the final product.  For example, the source for
  395. this manual contains `$@asis{}Author$' whenever the text `$Author$'
  396. should appear.  In `nroff' and `troff' you can embed the null-character
  397. `\&' inside the keyword for a similar effect.
  398.  
  399. 
  400. File: cvs.info,  Node: Substitution modes,  Next: Log keyword,  Prev: Avoiding substitution,  Up: Keyword substitution
  401.  
  402. Substitution modes
  403. ==================
  404.  
  405.    Each file has a stored default substitution mode, and each working
  406. directory copy of a file also has a substitution mode.  The former is
  407. set by the `-k' option to `cvs add' and `cvs admin'; the latter is set
  408. by the -k or -A options to `cvs checkout' or `cvs update'.  `cvs diff'
  409. also has a `-k' option.  For some examples, *Note Binary files::.
  410.  
  411.    The modes available are:
  412.  
  413. `-kkv'
  414.      Generate keyword strings using the default form, e.g.  `$Revision:
  415.      5.7 $' for the `Revision' keyword.
  416.  
  417. `-kkvl'
  418.      Like `-kkv', except that a locker's name is always inserted if the
  419.      given revision is currently locked.  This option is normally not
  420.      useful when CVS is used.
  421.  
  422. `-kk'
  423.      Generate only keyword names in keyword strings; omit their values.
  424.      For example, for the `Revision' keyword, generate the string
  425.      `$Revision$' instead of `$Revision: 5.7 $'.  This option is useful
  426.      to ignore differences due to keyword substitution when comparing
  427.      different revisions of a file.
  428.  
  429. `-ko'
  430.      Generate the old keyword string, present in the working file just
  431.      before it was checked in.  For example, for the `Revision'
  432.      keyword, generate the string `$Revision: 1.1 $' instead of
  433.      `$Revision: 5.7 $' if that is how the string appeared when the
  434.      file was checked in.
  435.  
  436. `-kb'
  437.      Like `-ko', but also inhibit conversion of line endings between
  438.      the canonical form in which they are stored in the repository
  439.      (linefeed only), and the form appropriate to the operating system
  440.      in use on the client.  For systems, like unix, which use linefeed
  441.      only to terminate lines, this is the same as `-ko'.  For more
  442.      information on binary files, see *Note Binary files::.
  443.  
  444. `-kv'
  445.      Generate only keyword values for keyword strings.  For example,
  446.      for the `Revision' keyword, generate the string `5.7' instead of
  447.      `$Revision: 5.7 $'.  This can help generate files in programming
  448.      languages where it is hard to strip keyword delimiters like
  449.      `$Revision: $' from a string.  However, further keyword
  450.      substitution cannot be performed once the keyword names are
  451.      removed, so this option should be used with care.
  452.  
  453.      One often would like to use `-kv' with `cvs export'--*note
  454.      export::..  But be aware that doesn't handle an export containing
  455.      binary files correctly.
  456.  
  457. 
  458. File: cvs.info,  Node: Log keyword,  Prev: Substitution modes,  Up: Keyword substitution
  459.  
  460. Problems with the $Log$ keyword.
  461. ================================
  462.  
  463.    The `$Log$' keyword is somewhat controversial.  As long as you are
  464. working on your development system the information is easily accessible
  465. even if you do not use the `$Log$' keyword--just do a `cvs log'.  Once
  466. you export the file the history information might be useless anyhow.
  467.  
  468.    A more serious concern is that RCS is not good at handling `$Log$'
  469. entries when a branch is merged onto the main trunk.  Conflicts often
  470. result from the merging operation.
  471.  
  472.    People also tend to "fix" the log entries in the file (correcting
  473. spelling mistakes and maybe even factual errors).  If that is done the
  474. information from `cvs log' will not be consistent with the information
  475. inside the file.  This may or may not be a problem in real life.
  476.  
  477.    It has been suggested that the `$Log$' keyword should be inserted
  478. *last* in the file, and not in the files header, if it is to be used at
  479. all.  That way the long list of change messages will not interfere with
  480. everyday source file browsing.
  481.  
  482. 
  483. File: cvs.info,  Node: Binary files,  Next: Revision management,  Prev: Keyword substitution,  Up: Top
  484.  
  485. Handling binary files
  486. *********************
  487.  
  488.    There are two issues with using CVS to store binary files.  The
  489. first is that CVS by default convert line endings between the canonical
  490. form in which they are stored in the repository (linefeed only), and
  491. the form appropriate to the operating system in use on the client (for
  492. example, carriage return followed by line feed for Windows NT).
  493.  
  494.    The second is that a binary file might happen to contain data which
  495. looks like a keyword (*note Keyword substitution::.), so keyword
  496. expansion must be turned off.
  497.  
  498.    The `-kb' option available with some CVS commands insures that
  499. neither line ending conversion nor keyword expansion will be done.  If
  500. you are using an old version of RCS without this option, and you are
  501. using an operating system, such as unix, which terminates lines with
  502. linefeeds only, you can use `-ko' instead; if you are on another
  503. operating system, upgrade to a version of RCS, such as 5.7 or later,
  504. which supports `-kb'.
  505.  
  506.    Here is an example of how you can create a new file using the `-kb'
  507. flag:
  508.  
  509.      $ echo '$Id$' > kotest
  510.      $ cvs add -kb -m"A test file" kotest
  511.      $ cvs ci -m"First checkin; contains a keyword" kotest
  512.  
  513.    If a file accidentally gets added without `-kb', one can use the
  514. `cvs admin' command to recover.  For example:
  515.  
  516.      $ echo '$Id$' > kotest
  517.      $ cvs add -m"A test file" kotest
  518.      $ cvs ci -m"First checkin; contains a keyword" kotest
  519.      $ cvs admin -kb kotest
  520.      $ cvs update -A kotest
  521.      $ cvs commit -m "make it binary" kotest  # For non-unix systems
  522.  
  523.    When you check in the file `kotest' the keywords are expanded.  (Try
  524. the above example, and do a `cat kotest' after every command).  The `cvs
  525. admin -kb' command sets the default keyword substitution method for
  526. this file, but it does not alter the working copy of the file that you
  527. have.  The easiest way to get the unexpanded version of `kotest' is
  528. `cvs update -A'.  If you need to cope with line endings (that is, you
  529. are using a CVS client on a non-unix system), then you need to check in
  530. a new copy of the file, as shown by the `cvs commit' command above.
  531.  
  532.    However, in using `cvs admin -k' to change the keyword expansion, be
  533. aware that the keyword expansion mode is not version controlled.  This
  534. means that, for example, that if you have a text file in old releases,
  535. and a binary file with the same name in new releases, CVS provides no
  536. way to check out the file in text or binary mode depending on what
  537. version you are checking out.  There is no good workaround for this
  538. problem.
  539.  
  540.    You can also set a default for whether `cvs add' and `cvs import'
  541. treat a file as binary based on its name; for example you could say
  542. that files who names end in `.exe' are binary.  *Note Wrappers::.
  543.  
  544. 
  545. File: cvs.info,  Node: Revision management,  Next: Invoking CVS,  Prev: Binary files,  Up: Top
  546.  
  547. Revision management
  548. *******************
  549.  
  550.    If you have read this far, you probably have a pretty good grasp on
  551. what CVS can do for you.  This chapter talks a little about things that
  552. you still have to decide.
  553.  
  554.    If you are doing development on your own using CVS you could
  555. probably skip this chapter.  The questions this chapter takes up become
  556. more important when more than one person is working in a repository.
  557.  
  558. * Menu:
  559.  
  560. * When to commit::              Some discussion on the subject
  561.  
  562. 
  563. File: cvs.info,  Node: When to commit,  Up: Revision management
  564.  
  565. When to commit?
  566. ===============
  567.  
  568.    Your group should decide which policy to use regarding commits.
  569. Several policies are possible, and as your experience with CVS grows
  570. you will probably find out what works for you.
  571.  
  572.    If you commit files too quickly you might commit files that do not
  573. even compile.  If your partner updates his working sources to include
  574. your buggy file, he will be unable to compile the code.  On the other
  575. hand, other persons will not be able to benefit from the improvements
  576. you make to the code if you commit very seldom, and conflicts will
  577. probably be more common.
  578.  
  579.    It is common to only commit files after making sure that they can be
  580. compiled.  Some sites require that the files pass a test suite.
  581. Policies like this can be enforced using the commitinfo file (*note
  582. commitinfo::.), but you should think twice before you enforce such a
  583. convention.  By making the development environment too controlled it
  584. might become too regimented and thus counter-productive to the real
  585. goal, which is to get software written.
  586.  
  587. 
  588. File: cvs.info,  Node: Invoking CVS,  Next: Administrative files,  Prev: Revision management,  Up: Top
  589.  
  590. Reference manual for CVS commands
  591. *********************************
  592.  
  593.    This appendix describes how to invoke CVS, and describes in detail
  594. those subcommands of CVS which are not fully described elsewhere.  To
  595. look up a particular subcommand, see *Note Index::.
  596.  
  597. * Menu:
  598.  
  599. * Structure::                   Overall structure of CVS commands
  600. * ~/.cvsrc::                    Default options with the ~/.csvrc file
  601. * Global options::              Options you give to the left of cvs_command
  602. * Common options::              Options you give to the right of cvs_command
  603. * add::                         Add a new file/directory to the repository
  604. * admin::                       Administration front end for rcs
  605. * checkout::                    Checkout sources for editing
  606. * commit::                      Check files into the repository
  607. * diff::                        Run diffs between revisions
  608. * export::                      Export sources from CVS, similar to checkout
  609. * history::                     Show status of files and users
  610. * import::                      Import sources into CVS, using vendor branches
  611. * log::                         Print out 'rlog' information for files
  612. * rdiff::                       'patch' format diffs between releases
  613. * release::                     Indicate that a Module is no longer in use
  614. * rtag::                        Add a tag to a module
  615. * status::                      Status info on the revisions
  616. * tag::                         Add a tag to checked out version
  617. * update::                      Bring work tree in sync with repository
  618.  
  619. 
  620. File: cvs.info,  Node: Structure,  Next: ~/.cvsrc,  Up: Invoking CVS
  621.  
  622. Overall structure of CVS commands
  623. =================================
  624.  
  625.    The overall format of all CVS commands is:
  626.  
  627.      cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
  628.  
  629. `cvs'
  630.      The name of the CVS program.
  631.  
  632. `cvs_options'
  633.      Some options that affect all sub-commands of CVS.  These are
  634.      described below.
  635.  
  636. `cvs_command'
  637.      One of several different sub-commands.  Some of the commands have
  638.      aliases that can be used instead; those aliases are noted in the
  639.      reference manual for that command.  There are only two situations
  640.      where you may omit `cvs_command': `cvs -H' elicits a list of
  641.      available commands, and `cvs -v' displays version information on
  642.      CVS itself.
  643.  
  644. `command_options'
  645.      Options that are specific for the command.
  646.  
  647. `command_args'
  648.      Arguments to the commands.
  649.  
  650.    There is unfortunately some confusion between `cvs_options' and
  651. `command_options'.  `-l', when given as a `cvs_option', only affects
  652. some of the commands.  When it is given as a `command_option' is has a
  653. different meaning, and is accepted by more commands.  In other words,
  654. do not take the above categorization too seriously.  Look at the
  655. documentation instead.
  656.  
  657. 
  658. File: cvs.info,  Node: ~/.cvsrc,  Next: Global options,  Prev: Structure,  Up: Invoking CVS
  659.  
  660. Default options and the ~/.cvsrc file
  661. =====================================
  662.  
  663.    There are some `command_options' that are used so often that you
  664. might have set up an alias or some other means to make sure you always
  665. specify that option.  One example (the one that drove the
  666. implementation of the .cvsrc support, actually) is that many people
  667. find the default output of the `diff' command to be very hard to read,
  668. and that either context diffs or unidiffs are much easier to understand.
  669.  
  670.    The `~/.cvsrc' file is a way that you can add default options to
  671. `cvs_commands' within cvs, instead of relying on aliases or other shell
  672. scripts.
  673.  
  674.    The format of the `~/.cvsrc' file is simple.  The file is searched
  675. for a line that begins with the same name as the `cvs_command' being
  676. executed.  If a match is found, then the remainder of the line is split
  677. up (at whitespace characters) into separate options and added to the
  678. command arguments *before* any options from the command line.
  679.  
  680.    If a command has two names (e.g., `checkout' and `co'), the official
  681. name, not necessarily the one used on the command line, will be used to
  682. match against the file.  So if this is the contents of the user's
  683. `~/.cvsrc' file:
  684.  
  685.      log -N
  686.      diff -u
  687.      update -P
  688.      co -P
  689.  
  690. the command `cvs checkout foo' would have the `-P' option added to the
  691. arguments, as well as `cvs co foo'.
  692.  
  693.    With the example file above, the output from `cvs diff foobar' will
  694. be in unidiff format.  `cvs diff -c foobar' will provide context diffs,
  695. as usual.  Getting "old" format diffs would be slightly more
  696. complicated, because `diff' doesn't have an option to specify use of
  697. the "old" format, so you would need `cvs -f diff foobar'.
  698.  
  699.    In place of the command name you can use `cvs' to specify global
  700. options (*note Global options::.).  For example the following line in
  701. `.cvsrc'
  702.  
  703.      cvs -z6
  704.  
  705.    causes CVS to use compression level 6
  706.  
  707. 
  708. File: cvs.info,  Node: Global options,  Next: Common options,  Prev: ~/.cvsrc,  Up: Invoking CVS
  709.  
  710. Global options
  711. ==============
  712.  
  713.    The available `cvs_options' (that are given to the left of
  714. `cvs_command') are:
  715.  
  716. `-b BINDIR'
  717.      Use BINDIR as the directory where RCS programs are located.
  718.      Overrides the setting of the `$RCSBIN' environment variable and
  719.      any precompiled directory.  This parameter should be specified as
  720.      an absolute pathname.
  721.  
  722. `-d CVS_ROOT_DIRECTORY'
  723.      Use CVS_ROOT_DIRECTORY as the root directory pathname of the
  724.      repository.  Overrides the setting of the `$CVSROOT' environment
  725.      variable.  *Note Repository::.
  726.  
  727. `-e EDITOR'
  728.      Use EDITOR to enter revision log information.  Overrides the
  729.      setting of the `$CVSEDITOR' and `$EDITOR' environment variables.
  730.  
  731. `-f'
  732.      Do not read the `~/.cvsrc' file.  This option is most often used
  733.      because of the non-orthogonality of the CVS option set.  For
  734.      example, the `cvs log' option `-N' (turn off display of tag names)
  735.      does not have a corresponding option to turn the display on.  So
  736.      if you have `-N' in the `~/.cvsrc' entry for `log', you may need
  737.      to use `-f' to show the tag names.
  738.  
  739. `-H'
  740.      Display usage information about the specified `cvs_command' (but
  741.      do not actually execute the command).  If you don't specify a
  742.      command name, `cvs -H' displays a summary of all the commands
  743.      available.
  744.  
  745. `-l'
  746.      Do not log the cvs_command in the command history (but execute it
  747.      anyway).  *Note history::, for information on command history.
  748.  
  749. `-n'
  750.      Do not change any files.  Attempt to execute the `cvs_command',
  751.      but only to issue reports; do not remove, update, or merge any
  752.      existing files, or create any new files.
  753.  
  754. `-Q'
  755.      Cause the command to be really quiet; the command will only
  756.      generate output for serious problems.
  757.  
  758. `-q'
  759.      Cause the command to be somewhat quiet; informational messages,
  760.      such as reports of recursion through subdirectories, are
  761.      suppressed.
  762.  
  763. `-r'
  764.      Make new working files files read-only.  Same effect as if the
  765.      `$CVSREAD' environment variable is set (*note Environment
  766.      variables::.).  The default is to make working files writable,
  767.      unless watches are on (*note Watches::.).
  768.  
  769. `-s VARIABLE=VALUE'
  770.      Set a user variable (*note Variables::.).
  771.  
  772. `-t'
  773.      Trace program execution; display messages showing the steps of CVS
  774.      activity.  Particularly useful with `-n' to explore the potential
  775.      impact of an unfamiliar command.
  776.  
  777. `-v'
  778.      Display version and copyright information for CVS.
  779.  
  780. `-w'
  781.      Make new working files read-write.  Overrides the setting of the
  782.      `$CVSREAD' environment variable.  Files are created read-write by
  783.      default, unless `$CVSREAD' is set or `-r' is given.
  784.  
  785. `-x'
  786.      Encrypt all communication between the client and the server.  Only
  787.      has an effect on the CVS client.  As of this writing, this is only
  788.      implemented when using a Kerberos connection (*note Kerberos
  789.      authenticated::.).
  790.  
  791. `-z GZIP-LEVEL'
  792.      Set the compression level.  Only has an effect on the CVS client.
  793.  
  794. 
  795. File: cvs.info,  Node: Common options,  Next: add,  Prev: Global options,  Up: Invoking CVS
  796.  
  797. Common command options
  798. ======================
  799.  
  800.    This section describes the `command_options' that are available
  801. across several CVS commands.  These options are always given to the
  802. right of `cvs_command'. Not all commands support all of these options;
  803. each option is only supported for commands where it makes sense.
  804. However, when a command has one of these options you can almost always
  805. count on the same behavior of the option as in other commands.  (Other
  806. command options, which are listed with the individual commands, may have
  807. different behavior from one CVS command to the other).
  808.  
  809.    *Warning:* the `history' command is an exception; it supports many
  810. options that conflict even with these standard options.
  811.  
  812. `-D DATE_SPEC'
  813.      Use the most recent revision no later than DATE_SPEC.  DATE_SPEC
  814.      is a single argument, a date description specifying a date in the
  815.      past.
  816.  
  817.      The specification is "sticky" when you use it to make a private
  818.      copy of a source file; that is, when you get a working file using
  819.      `-D', CVS records the date you specified, so that further updates
  820.      in the same directory will use the same date (for more information
  821.      on sticky tags/dates, *note Sticky tags::.).
  822.  
  823.      A wide variety of date formats are supported by the underlying RCS
  824.      facilities, similar to those described in co(1), but not exactly
  825.      the same.  The DATE_SPEC is interpreted as being in the local
  826.      timezone, unless a specific timezone is specified.  Examples of
  827.      valid date specifications include:
  828.  
  829.                               1 month ago
  830.                               2 hours ago
  831.                               400000 seconds ago
  832.                               last year
  833.                               last Monday
  834.                               yesterday
  835.                               a fortnight ago
  836.                               3/31/92 10:00:07 PST
  837.                               January 23, 1987 10:05pm
  838.                               22:00 GMT
  839.  
  840.      `-D' is available with the `checkout', `diff', `export', `history',
  841.      `rdiff', `rtag', and `update' commands.  (The `history' command
  842.      uses this option in a slightly different way; *note history
  843.      options::.).
  844.  
  845.      Remember to quote the argument to the `-D' flag so that your shell
  846.      doesn't interpret spaces as argument separators.  A command using
  847.      the `-D' flag can look like this:
  848.  
  849.           $ cvs diff -D "1 hour ago" cvs.texinfo
  850.  
  851. `-f'
  852.      When you specify a particular date or tag to CVS commands, they
  853.      normally ignore files that do not contain the tag (or did not
  854.      exist prior to the date) that you specified.  Use the `-f' option
  855.      if you want files retrieved even when there is no match for the
  856.      tag or date.  (The most recent revision of the file will be used).
  857.  
  858.      `-f' is available with these commands: `checkout', `export',
  859.      `rdiff', `rtag', and `update'.
  860.  
  861.      *Warning:*  The `commit' command also has a `-f' option, but it
  862.      has a different behavior for that command.  *Note commit options::.
  863.  
  864. `-H'
  865.      Help; describe the options available for this command.  This is
  866.      the only option supported for all CVS commands.
  867.  
  868. `-k KFLAG'
  869.      Alter the default RCS processing of keywords.  *Note Keyword
  870.      substitution::, for the meaning of KFLAG.  Your KFLAG
  871.      specification is "sticky" when you use it to create a private copy
  872.      of a source file; that is, when you use this option with the
  873.      `checkout' or `update' commands, CVS associates your selected
  874.      KFLAG with the file, and continues to use it with future update
  875.      commands on the same file until you specify otherwise.
  876.  
  877.      The `-k' option is available with the `add', `checkout', `diff' and
  878.      `update' commands.
  879.  
  880. `-l'
  881.      Local; run only in current working directory, rather than
  882.      recursing through subdirectories.
  883.  
  884.      *Warning:* this is not the same as the overall `cvs -l' option,
  885.      which you can specify to the left of a cvs command!
  886.  
  887.      Available with the following commands: `checkout', `commit',
  888.      `diff', `export', `log', `remove', `rdiff', `rtag', `status',
  889.      `tag', and `update'.
  890.  
  891. `-m MESSAGE'
  892.      Use MESSAGE as log information, instead of invoking an editor.
  893.  
  894.      Available with the following commands: `add', `commit' and
  895.      `import'.
  896.  
  897. `-n'
  898.      Do not run any checkout/commit/tag program.  (A program can be
  899.      specified to run on each of these activities, in the modules
  900.      database (*note modules::.); this option bypasses it).
  901.  
  902.      *Warning:* this is not the same as the overall `cvs -n' option,
  903.      which you can specify to the left of a cvs command!
  904.  
  905.      Available with the `checkout', `commit', `export', and `rtag'
  906.      commands.
  907.  
  908. `-P'
  909.      Prune (remove) directories that are empty after being updated, on
  910.      `checkout', or `update'.  Normally, an empty directory (one that
  911.      is void of revision-controlled files) is left alone.  Specifying
  912.      `-P' will cause these directories to be silently removed from your
  913.      checked-out sources.  This does not remove the directory from the
  914.      repository, only from your checked out copy.  Note that this
  915.      option is implied by the `-r' or `-D' options of `checkout' and
  916.      `export'.
  917.  
  918. `-p'
  919.      Pipe the files retrieved from the repository to standard output,
  920.      rather than writing them in the current directory.  Available with
  921.      the `checkout' and `update' commands.
  922.  
  923. `-W'
  924.      Specify file names that should be filtered.  You can use this
  925.      option repeatedly.  The spec can be a file name pattern of the
  926.      same type that you can specify in the `.cvswrappers' file.
  927.      Avaliable with the following commands: `import', and `update'.
  928.  
  929. `-r TAG'
  930.      Use the revision specified by the TAG argument instead of the
  931.      default "head" revision.  As well as arbitrary tags defined with
  932.      the `tag' or `rtag' command, two special tags are always
  933.      available: `HEAD' refers to the most recent version available in
  934.      the repository, and `BASE' refers to the revision you last checked
  935.      out into the current working directory.
  936.  
  937.      The tag specification is sticky when you use this option with
  938.      `checkout' or `update' to make your own copy of a file: CVS
  939.      remembers the tag and continues to use it on future update
  940.      commands, until you specify otherwise (for more information on
  941.      sticky tags/dates, *note Sticky tags::.).  The tag can be either a
  942.      symbolic or numeric tag.  *Note Tags::.
  943.  
  944.      Specifying the `-q' global option along with the `-r' command
  945.      option is often useful, to suppress the warning messages when the
  946.      RCS history file does not contain the specified tag.
  947.  
  948.      *Warning:* this is not the same as the overall `cvs -r' option,
  949.      which you can specify to the left of a cvs command!
  950.  
  951.      `-r' is available with the `checkout', `commit', `diff',
  952.      `history', `export', `rdiff', `rtag', and `update' commands.
  953.  
  954. 
  955. File: cvs.info,  Node: add,  Next: admin,  Prev: Common options,  Up: Invoking CVS
  956.  
  957. add--Add a new file/directory to the repository
  958. ===============================================
  959.  
  960.    * Synopsis: add [-k kflag] [-m 'message'] files...
  961.  
  962.    * Requires: repository, working directory.
  963.  
  964.    * Changes: working directory.
  965.  
  966.    * Synonym: new
  967.  
  968.    Use the `add' command to create a new file or directory in the
  969. source repository.  The files or directories specified with `add' must
  970. already exist in the current directory (which must have been created
  971. with the `checkout' command).  To add a whole new directory hierarchy
  972. to the source repository (for example, files received from a
  973. third-party vendor), use the `import' command instead.  *Note import::.
  974.  
  975.    If the argument to `add' refers to an immediate sub-directory, the
  976. directory is created at the correct place in the source repository, and
  977. the necessary CVS administration files are created in your working
  978. directory.  If the directory already exists in the source repository,
  979. `add' still creates the administration files in your version of the
  980. directory.  This allows you to use `add' to add a particular directory
  981. to your private sources even if someone else created that directory
  982. after your checkout of the sources.  You can do the following:
  983.  
  984.      $ mkdir new_directory
  985.      $ cvs add new_directory
  986.      $ cvs update new_directory
  987.  
  988.    An alternate approach using `update' might be:
  989.  
  990.      $ cvs update -d new_directory
  991.  
  992.    (To add any available new directories to your working directory,
  993. it's probably simpler to use `checkout' (*note checkout::.) or `update
  994. -d' (*note update::.)).
  995.  
  996.    The added files are not placed in the source repository until you
  997. use `commit' to make the change permanent.  Doing an `add' on a file
  998. that was removed with the `remove' command will resurrect the file,
  999. unless a `commit' command intervened.  *Note Removing files::, for an
  1000. example.
  1001.  
  1002.    Unlike most other commands `add' never recurses down directories.
  1003. It cannot yet handle relative paths.  Instead of
  1004.  
  1005.      $ cvs add foo/bar.c
  1006.  
  1007.    you have to do
  1008.  
  1009.      $ cd foo
  1010.      $ cvs add bar.c
  1011.  
  1012. * Menu:
  1013.  
  1014. * add options::                 add options
  1015. * add examples::                add examples
  1016.  
  1017. 
  1018. File: cvs.info,  Node: add options,  Next: add examples,  Up: add
  1019.  
  1020. add options
  1021. -----------
  1022.  
  1023.    There are only two options you can give to `add':
  1024.  
  1025. `-k KFLAG'
  1026.      This option specifies the default way that this file will be
  1027.      checked out.  The KFLAG argument (*note Substitution modes::.) is
  1028.      stored in the RCS file and can be changed with `admin -k' (*note
  1029.      admin options::.).  See *Note Binary files::, for information on
  1030.      using this option for binary files.
  1031.  
  1032. `-m DESCRIPTION'
  1033.      Using this option, you can give a description for the file.  This
  1034.      description appears in the history log (if it is enabled, *note
  1035.      history file::.).  It will also be saved in the RCS history file
  1036.      inside the repository when the file is committed.  The `log'
  1037.      command displays this description.
  1038.  
  1039.      The description can be changed using `admin -t'.  *Note admin::.
  1040.  
  1041.      If you omit the `-m DESCRIPTION' flag, an empty string will be
  1042.      used.  You will not be prompted for a description.
  1043.  
  1044. 
  1045. File: cvs.info,  Node: add examples,  Prev: add options,  Up: add
  1046.  
  1047. add examples
  1048. ------------
  1049.  
  1050.    To add the file `backend.c' to the repository, with a description,
  1051. the following can be used.
  1052.  
  1053.      $ cvs add -m "Optimizer and code generation passes." backend.c
  1054.      $ cvs commit -m "Early version. Not yet compilable." backend.c
  1055.  
  1056. 
  1057. File: cvs.info,  Node: admin,  Next: checkout,  Prev: add,  Up: Invoking CVS
  1058.  
  1059. admin--Administration front end for rcs
  1060. =======================================
  1061.  
  1062.    * Requires: repository, working directory.
  1063.  
  1064.    * Changes: repository.
  1065.  
  1066.    * Synonym: rcs
  1067.  
  1068.    This is the CVS interface to assorted administrative RCS facilities,
  1069. documented in rcs(1).  `admin' simply passes all its options and
  1070. arguments to the `rcs' command; it does no filtering or other
  1071. processing.  This command *does* work recursively, however, so extreme
  1072. care should be used.
  1073.  
  1074.    If there is a group whose name matches a compiled in value which
  1075. defaults to `cvsadmin', only members of that group can use `cvs admin'.
  1076. To disallow `cvs admin' for all users, create a group with no users in
  1077. it.
  1078.  
  1079. * Menu:
  1080.  
  1081. * admin options::               admin options
  1082. * admin examples::              admin examples
  1083.  
  1084. 
  1085. File: cvs.info,  Node: admin options,  Next: admin examples,  Up: admin
  1086.  
  1087. admin options
  1088. -------------
  1089.  
  1090.    Not all valid `rcs' options are useful together with CVS.  Some even
  1091. makes it impossible to use CVS until you undo the effect!
  1092.  
  1093.    This description of the available options is based on the `rcs(1)'
  1094. man page, but modified to suit readers that are more interrested in CVS
  1095. than RCS.
  1096.  
  1097. `-AOLDFILE'
  1098.      Might not work together with CVS.  Append the access list of
  1099.      OLDFILE to the access list of the RCS file.
  1100.  
  1101. `-aLOGINS'
  1102.      Might not work together with CVS.  Append the login names
  1103.      appearing in the comma-separated list LOGINS to the access list of
  1104.      the RCS file.
  1105.  
  1106. `-b[REV]'
  1107.      When used with bare RCS, this option sets the default branch to
  1108.      REV; in CVS sticky tags (*note Sticky tags::.) are a better way to
  1109.      decide which branch you want to work on.  With CVS, this option
  1110.      can be used to control behavior with respect to the vendor branch.
  1111.  
  1112. `-cSTRING'
  1113.      Useful with CVS.  Sets the comment leader to STRING.  The comment
  1114.      leader is printed before every log message line generated by the
  1115.      keyword `$Log$' (*note Keyword substitution::.).  This is useful
  1116.      for programming languages without multi-line comments.  RCS
  1117.      initially guesses the value of the comment leader from the file
  1118.      name extension when the file is first committed.
  1119.  
  1120. `-e[LOGINS]'
  1121.      Might not work together with CVS.  Erase the login names appearing
  1122.      in the comma-separated list LOGINS from the access list of the RCS
  1123.      file.  If LOGINS is omitted, erase the entire access list.
  1124.  
  1125. `-I'
  1126.      Run interactively, even if the standard input is not a terminal.
  1127.  
  1128. `-i'
  1129.      Useless with CVS.  When using bare RCS, this is used to create and
  1130.      initialize a new RCS file, without depositing a revision.
  1131.  
  1132. `-kSUBST'
  1133.      Useful with CVS.  Set the default keyword substitution to SUBST.
  1134.      *Note Keyword substitution::.  Giving an explicit `-k' option to
  1135.      `cvs update', `cvs export', or `cvs checkout' overrides this
  1136.      default.
  1137.  
  1138. `-l[REV]'
  1139.      Lock the revision with number REV.  If a branch is given, lock the
  1140.      latest revision on that branch.  If REV is omitted, lock the
  1141.      latest revision on the default branch.
  1142.  
  1143.      This can be used in conjunction with the `rcslock.pl' script in
  1144.      the `contrib' directory of the CVS source distribution to provide
  1145.      reserved checkouts (where only one user can be editing a given
  1146.      file at a time).  See the comments in that file for details (and
  1147.      see the `README' file in that directory for disclaimers about the
  1148.      unsupported nature of contrib).  According to comments in that
  1149.      file, locking must set to strict (which is the default).
  1150.  
  1151. `-L'
  1152.      Set locking to strict.  Strict locking means that the owner of an
  1153.      RCS file is not exempt from locking for checkin.  For use with
  1154.      CVS, strict locking must be set; see the discussion under the `-l'
  1155.      option above.
  1156.  
  1157. `-mREV:MSG'
  1158.      Replace the log message of revision REV with MSG.
  1159.  
  1160. `-NNAME[:[REV]]'
  1161.      Act like `-n', except override any previous assignment of NAME.
  1162.  
  1163. `-nNAME[:[REV]]'
  1164.      Associate the symbolic name NAME with the branch or revision REV.
  1165.      It is normally better to use `cvs tag' or `cvs rtag' instead.
  1166.      Delete the symbolic name if both `:' and REV are omitted;
  1167.      otherwise, print an error message if NAME is already associated
  1168.      with another number.  If REV is symbolic, it is expanded before
  1169.      association.  A REV consisting of a branch number followed by a
  1170.      `.' stands for the current latest revision in the branch.  A `:'
  1171.      with an empty REV stands for the current latest revision on the
  1172.      default branch, normally the trunk.  For example, `rcs -nNAME:
  1173.      RCS/*' associates NAME with the current latest revision of all the
  1174.      named RCS files; this contrasts with `rcs -nNAME:$ RCS/*' which
  1175.      associates NAME with the revision numbers extracted from keyword
  1176.      strings in the corresponding working files.
  1177.  
  1178. `-oRANGE'
  1179.      Potentially useful, but dangerous, with CVS (see below).  Deletes
  1180.      ("outdates") the revisions given by RANGE.  A range consisting of
  1181.      a single revision number means that revision.  A range consisting
  1182.      of a branch number means the latest revision on that branch.  A
  1183.      range of the form `REV1:REV2' means revisions REV1 to REV2 on the
  1184.      same branch, `:REV' means from the beginning of the branch
  1185.      containing REV up to and including REV, and `REV:' means from
  1186.      revision REV to the end of the branch containing REV.  None of the
  1187.      outdated revisions may have branches or locks.
  1188.  
  1189.      Due to the way CVS handles branches REV cannot be specified
  1190.      symbolically if it is a branch.  *Note Magic branch numbers::, for
  1191.      an explanation.
  1192.  
  1193.      Make sure that no-one has checked out a copy of the revision you
  1194.      outdate.  Strange things will happen if he starts to edit it and
  1195.      tries to check it back in.  For this reason, this option is not a
  1196.      good way to take back a bogus commit; commit a new revision
  1197.      undoing the bogus change instead (*note Merging two revisions::.).
  1198.  
  1199. `-q'
  1200.      Run quietly; do not print diagnostics.
  1201.  
  1202. `-sSTATE[:REV]'
  1203.      Useful with CVS.  Set the state attribute of the revision REV to
  1204.      STATE.  If REV is a branch number, assume the latest revision on
  1205.      that branch.  If REV is omitted, assume the latest revision on the
  1206.      default branch.  Any identifier is acceptable for STATE.  A useful
  1207.      set of states is `Exp' (for experimental), `Stab' (for stable),
  1208.      and `Rel' (for released).  By default, the state of a new revision
  1209.      is set to `Exp' when it is created.  The state is visible in the
  1210.      output from CVS LOG (*note log::.), and in the `$Log$' and
  1211.      `$State$' keywords (*note Keyword substitution::.).  Note that CVS
  1212.      uses the `dead' state for its own purposes; to take a file to or
  1213.      from the `dead' state use commands like `cvs remove' and `cvs
  1214.      add', not `cvs admin -s'.
  1215.  
  1216. `-t[FILE]'
  1217.      Useful with CVS.  Write descriptive text from the contents of the
  1218.      named FILE into the RCS file, deleting the existing text.  The
  1219.      FILE pathname may not begin with `-'.  If FILE is omitted, obtain
  1220.      the text from standard input, terminated by end-of-file or by a
  1221.      line containing `.' by itself.  Prompt for the text if interaction
  1222.      is possible; see `-I'.  The descriptive text can be seen in the
  1223.      output from `cvs log' (*note log::.).
  1224.  
  1225. `-t-STRING'
  1226.      Similar to `-tFILE'. Write descriptive text from the STRING into
  1227.      the RCS file, deleting the existing text.
  1228.  
  1229. `-U'
  1230.      Set locking to non-strict.  Non-strict locking means that the
  1231.      owner of a file need not lock a revision for checkin.  For use
  1232.      with CVS, strict locking must be set; see the discussion under the
  1233.      `-l' option above.
  1234.  
  1235. `-u[REV]'
  1236.      See the option `-l' above, for a discussion of using this option
  1237.      with CVS.  Unlock the revision with number REV.  If a branch is
  1238.      given, unlock the latest revision on that branch.  If REV is
  1239.      omitted, remove the latest lock held by the caller.  Normally,
  1240.      only the locker of a revision may unlock it.  Somebody else
  1241.      unlocking a revision breaks the lock.  This causes a mail message
  1242.      to be sent to the original locker.  The message contains a
  1243.      commentary solicited from the breaker.  The commentary is
  1244.      terminated by end-of-file or by a line containing `.' by itself.
  1245.  
  1246. `-VN'
  1247.      Emulate RCS version N. Use -VN to make an RCS file acceptable to
  1248.      RCS version N by discarding information that would confuse version
  1249.      N.
  1250.  
  1251. `-xSUFFIXES'
  1252.      Useless with CVS. Use SUFFIXES to characterize RCS files.
  1253.  
  1254.