home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume22 / cvs-berliner / part07 < prev    next >
Encoding:
Internet Message Format  |  1990-06-07  |  44.4 KB

  1. Subject:  v22i021:  Brian Berliner's concurrent RCS system, Part07/07
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4. X-Checksum-Snefru: 5dbeee2d bb9a7889 34c14a7f e6f60bbf
  5.  
  6. Submitted-by: Brian Berliner <berliner@prisma.com>
  7. Posting-number: Volume 22, Issue 21
  8. Archive-name: cvs-berliner/part07
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 7 (of 7)."
  17. # Contents:  man/cvs.man
  18. # Wrapped by rsalz@litchi.bbn.com on Thu May  3 16:59:07 1990
  19. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  20. if test -f 'man/cvs.man' -a "${1}" != "-c" ; then 
  21.   echo shar: Will not clobber existing file \"'man/cvs.man'\"
  22. else
  23. echo shar: Extracting \"'man/cvs.man'\" \(42351 characters\)
  24. sed "s/^X//" >'man/cvs.man' <<'END_OF_FILE'
  25. X.\"
  26. X.\"    $Id: cvs.man,v 1.5 89/11/20 00:11:16 berliner Exp $
  27. X.\"
  28. X.TH CVS L "20 July 1989"
  29. X.\" Full space in nroff; half space in troff
  30. X.de SP
  31. X.if n .sp
  32. X.if t .sp .5
  33. X..
  34. X.SH "NAME"
  35. Xcvs \- Concurrent Versions System
  36. X.SH "SYNOPSIS"
  37. X.B cvs
  38. X[
  39. X.I cvs_options
  40. X]
  41. X.I cvs_command
  42. X[
  43. X.I command_options
  44. X] [
  45. X.I command_args
  46. X]
  47. X.SH "DESCRIPTION"
  48. X.IX "revision control system" "\fLcvs\fR"
  49. X.IX  cvs  ""  "\fLcvs\fP \(em concurrent versions system"
  50. X.IX  "concurrent versions system \(em \fLcvs\fP"
  51. X.IX  "release control system"  "cvs command"  ""  "\fLcvs\fP \(em concurrent versions system"
  52. X.IX  "source control system"  "cvs command"  ""  "\fLcvs\fP \(em concurrent versions system"
  53. X.IX  revisions  "cvs command"  ""  "\fLcvs\fP \(em source control"
  54. X.B cvs
  55. Xis a front end to the
  56. X.BR rcs (l)
  57. Xrevision control system which extends
  58. Xthe notion of revision control from a collection of files in a single
  59. Xdirectory to a hierarchical collection of directories consisting of
  60. Xrevision controlled files.
  61. XThese directories and files can be combined together to form a software
  62. Xrelease.
  63. X.B cvs
  64. Xprovides the functions necessary to manage these software releases and to
  65. Xcontrol the concurrent editing of source files among multiple software
  66. Xdevelopers.
  67. X.LP
  68. XThe following list summarizes some of the strong points of
  69. X.BR cvs :
  70. X.TP
  71. X\(bu
  72. XOnly a single copy of the master sources exist.
  73. XThis copy is called the source ``repository'' and, through administrative
  74. Xactions, contains all the information to extract previous software releases
  75. Xat any time based on either a symbolic revision tag, or a date in the past.
  76. X.TP
  77. X\(bu
  78. XIndividual software developers check out private copies of the sources into
  79. Xtheir personal work space.
  80. XThese private sources can be edited at any time and checked back into the
  81. Xsource repository as a permanent change.
  82. X.B cvs
  83. Xtakes special care to ensure that a file is up-to-date with the current
  84. Xrevision in the source repository before allowing it to be added as a
  85. Xpermanent change.
  86. X.TP
  87. X\(bu
  88. XThere is a facility for software developers to bring their private copies
  89. Xof the sources up-to-date with the currently checked in revisions, while at
  90. Xthe same time preserving any modifications that have been made to their
  91. Xprivate sources.
  92. XThis allows multiple developers to be concurrently working on the same
  93. Xsource files without regard for what the other guy is doing.
  94. X.SP
  95. XNote that this is the biggest change from the way most other revision
  96. Xcontrol systems, like
  97. X.SM RCS
  98. Xor
  99. X.SM SCCS
  100. Xwork, which allow only one developer to ever be changing a file, since the
  101. Xfile must be checked out as ``locked'' for the exclusive use of that person.
  102. X.B cvs
  103. Xinstead never applies an
  104. X.SM RCS
  105. Xlock to a checked out file until the moment before it is to be checked back
  106. Xin as a permanent change.
  107. XConcurrency checks are performed on the soon-to-be checked in file and the
  108. Xfile must be up-to-date before it can be made permanent.
  109. XIn this way,
  110. X.B cvs
  111. Xallows individuals the freedom to change any file at will, and provides the
  112. Xtools necessary to point out, if not resolve, any conflicts that may be
  113. Xgenerated by allowing this extra, and necessary, freedom.
  114. X.TP
  115. X\(bu
  116. X.B cvs
  117. Xhas direct support for tracking source releases from third-party vendors.
  118. XThe
  119. X.BR checkin (l)
  120. Xprogram is used to initially setup the source repository.
  121. XThe branch support of
  122. X.SM RCS
  123. Xis used to build the vendor release as a branch off the main (local)
  124. X.SM RCS
  125. Xtrunk.
  126. XOnce this is done, developers can check out files and make local changes to
  127. Xthe vendor's source distribution.
  128. XThe act of checking in a local change to a vendor's source distribution
  129. Xmoves the
  130. X.SM RCS
  131. Xbranch from tracking the third-party vendor's release to the main (local)
  132. XRCS trunk so that
  133. Xthe local version of the file is used forever more.
  134. X.SP
  135. XWhen a new version of the vendor's source distribution (or even a minor
  136. Xversion consisting of a small subset of files) arrives, the
  137. X.B checkin
  138. Xprogram is used again to add the new vendor release to the already existing
  139. Xsource repository.
  140. XFor files that have not been changed locally, the new file from the
  141. Xvendor becomes the current revision.
  142. XFor files that have been modified locally,
  143. X.B checkin
  144. Xwarns that the file must be merged manually with the new vendor release.
  145. XThe
  146. X.B join
  147. Xcommand of
  148. X.B cvs
  149. Xis a useful tool that aids this manual merge process (see below).
  150. X.TP
  151. X\(bu
  152. XA vendor release or a local release can be given a symbolic tag name that
  153. Xis stored directly in the
  154. X.SM RCS
  155. Xfiles.
  156. XThis tag can be used at any time in the future to get an exact copy of any
  157. Xprevious release.
  158. XWith equal ease, one can also extract an exact copy of the source files as
  159. Xof any arbitrary date in the past as well.
  160. X.TP
  161. X\(bu
  162. XAll changes that are made to the source repository are carefully logged in
  163. Xa file, notesfile, or news database, which can be used to produce release
  164. Xnotices.
  165. X.B cvs
  166. Xcan be configured to send log updates through one or more filter programs,
  167. Xbased on a regular expression match on the directory that is being changed.
  168. XThis allows multiple related or unrelated projects to exist within a single
  169. X.B cvs
  170. Xsource repository tree, with each different project sending their checkin
  171. Xreports to a unique log device for the project.
  172. X.TP
  173. X\(bu
  174. XThere is support for a simple, yet powerful, ``module'' database.
  175. XThis database can be used to apply names to collections of directories and
  176. Xfiles as a matter of convenience when checking out smaller pieces of a
  177. Xlarger software distribution.
  178. XThis allows one to checkout the ``diff'' program, for example, without
  179. Xever requiring the knowledge that the sources to ``diff'' actually reside
  180. Xin the ``bin/diff'' directory.
  181. X.SP
  182. XThe module database also has limited support for an aliasing capability.
  183. XThis is useful for programs that share sources from completely disjoint
  184. Xdirectories.
  185. XThe aliasing feature can also be used to limit a named release to a certain
  186. Xcollection of directories and files, to only work with pieces of the source
  187. Xfound in the entire source repository.
  188. X.TP
  189. X\(bu
  190. XThere is direct support for determining which files have changed since a
  191. Xprevious release, or from a particular date.
  192. XAs well,
  193. X.B cvs
  194. Xcan create a
  195. X.BR patch (l)
  196. Xformat output file which can be used to bring a previously released
  197. Xsoftware distribution current with the newest release.
  198. XOne can create a patch file between two tagged revisions, between a
  199. Xrevision and some date in the past, between two dates, or between a date or
  200. Xrevision and the current ``head'' revision.
  201. X.LP
  202. XThe remainder of this manual page will document how all these actions can
  203. Xbe done using the
  204. X.B cvs
  205. Xprogram.
  206. X.SH "OPTIONS"
  207. X.B cvs
  208. Xaccepts a number of options that override the current setting of the
  209. Xrecognized environment variables.
  210. X.TP
  211. X.B \-r
  212. XChecks out files read-only.
  213. XSame effect as if the
  214. X.SM CVSREAD
  215. Xenvironment variable is set.
  216. X.TP
  217. X.B \-w
  218. XChecks out files read-write (default).
  219. XOverrides the setting of the
  220. X.SM CVSREAD
  221. Xenvironment variable.
  222. X.TP
  223. X.B \-v
  224. XOutputs version and copyright information for
  225. X.BR cvs ,
  226. Xthen exits.
  227. X.TP
  228. X\fB-d\fP \fICVS_root_directory\fP
  229. XUse
  230. X.I CVS_root_directory
  231. Xas the root directory pathname of the master
  232. X.SM RCS
  233. Xsource repository.
  234. XOverrides the setting of the
  235. X.SM CVSROOT
  236. Xenvironment variable.
  237. X.TP
  238. X\fB-b\fP \fIbindir\fP
  239. XUse
  240. X.I bindir
  241. Xas the directory to find
  242. X.SM RCS
  243. Xprograms within.
  244. XOverrides the setting of the
  245. X.SM RCSBIN
  246. Xenvironment variable.
  247. X.TP
  248. X\fB-e\fP \fIeditor\fP
  249. XUse
  250. X.I editor
  251. Xfor editing revision log information.
  252. XOverrides the setting of the
  253. X.SM EDITOR
  254. Xenvironment variable.
  255. X.TP
  256. X.B \-H
  257. XDisplays usage information about the specified
  258. X.I cvs_command
  259. Xwithout actually executing said command.
  260. X.SH "USAGE"
  261. XA
  262. X.I cvs_command
  263. Xmust be specified to
  264. X.B cvs
  265. Xwhich drives the specific release control function that is performed.
  266. XEach
  267. X.B cvs
  268. Xcommand accepts options and arguments unique to the command.
  269. XThe usage statements for each command can be displayed by specifying the
  270. X.B \-H
  271. Xoption to the command.
  272. X.LP
  273. XThe available commands are listed below along with a description of their
  274. Xfunction.
  275. XCommand options unique to the command are described in this section with
  276. Xthe command description.
  277. XCommon command options are described fully in the following section.
  278. X.TP
  279. X\fBcheckout\fP [\fB-Qqlfnp\fP] [\fB-c\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fImodules\fP...
  280. XChecks out the source files defined by
  281. X.IR modules .
  282. XThis command is used to get a private copy of the current sources that can
  283. Xbe edited and processed by most of the other
  284. X.B cvs
  285. Xcommands.
  286. X.B checkout
  287. Xmust be done before many of the other
  288. X.B cvs
  289. Xcommands are used, since most of them operate on checked out sources.
  290. X.SP
  291. XDepending on the
  292. X.I modules
  293. Xspecified,
  294. X.B checkout
  295. Xmay recursively create directories and populate them with the appropriate
  296. Xsource files.
  297. XThese source files can then be edited at any time (regardless of whether
  298. Xother software developers are editing their private copies of the sources),
  299. Xupdated to include new changes checked into the source repository, or
  300. Xcommitted as a permanent change to the
  301. X.SM RCS
  302. Xrepository.
  303. X.SP
  304. XNote that
  305. X.B checkout
  306. Xis used to create directories.
  307. XThe top-level directory created is always added to the working directory
  308. Xwhere
  309. X.B checkout
  310. Xis invoked, and usually has the same name as the specified
  311. X.IR module .
  312. XIn the case of a
  313. X.I module
  314. Xalias, the created sub-directory may have a different name, but you can be
  315. Xsure that it will be a sub-directory, and that
  316. X.B checkout
  317. Xwill show the relative path leading to each file as it is extracted into
  318. Xyour private work area, unless the
  319. X.B \-Q
  320. Xoption is specified.
  321. X.SP
  322. XRunning
  323. X.B checkout
  324. Xon a directory that was already built by
  325. X.B checkout
  326. Xis also OK.
  327. XThis has the same effect as specifying the
  328. X.B \-d
  329. Xoption to the
  330. X.B update
  331. Xcommand described below.
  332. X.SP
  333. XThe
  334. X.B \-c
  335. Xoption ``cat''s the module file, sorted, to the standard output, and does
  336. Xnot cause any files or directories to be checked out.
  337. X.SP
  338. X.B co
  339. Xcan be specified instead of
  340. X.B checkout
  341. Xto save some typing.
  342. XSee the
  343. X.SM MODULES
  344. Xsection below for a complete description of modules.
  345. X.TP
  346. X\fBupdate\fP [\fB-Qqlfp\fP] [\fB-d\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  347. XAfter
  348. X.B checkout
  349. Xis run, directories and files have been extracted from the source
  350. Xrepository for your personal editing.
  351. XAt any time that is convenient in your development process, the
  352. X.B update
  353. Xcommand can be run
  354. X.I "from within the directory that contains the checked out sources"
  355. Xto bring those sources current with any revisions that have been checked
  356. Xinto the source repository since they were last checked out or
  357. X.BR update d.
  358. X.SP
  359. XNormally,
  360. X.B update
  361. Xbrings the current directory up-to-date, then descends any sub-directories,
  362. Xbringing them up-to-date as well.
  363. XThis can be overridden by specifying a list of files that should only be
  364. Xupdated, or by using the
  365. X.B \-l
  366. Xoption which causes
  367. X.B update
  368. Xto only process the current directory, ignoring any sub-directories.
  369. X.SP
  370. XIf any special options were initially specified to
  371. X.B checkout
  372. Xwhen the source were initially checked out, these exact options should be
  373. Xspecified to
  374. X.B update
  375. Xas well to keep the sources consistent with the way they were originally
  376. Xchecked out.
  377. XFor example, checking out sources by specifying the ``\fB-r V1_0\fP''
  378. Xoption will check out the revisions associated with the
  379. X.B V1_0
  380. Xrelease tag.
  381. XA subsequent
  382. X.B update
  383. Xthat does \fInot\fP specify this exact
  384. X.B \-r
  385. Xoption as well will revert to updating the sources with the current
  386. Xrevisions as stored in the source repository, rather than those revisions
  387. Xassociated with the
  388. X.B V1_0
  389. Xrelease.
  390. X.SP
  391. XFor a complete description of the algorithm that
  392. X.B update
  393. Xuses to bring your source up-to-date, refer to the
  394. X.SM "\fBCONFLICT RESOLUTION\fP"
  395. Xsection below.
  396. X.TP
  397. X\fBcommit\fP [\fB-fn\fP] [-a] [\fB-m\fP '\fIlog_message\fP'] [\fB-r\fP \fIrevision\fP] [\fIfiles...\fP]
  398. XAt any point, changes that you have made to your private copies of the
  399. Xsources may be
  400. X.BR commit ted
  401. Xto the source repository as a permanent change.
  402. X.B commit
  403. Xdoes not do a recursive
  404. X.BR commit ,
  405. Xso each individual directory must be checked in separately, even if the
  406. Xchanges were related.
  407. X.SP
  408. X.B commit
  409. Xverifies that the selected files are up-to-date with the current revisions
  410. Xin the source repository and will abort without committing if any of the
  411. Xspecified files must be made current first with the
  412. X.B update
  413. Xcommand.
  414. XWith the
  415. X.B \-a
  416. Xoption, all relevant files of the current directory are examined.
  417. X.B commit
  418. Xis careful to only check in those files that have really changed.
  419. XNote that
  420. X.B commit
  421. Xdoes not
  422. X.B update
  423. Xthe out-of-date files for you, but rather leaves that for you to do when
  424. Xthe time is right.
  425. X.SP
  426. XAn
  427. X.SM RCS
  428. Xidentification string ($\&Id\&) must exist in the modified files that are
  429. Xto be checked in.
  430. XIf the identification string cannot be found in any of the files,
  431. X.B commit
  432. Xwill prompt you for verification before proceeding.
  433. XThis prompt is bypassed if the
  434. X.B \-f
  435. Xoption has been specified.
  436. X.SP
  437. XWhen all is well, an editor is invoked for the purpose of entering a log
  438. Xmessage that will be written to one or more logging programs and placed in the
  439. X.SM RCS
  440. Xsource repository file.
  441. XThe log message may be specified on the command line with the
  442. X.B \-m
  443. Xoption, thus suppressing the editor invocation.
  444. X.SP
  445. X.B ci
  446. Xcan be specified instead of
  447. X.B commit
  448. Xto save some typing.
  449. X.TP
  450. X\fBdiff\fP [\fIrcsdiff_options\fP] [\fIfiles...\fP]
  451. XYour checked out files can be diffed against the original revisions they
  452. Xwere based upon with the
  453. X.B diff
  454. Xcommand.
  455. XSee
  456. X.BR rcsdiff (l)
  457. Xfor a list of accepted options.
  458. XIf no files are specified,
  459. X.B diff
  460. Xwill only ``diff'' those files in the current directory that
  461. Xare different than the checked out revision (i.e. ones that
  462. X.I you
  463. Xhave changed), or that are different than a specified revision.
  464. XIf files are specified, only those files are diffed.
  465. X.SP
  466. XTwo revisions may be specified as well.
  467. XIn which case your private sources are not diffed at all.
  468. XInstead, the two revisions specified are diffed.
  469. X.TP
  470. X\fBlog\fP [\fIrlog_options\fP] [\fIfiles...\fP]
  471. XTo display revision log information equivalent to the
  472. X.BR rlog (l)
  473. Xprogram, the
  474. X.B log
  475. Xcommand is used.
  476. XSee
  477. X.BR rlog (l)
  478. Xfor a list of accepted options.
  479. XIf no files are specified,
  480. X.B log
  481. Xwill run an
  482. X.B rlog
  483. X(with the arguments asa specified)
  484. Xon every file under
  485. X.B cvs
  486. Xcontrol in the current directory.
  487. XIf files are specified, the log information of only those files is displayed.
  488. X.TP
  489. X\fBstatus\fP [\fIfiles...\fP]
  490. XDisplays three lines of information for each of its argument files, one for
  491. Xthe user file (line 1), one for the newest
  492. X.SM RCS
  493. Xfile showing the current ``head'' revision number (line 3),
  494. Xand one for the
  495. X.SM RCS
  496. Xfile both derive from showing the date it was last updated (line 2).
  497. X.TP
  498. X\fBadd\fP [\fB-m\fP '\fImessage\fP'] \fIfiles...\fP
  499. XTo permanently create a new file or directory in the
  500. X.SM RCS
  501. Xsource repository, the
  502. X.B add
  503. Xcommand is used.
  504. XThe files or directories specified to
  505. X.B add
  506. Xmust already exist in the current directory (which must have been created
  507. Xwith the
  508. X.B checkout
  509. Xcommand).
  510. XFor adding a whole new directory hierarchy to the source repository
  511. Xthat was received from a third-party vendor, see the
  512. X.BR checkin (l)
  513. Xprogram for how to do this.
  514. X.SP
  515. XIf the argument refers to an immediate sub-directory, the directory is
  516. Xcreated at the correct place in the
  517. X.SM RCS
  518. Xsource repository and the necessary
  519. X.B cvs
  520. Xadministration files are created within the argument directory.
  521. XIt is not considered an error if the
  522. X.SM RCS
  523. Xsource repository directory already exists.
  524. XThus, to add a directory to your private sources that was created after you
  525. Xhad done your
  526. X.B checkout
  527. Xof the sources, you can do the following:
  528. X.SP
  529. X.in +1i
  530. X.ft B
  531. X.nf
  532. Xexample% mkdir new_directory
  533. Xexample% cvs add new_directory
  534. Xexample% cvs update new_directory
  535. X.fi
  536. X.ft P
  537. X.in -1i
  538. X.SP
  539. XFor each added file, a description of the file's purpose is read from the
  540. Xterminal in
  541. X.SM RCS
  542. Xfashion, unless the
  543. X.B \-m
  544. Xoption is specified, in which case the argument
  545. X.I message
  546. Xis used instead.
  547. XThis description will become a permanent part of the created
  548. X.SM RCS
  549. Xfile.
  550. X.SP
  551. XThe added files are not placed in the
  552. X.SM RCS
  553. Xsource repository until they are
  554. X.BR commit ted
  555. Xas a permanent change.
  556. XDoing an
  557. X.B add
  558. Xon a file that has been removed with the
  559. X.B remove
  560. Xcommand will resurrect the file, unless it has already been 
  561. X.BR commit ted.
  562. X.TP
  563. X\fBremove\fP \fIfiles...\fP
  564. XMarks the specified files as removed on purpose from the current directory
  565. Xin the source repository.
  566. XThe specified files must no longer exist in the current directory when the
  567. X.B remove
  568. Xcommand is issued.
  569. XThe files are not actually removed until they are
  570. X.BR commit ted,
  571. Xat which point their respective
  572. X.SM RCS
  573. Xfiles in the source depository are
  574. X.I moved
  575. Xinto the
  576. X.I Attic
  577. Xdirectory within the source repository.
  578. XTo restore a committed removed file to the present version requires an
  579. Xadministrator to physically
  580. X.I move
  581. Xthe
  582. X.SM RCS
  583. Xfile out of the
  584. X.I Attic
  585. Xand back into its parent directory.
  586. X.TP
  587. X\fBjoin\fP [\fB-Qqf\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  588. XThe intended purpose of the
  589. X.B join
  590. Xcommand is to perform the logical merge of a new vendor release installed
  591. Xwith the
  592. X.BR checkin (l)
  593. Xcommand with locally modified files from a previous vendor release.
  594. XThe
  595. X.B checkin
  596. Xprogram will inform you that a vendor file has been locally modified and it
  597. Xis up to
  598. X.I you
  599. Xto resolve the two branches of development (local and vendor) into a
  600. Xunified revision that will be
  601. X.BR commit ted
  602. Xas a permanent change to the source repository on the main (local) trunk.
  603. XThe
  604. X.B join
  605. Xcommand will usually be used with the
  606. X.B \-r
  607. Xoption to specify the vendor tag that is to be merged with the local
  608. Xchanges.
  609. XThis merge is handled by
  610. X.SM RCS
  611. Xand the resultant file is placed in the current directory (within your
  612. Xprivate work space) and any conflicts during the merge are displayed.
  613. X.SP
  614. XAfter correcting any conflicts during the merge,
  615. X.B commit
  616. Xthe joined file as usual with a modified file, and the result (with a bit
  617. Xof work, perhaps) should be a working combination of the local changes and
  618. Xthe vendor changes.
  619. X.LP
  620. XThe following commands do their work entirely within the
  621. X.SM RCS
  622. Xsource repository and, as such, do not require that a
  623. X.B checkout
  624. Xbe done first.
  625. XThese commands are usually of interest only to the person responsible for
  626. Xthe release procedures of a software package.
  627. XSee the
  628. X.SM "\fBMODULE SUPPORT\fP"
  629. Xsection below for a full description of what a
  630. X.I module
  631. Xis.
  632. X.TP
  633. X\fBpatch\fP [\fB-Qqlf\fP] [\fB-s\fP|\fB-t\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP]] \fImodules...\fP
  634. XBuilds a Larry Wall format
  635. X.BR patch (l)
  636. Xfile between two releases that can be fed directly into the
  637. X.B patch
  638. Xprogram to bring an old release up-to-date with the new release.
  639. XThe diff output is sent to the standard output device.
  640. XNote that any combination of one or two revisions or dates may be specified.
  641. XIf only one revision or date is specified, the
  642. X.B patch
  643. Xis made between that revision or date and the current ``head'' revisions in
  644. Xthe
  645. X.SM RCS
  646. Xfile.
  647. X.SP
  648. XNote that if the software release that is being
  649. X.BR patch ed
  650. Xis contained in more than one directory, then it may be necessary to
  651. Xspecify the
  652. X.B \-p
  653. Xoption to the
  654. X.BR patch (l)
  655. Xcommand when patching the old sources, so that
  656. X.BR patch (l)
  657. Xis able to find the files that are located in other directories.
  658. X.SP
  659. XIf the
  660. X.B \-s
  661. Xoption is specified, a patch file is not produced.
  662. XInstead, a description of the changed or added files between the two
  663. Xreleases is sent to the standard output device.
  664. XThis is useful for finding out, for example, which files have changed
  665. Xbetween two dates or revisions.
  666. X.SP
  667. XIf the
  668. X.B \-t
  669. Xoption is specified, a diff of the top two revisions is sent to the
  670. Xstandard output device.
  671. XThis is most useful for seeing what the last change to a file was.
  672. X.TP
  673. X\fBtag\fP [\fB-Qqlfn\fP] [\fB-d\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIsymbolic_tag\fP \fImodules...\fP
  674. XSources in the repository can have a symbolic tag associated with them.
  675. XThis allows one to ``snapshot'' the current sources when the software
  676. Xfreeze date of a project arrives, and as bugs are fixed after the freeze
  677. Xdate, only those changed sources that are to be part of the release need be
  678. Xre-tagged.
  679. X.SP
  680. XThe symbolic tags are meant to permanently record which revisions of which
  681. Xfiles were used in creating a software distribution.
  682. XThe functionality provided with the
  683. X.B checkout
  684. Xand
  685. X.B update
  686. Xcommands allow one to extract an exact copy of this release at any time in
  687. Xthe future, regardless of whether files have been
  688. X.BR add ed
  689. Xor
  690. X.BR remove d
  691. Xsince the release was
  692. X.BR tag ged.
  693. XSo in general, these symbolic names of software distributions should not be
  694. Xremoved, but the
  695. X.B \-d
  696. Xoption is provided as a means to remove completely obsolete symbolic names
  697. Xif necessary (as might be the case for an Alpha release, say).
  698. XIt is also possible to only tag files that already contain a certain tag.
  699. XThis method would be used to rename a tag \(em tag only the files with the
  700. Xold tag, then delete the old tag leaving the new tag which would tag the
  701. Xexact same files as the old tag.
  702. X.SH "COMMAND OPTIONS"
  703. XThe following options are common to more than one of the
  704. X.B cvs
  705. Xcommands, and are explained in detail here once, for brevity.
  706. X.TP
  707. X.B \-Q
  708. XCauses the command to be
  709. X.I really
  710. Xquiet.
  711. X.TP
  712. X.B \-q
  713. XCauses the command to be somewhat quiet.
  714. X.TP
  715. X.B \-l
  716. XCauses the command to not be recursive.
  717. XOnly the specified directory will be processed.
  718. X.TP
  719. X.B \-f
  720. XForces the specified tag to match.
  721. XNormally, when a tag is specified with the
  722. X.B \-r
  723. Xoption and the
  724. X.SM RCS
  725. Xfile does not contain the tag, the ``head'' revision for the
  726. X.SM RCS
  727. Xfile is returned.
  728. XWhen the
  729. X.B \-f
  730. Xoption is specified, any
  731. X.SM RCS
  732. Xfile that does not contain the specified tag is ignored.
  733. XThis is useful for extracting an exact copy of a previously tagged release.
  734. X.TP
  735. X.B \-n
  736. XCauses the command
  737. X.I not
  738. Xto run any
  739. X.BR checkout / commit / tag
  740. Xprogram as specified in the modules database.
  741. X.TP
  742. X.B \-p
  743. XOn
  744. X.BR checkout " or " update ,
  745. Xprune directories that are empty after being updated.
  746. XThis is useful for extracting an exact copy of a previously release,
  747. Xespecially when combined with the
  748. X.B \-f
  749. Xoption.
  750. X.TP
  751. X\fB-r\fP \fItag\fP
  752. XCauses the command to use the revision specified by the
  753. X.I tag
  754. Xargument instead of the usual ``head'' revision.
  755. XThe
  756. X.I tag
  757. Xcan be either a symbolic or numeric tag, in
  758. X.SM RCS
  759. Xfashion,
  760. Xexcept in the case of the
  761. X.B commit
  762. Xcommand, in which case the
  763. X.I tag
  764. Xmust be a numeric one.
  765. XSpecifying the
  766. X.B \-q
  767. Xoption along with the
  768. X.B \-r
  769. Xoption is often useful, to suppress the warning messages when the
  770. X.SM RCS
  771. Xfile does not contain the specified tag.
  772. X.TP
  773. X\fB-D\fP \fIdate_spec\fP
  774. XCauses the command to use the revision that was checked in at or before the
  775. Xspecified
  776. X.I date_spec
  777. Xargument.
  778. XThe
  779. X.I date_spec
  780. Xis a single argument, free form date description specifying a date in the
  781. Xpast.
  782. XThis option implies the
  783. X.B \-f
  784. Xoption.
  785. XSee the
  786. X.SM "\fBEXAMPLES\fP"
  787. Xsection for useful examples of how the
  788. X.B \-D
  789. Xoption can be used.
  790. X.SH "CONFLICT RESOLUTION"
  791. XThe algorithm used by
  792. X.BR checkout " and " update
  793. Xis described in this section.
  794. XThe output generated, unless the
  795. X.B \-Q
  796. Xoption is specified, consists of the following lines to describe exactly
  797. Xhow your private sources are being brought up-to-date with the
  798. X.SM RCS
  799. Xsource repository.
  800. X.TP
  801. X\fBU\fP \fIfile\fP
  802. XThe specified file was copied directly out of its respective
  803. X.SM RCS
  804. Xfile from the source repository.
  805. XThis is done because the condition of your user file matches one of the
  806. Xfollowing:
  807. X.in 1.5i
  808. X.ti -.5i
  809. X\(bu    The user file did not exist in your private sources, whether it was
  810. Xbecause you removed it, or because someone added it to the source repository.
  811. X.ti -.5i
  812. X\(bu    The file did exist, but you did not change it and a different
  813. Xrevision was matched in the
  814. X.SM RCS
  815. Xfile, be it by the default ``head'' match, or via the
  816. X.B \-r
  817. Xor
  818. X.B \-D
  819. Xoptions.
  820. X.TP
  821. X\fBM\fP \fIfile\fP
  822. XThe specified file has been modified locally by you.
  823. XUse the
  824. X.B diff
  825. Xcommand to see the actual changes that you have made.
  826. X.TP
  827. X\fBA\fP \fIfile\fP
  828. XThe specified file has been added to your private copy of the sources, and
  829. Xwill be added to the
  830. X.SM RCS
  831. Xsource repository when the file is
  832. X.BR commit ted.
  833. XThis is a reminder to you that the file needs to be committed.
  834. X.TP
  835. X\fBR\fP \fIfile\fP
  836. XThe specified file has been removed from your private copy of the sources, and
  837. Xwill be removed from the
  838. X.SM RCS
  839. Xsource repository when the file is
  840. X.BR commit ted.
  841. XThis is a reminder to you that the file needs to be committed.
  842. X.TP
  843. X\fBC\fP \fIfiles\fP
  844. XThe specified file was modified locally by you, and while doing the
  845. X.BR update ,
  846. Xit was determined that a later revision had been checked into the respective
  847. X.SM RCS
  848. Xfile.
  849. XAs a result,
  850. X.B cvs
  851. Xperforms an
  852. X.BR rcsmerge (l),
  853. Xwhich combines the changes made to the
  854. X.SM RCS
  855. Xfile with the changes that you have made to your version of the file.
  856. XIf there were any lines in conflict during the merge (i.e. the other
  857. Xdeveloper changed the same line that you have changed), then the
  858. X.B C
  859. Xis displayed to show that the file must be manually corrected.
  860. X.SP
  861. XThis merge process delimits the lines in conflict using lines beginning with
  862. X``>>>>>>>'' and ``<<<<<<<'', so it is easy to find the conflicts within
  863. Xyour merged file.
  864. XNote that your original, modified file is preserved in a backup file within
  865. Xthe same directory that the file existed.
  866. XThe backup file has the form ``\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP'',
  867. Xwhere the
  868. X.I version
  869. Xis the
  870. X.SM RCS
  871. Xrevision that your modified file was based upon.
  872. XNote that some systems automatically purge files that begin with
  873. X.B .#
  874. Xif they have not been accessed in roughly three days.
  875. XThus, if you intend to keep a copy of your original file, I strongly
  876. Xsuggest that it be renamed.
  877. X.SP
  878. XIf the merge process proceeded without any conflicts, an
  879. X.B M
  880. Xis displayed instead of a
  881. X.BR C .
  882. XIt is still a wise idea to
  883. X.BR diff (1)
  884. Xthe original version before the merge, contained in the backup file, with
  885. Xthe merged version to verify that the merged changes make sense with your
  886. Xchanges.
  887. X.SH "MODULE SUPPORT"
  888. XThe
  889. X.BR checkout ", " patch ", and " tag
  890. Xcommands all accept
  891. X.I module
  892. Xnames as arguments.
  893. XThe module database is stored as an
  894. X.BR ndbm (3)
  895. Xformat database within the
  896. X.SM CVSROOT.adm
  897. Xdirectory of your
  898. X.SM CVSROOT
  899. Xsource repository.
  900. XThe remainder of this section considers how the
  901. X.B checkout
  902. Xcommand operates on the modules database.
  903. XThe operations for the other commands that use the database are similar,
  904. Xexcept that they do not create any files or directories in your work space, as
  905. X.B checkout
  906. Xdoes.
  907. X.LP
  908. XThe above commands search the module database for each module argument.
  909. XIf the module database does not exist, or if the argument does not have a
  910. Xmatching key in the module database, the argument is processed as follows:
  911. X.TP
  912. X1.
  913. XThe value of the
  914. X.SM CVSROOT
  915. Xenvironment variable is prepended to the argument to form a full path name.
  916. X.TP
  917. X2.
  918. XIf the full path name does not exist, either as a directory or as a file
  919. Xwith an
  920. X.SM RCS
  921. X.B ,v
  922. Xextension, the argument module cannot be resolved and the command
  923. Xcontinues, processing any remaining argument modules.
  924. X.TP
  925. X3.
  926. XIf the full path name refers to a directory, the directories leading up to
  927. Xthe directory are created, starting from the current working directory, and
  928. Xthe directory is populated with the correct files, ready for your editing
  929. Xsatisfaction.
  930. XIf available, and the
  931. X.B \-l
  932. Xoption was not specified, sub-directories are created and populated as
  933. Xwell, until the entire directory hierarchy of the specified module argument
  934. Xis reconstructed in your work space.
  935. X.TP
  936. X4.
  937. XIf the full path name, combined with an
  938. X.SM RCS
  939. X.B ,v
  940. Xsuffix exists, only that file is extracted.
  941. XThe directories leading up to where the argument module resides are
  942. Xcreated, if necessary, and the leaf directory is populated with the single
  943. Xsource file.
  944. X.LP
  945. XIt should be clear from reading the above algorithm that the module
  946. Xdatabase is not required to extract or process whole directory hierarchies,
  947. Xor even individual files.
  948. XHowever, the addition of the module database allows a high degree of
  949. Xflexibility to be added to the structure or naming of pieces of software
  950. Xwithin the
  951. X.SM CVSROOT
  952. Xsource hierarchy.
  953. XThe easiest way to demonstrate the usefulness of the module database is by
  954. Xexample.
  955. XAnd so, one follows:
  956. X.LP
  957. X.RS
  958. X.ne 42
  959. X.nf
  960. X#
  961. X# Sample CVS Modules file
  962. X#
  963. X# Three different line formats are valid:
  964. X#    key     -a    aliases...
  965. X#    key [options] directory
  966. X#    key [options] directory files...
  967. X#
  968. X# Where "options" are composed of:
  969. X#    -i prog        Run "prog" on checkin of files
  970. X#    -o prog        Run "prog" on "checkout" of files
  971. X#    -t prog        Run "prog" on tagging of files
  972. X#
  973. X
  974. X# Convenient aliases
  975. Xworld        -a .
  976. X
  977. X# CVSROOT.adm support
  978. XCVSROOT    -i /usr/local/bin/mkmodules CVSROOT.adm
  979. XCVSROOT.adm    -i /usr/local/bin/mkmodules CVSROOT.adm
  980. Xmodules        -i /usr/local/bin/mkmodules CVSROOT.adm modules
  981. Xloginfo        -i /usr/local/bin/mkmodules CVSROOT.adm loginfo
  982. X
  983. X# The "sys" entry exists only to make symbolic links after checkout
  984. Xsys        -o sys/tools/make_links sys
  985. X
  986. X# Sub-directories of "bin"
  987. Xawk        bin/awk
  988. Xcsh        bin/csh
  989. Xdiff        bin/diff
  990. Xmake        bin/make
  991. Xsed        bin/sed
  992. Xsh        bin/sh
  993. X
  994. X# Programs that live in "bin"
  995. Xcat        bin Makefile cat.c
  996. Xchgrp        bin Makefile chgrp.c
  997. Xchmod        bin Makefile chmod.c
  998. Xcmp        bin Makefile cmp.c
  999. Xcp        bin Makefile cp.c
  1000. Xdate        bin Makefile date.c
  1001. Xdd        bin Makefile dd.c
  1002. X.fi
  1003. X.RE
  1004. X.LP
  1005. XThe format of the
  1006. X.I modules
  1007. Xfile is also described in the above example.
  1008. XThe
  1009. X.B \-a
  1010. Xoption in the database indicates that the key is an alias, and that the
  1011. Xright-hand side of the alias is to be interpreted by the command
  1012. X.I exactly
  1013. Xas if it had been specified as arguments on the command line for the command.
  1014. XThe
  1015. X.B \-o
  1016. Xoption indicates that the specified program is to be run on
  1017. X.BR checkout .
  1018. XThe key for the entry is passed as the sole argument to the program.
  1019. XThe
  1020. X.B \-i
  1021. Xoption indicates that the specified program is to be run on
  1022. X.BR commit .
  1023. XThe full pathname of the respective source repository directory
  1024. Xis passed as the sole argument to the program.
  1025. XThe
  1026. X.B \-t
  1027. Xoption indicates that the specified program is to be run on
  1028. X.BR tag .
  1029. XThe key for the entry is passed as the sole argument to the program.
  1030. X.LP
  1031. XAs an example, the command
  1032. X.SP
  1033. X.in +1i
  1034. X.ft B
  1035. X.nf
  1036. Xexample% cvs checkout awk
  1037. X.fi
  1038. X.ft P
  1039. X.in -1i
  1040. X.SP
  1041. Xwill create the ``awk'' directory in your current working directory, if
  1042. Xnecessary, and populate it with the current revisions of the
  1043. Xfiles in the ``\c 
  1044. X.SM $CVSROOT\c
  1045. X/bin/awk'' directory.
  1046. XThe command
  1047. X.SP
  1048. X.in +1i
  1049. X.ft B
  1050. X.nf
  1051. Xexample% cvs checkout date
  1052. X.fi
  1053. X.ft P
  1054. X.in -1i
  1055. X.SP
  1056. Xwill create the ``date'' directory and populate with exactly the two files
  1057. X``Makefile'' and ``date.c'' from the ``\c
  1058. X.SM $CVSROOT\c
  1059. X/bin/awk'' directory.
  1060. X.SH "VENDOR BRANCH SUPPORT"
  1061. XThe branch support of
  1062. X.SM RCS
  1063. Xis used to provide a convenient method of tracking the changes
  1064. Xmade to a vendor's source distribution.
  1065. XWhen a source distribution is received from a vendor, the first step is to
  1066. Xrun the
  1067. X.BR checkin (l)
  1068. Xprogram to place the vendor's files under
  1069. X.SM CVS
  1070. Xcontrol.
  1071. X.BR checkin (l)
  1072. Xarranges that the
  1073. X.SM RCS
  1074. Xfiles produced from the vendor's source distribution are initially setup to
  1075. Xtrack the 1.1.1 branch of the
  1076. X.SM RCS
  1077. Xfile.
  1078. XWhen a
  1079. X.B commit
  1080. Xis done to one of these files, making permanent some local change, the
  1081. X.SM RCS
  1082. Xfile is changed to track the normal ``trunk'' branch, continuing the local
  1083. Xchanges to the vendor's sources.
  1084. X.LP
  1085. XWhen a new version of the vendor's source distribution is received,
  1086. X.B checkin
  1087. Xis used again to add the new files to
  1088. X.SM CVS.
  1089. X.B checkin
  1090. Xagain adds the files to the (now already existing) 1.1.1 branch of the
  1091. X.SM RCS
  1092. Xfile.
  1093. XThis time, however,
  1094. X.B checkin
  1095. Xissues a warning when a new version of a locally modified file is updated
  1096. Xby the vendor's source distribution.
  1097. XIt is your responsibility to then use the
  1098. X.B join
  1099. Xcommand of
  1100. X.B cvs
  1101. Xto merge the vendor's changes with your local changes.
  1102. XSee the description of the
  1103. X.B join
  1104. Xcommand above.
  1105. X.LP
  1106. XThe
  1107. X.B \-r
  1108. Xand
  1109. X.B \-D
  1110. Xoptions of the
  1111. X.B checkout
  1112. Xand
  1113. X.B update
  1114. Xcommands work ``as expected'' with the vendor branch support.
  1115. XIn particular, the
  1116. X.B \-D
  1117. Xoption to check out based on a date in the past follows the current default
  1118. Xbranch to find a match for the specified date.
  1119. XIf a match cannot be found on the default branch, the 1.1.1 vendor
  1120. Xbranch is searched.
  1121. XThis allows checking out based on a date to work regardless of when
  1122. Xlocal changes are made to the file.
  1123. X.SH "LOGGING SUPPORT"
  1124. XWhen
  1125. X.BR commit ting
  1126. Xa change to the source repository, a configurable logging support file,
  1127. X.IR loginfo ,
  1128. Xis consulted in the $\c
  1129. X.SM CVSROOT\c
  1130. X/\c
  1131. X.SM CVSROOT.adm
  1132. Xdirectory.
  1133. XAn example of the file is as follows:
  1134. X.LP
  1135. X.RS
  1136. X.ne 22
  1137. X.nf
  1138. X# The "loginfo" file is used to control where "cvs commit"
  1139. X# log information is sent.  The first entry on a line is a
  1140. X# regular expression which is tested against the directory
  1141. X# that the change is being made to, relative to the
  1142. X# $CVSROOT.  If a match is found, then the remainder of the
  1143. X# line is a filter program that should expect log information
  1144. X# on its standard input.
  1145. X# 
  1146. X# The filter program may use one and only one % modifier (ala
  1147. X# printf).  If %s is specified in the filter program, a brief
  1148. X# title is included (enclosed in single quotes) showing the
  1149. X# modified file names.
  1150. X# 
  1151. X# If the repository name does not match any of the regular
  1152. X# expressions in this file, the "DEFAULT" line is used, if it
  1153. X# is specified.
  1154. X# 
  1155. XDEFAULT    /usr/local/bin/nfpipe -t %s utils.updates
  1156. X^diag        /usr/local/bin/nfpipe -t %s diag.updates
  1157. X^local        /usr/local/bin/nfpipe -t %s local.updates
  1158. X^perf        /usr/local/bin/nfpipe -t %s perf.updates
  1159. X^sys        /usr/local/bin/nfpipe -t %s kernel.updates
  1160. X.fi
  1161. X.RE
  1162. X.LP
  1163. XIn addition, ``ALL'' can be specified as a special regular expression which
  1164. Xalways matches, but does not change the behaviour of when the ``DEFAULT''
  1165. Xbranch is taken.
  1166. XAll matches for the regular expression are executed.
  1167. XThis logging feature allows for multiple groups and logging programs to
  1168. Xshare a single
  1169. X.SM CVS
  1170. Xsource repository.
  1171. X.SH "EXAMPLES"
  1172. XUsing the example
  1173. X.I modules
  1174. Xand
  1175. X.I loginfo
  1176. Xfiles shown above, this section shows some sample commands and describes
  1177. Xtheir functions.
  1178. X.SP
  1179. X.in +1i
  1180. X.ft B
  1181. X.nf
  1182. Xexample% cvs checkout csh
  1183. Xexample% cd csh
  1184. Xexample% make
  1185. X.fi
  1186. X.ft P
  1187. X.in -1i
  1188. X.SP
  1189. XThis command retrieves the current revision of the ``csh'' sources and
  1190. Xplaces them within the ``csh'' directory.
  1191. XThe ``make'' command within that directory will then build the ``csh''
  1192. Xexecutable.
  1193. X.SP
  1194. X.in +1i
  1195. X.ft B
  1196. X.nf
  1197. Xexample% cvs checkout -rSunOS csh
  1198. Xexample% cd csh
  1199. Xexample% make
  1200. X.fi
  1201. X.ft P
  1202. X.in -1i
  1203. X.SP
  1204. XThese commands get the current SunOS revision of ``csh'' and builds the
  1205. Xexecutable.
  1206. X.SP
  1207. X.in +1i
  1208. X.ft B
  1209. X.nf
  1210. Xexample% cvs checkout date
  1211. Xexample% cd date
  1212. Xexample% make date
  1213. X.fi
  1214. X.ft P
  1215. X.in -1i
  1216. X.SP
  1217. XThese commands checkout the current revision of the ``date'' command, along
  1218. Xwith the Makefile that is required to build the ``date'' executable.
  1219. XThe ``make'' command includes the target ``date'', since this Makefile is
  1220. Xused to build much more than just ``date'' by default.
  1221. X.SP
  1222. X.in +1i
  1223. X.ft B
  1224. X.nf
  1225. Xexample% cvs checkout -q sys
  1226. X.fi
  1227. X.ft P
  1228. X.in -1i
  1229. X.SP
  1230. XGets a copy of the current kernel sources, including the entire kernel
  1231. Xdirectory hierarchy.
  1232. XThe
  1233. X.B \-q
  1234. Xoption suppresses the message displayed as each directory is descended.
  1235. X.SP
  1236. X.in +1i
  1237. X.ft B
  1238. X.nf
  1239. Xexample% cvs checkout -p -q -f -rSunOS sys
  1240. X.fi
  1241. X.ft P
  1242. X.in -1i
  1243. X.SP
  1244. XGets an
  1245. X.I exact
  1246. Xcopy of the current revision SunOS kernel sources.
  1247. XThe
  1248. X.B \-f
  1249. Xoption forces only files that have the ``SunOS'' tag to be retrieved, not
  1250. Xincluding files locally added to the kernel sources.
  1251. XThe
  1252. X.B \-p
  1253. Xoption prunes empty directories, thereby not including directories that
  1254. Xhave been locally added to the kernel source hierarchy.
  1255. X.SP
  1256. X.in +1i
  1257. X.ft B
  1258. X.nf
  1259. Xexample% cvs checkout -p -D 'August 10, 1989 14:40' sys
  1260. X.fi
  1261. X.ft P
  1262. X.in -1i
  1263. X.SP
  1264. XThe exact copy of the kernel sources as of the specified date and time is
  1265. Xretrieved.
  1266. XThe date is a free-form strings, as specified in
  1267. X.BR rcs (l).
  1268. X.SP
  1269. X.in +1i
  1270. X.ft B
  1271. X.nf
  1272. Xexample% cvs diff -c
  1273. Xexample% cvs commit -a -m 'fixed NULL pointer dereference'
  1274. X.fi
  1275. X.ft P
  1276. X.in -1i
  1277. X.SP
  1278. XThe
  1279. X.B diff
  1280. Xcommand displays a context diff of all the changes that you have made to
  1281. Xthe sources within the current directory.
  1282. XOnly those files thaty you have changed are displayed.
  1283. XThe
  1284. X.B commit
  1285. Xcommand makes these changes permanent within the source repository so that
  1286. Xothers can benefit from your fix.
  1287. X.SP
  1288. X.in +1i
  1289. X.ft B
  1290. X.nf
  1291. Xexample% cvs diff -c -rSunOS file.c
  1292. Xexample% cvs diff -c -r1.9 -r1.11 file.c
  1293. Xexample% cvs diff -c -r1.22 file.c
  1294. X.fi
  1295. X.ft P
  1296. X.in -1i
  1297. X.SP
  1298. XExamples of how the
  1299. X.B diff
  1300. Xcommand can be used.
  1301. XThe first example displays the differences between the SunOS version of the
  1302. Xfile and your checked out version.
  1303. XThe second example shows the differences between two specific revisions of
  1304. Xthe
  1305. X.SM RCS
  1306. Xfile.
  1307. XThe final example diffs the currently checked out file against a specific
  1308. Xrevision of the
  1309. X.SM RCS
  1310. Xfile.
  1311. X.SP
  1312. X.in +1i
  1313. X.ft B
  1314. X.nf
  1315. Xexample% cvs tag PrismaOS1_0 csh
  1316. Xexample% cvs tag PrismaOS1_0 bin
  1317. Xexample% cvs tag test_kernel sys
  1318. Xexample% cvs tag -d test_kernel sys
  1319. Xexample% cvs tag -q -f -rSunOS SUNOS .
  1320. Xexample% cvs tag -D 'June 30, 1989' JUNE_KERNEL sys
  1321. X.fi
  1322. X.ft P
  1323. X.in -1i
  1324. X.SP
  1325. X
  1326. X.SH "FILES"
  1327. X.TP
  1328. XCVS.adm
  1329. XA directory created by the
  1330. X.B checkout
  1331. Xcommand within each directory that contains checked out source files.
  1332. XThis directory holds all the
  1333. X.B cvs
  1334. Xadministration files for an individual's private copy of the sources.
  1335. XIn general, these files should not be edited by hand.
  1336. X.B cvs
  1337. Xwill do that for you.
  1338. XBe sure to
  1339. X.I never
  1340. Xremove this directory if you have source files that have been modified and
  1341. Xneed to be committed in the directory that the
  1342. XCVS.adm
  1343. Xdirectory administrates.
  1344. XThe files contained in this directory are described below.
  1345. X.TP
  1346. XCVS.adm/Entries
  1347. XContains the list of files that have been checked out in the current
  1348. Xdirectory along with the revision number that each checked out file is
  1349. Xup-to-date with and a timestamp that is used to quickly determine if a file
  1350. Xhas been possibly modified or not.
  1351. X.TP
  1352. XCVS.adm/Entries.Backup
  1353. XA backup of the previous
  1354. XCVS.adm/Entries
  1355. Xfile, just in case of catastrophe.
  1356. X.TP
  1357. XCVS.adm/Entries.Static
  1358. XThe existence of this file tells
  1359. X.B cvs
  1360. Xto only use the files contained in the
  1361. XCVS.adm/Entries
  1362. Xfile when generating the list of source files for this directory.
  1363. XThis allows selected files from a directory in the source repository to be
  1364. Xchecked out and manipulated without requiring that the entire source
  1365. Xdirectory be used.
  1366. X.TP
  1367. XCVS.adm/Mod
  1368. XAfter doing an
  1369. X.B update
  1370. Xcommand, this file reflects the current list of modified source files for
  1371. Xthe directory.
  1372. X.TP
  1373. XCVS.adm/Repository
  1374. XHolds the pathname to the respective directory in the source repository
  1375. Xthat these files refer to.
  1376. XThis is usually a relative pathname, with the value of the
  1377. X.SM CVSROOT
  1378. Xenvironment tacked on the front to produce a full pathname.
  1379. XIf the pathname in the
  1380. XCVS.adm/Repository
  1381. Xfile is already a full pathname, the
  1382. X.SM CVSROOT
  1383. Xvalue is not tacked on.
  1384. X.TP
  1385. XCVS.adm/Checkin.prog
  1386. XContains one line which specifies the program that is to be run when any
  1387. Xfiles in the current directory are checked in to the source repository with the
  1388. X.B commit
  1389. Xcommand.
  1390. XThe particular use of this is to rebuild the ``modules'' database after a
  1391. Xnew revision is checked in \(em see
  1392. X.BR mkmodules (l).
  1393. X.LP
  1394. XThe following files or directories are created directly in the source
  1395. Xrepository directories as needed.
  1396. X.TP
  1397. XCVSROOT.adm
  1398. XA directory that should exist in the top-most directory as defined by the
  1399. X.SM CVSROOT
  1400. Xenvironment variable.
  1401. XThis directory contains administrations files that define the global
  1402. Xactions for the entire source repository beginning at
  1403. X.SM CVSROOT .
  1404. XThe files used directly by
  1405. X.B cvs
  1406. Xin this directory are described below, though you are free to add others as
  1407. Xyou see fit.
  1408. X.TP
  1409. XCVSROOT.adm/modules,v
  1410. XThe
  1411. X.SM RCS
  1412. Xfile which defines the
  1413. X.I modules
  1414. Xsupported within this source repository.
  1415. XThe format is as specified in the
  1416. X.SM "\fBMODULE SUPPORT\fP"
  1417. Xsection above for more information.
  1418. X.TP
  1419. XCVSROOT.adm/loginfo,v
  1420. XThe
  1421. X.SM RCS
  1422. Xfile that contains the descriptions of which programs to pipe log messages
  1423. Xinto when
  1424. X.BR commit ting
  1425. Xfiles.
  1426. XSee the
  1427. X.SM "\fBLOGGING SUPPORT\fP"
  1428. Xsection above for more information.
  1429. X.TP
  1430. XAttic
  1431. XWhen
  1432. X.SM RCS
  1433. Xfiles are removed with the
  1434. X.B remove
  1435. Xcommand, the actual
  1436. X.SM RCS
  1437. Xfile is moved into the Attic directory where it will remain until someone
  1438. Xuses the
  1439. X.B add
  1440. Xcommand to restore it as a needed source file.
  1441. X.TP
  1442. X#cvs.lock
  1443. XA lock directory created by
  1444. X.B cvs
  1445. Xwhen doing sensitive changes to the
  1446. X.SM RCS
  1447. Xsource repository.
  1448. X.TP
  1449. X#cvs.tfl.\fIpid\fP
  1450. XA lock file created just to test the waters of the
  1451. X.SM RCS
  1452. Xsource repository directory before committing files.
  1453. X.TP
  1454. X#cvs.rfl.\fIpid\fP
  1455. XA read lock created when doing the
  1456. X.B update
  1457. Xcommand.
  1458. XA
  1459. X.B commit
  1460. Xdone by some other user will wait until all readers have finished using the
  1461. Xdirectory before proceeding.
  1462. X.TP
  1463. X#cvs.wfl.\fIpid\fP
  1464. XA write lock created by
  1465. X.B commit
  1466. Xto cause any other
  1467. X.BR update s
  1468. Xin the same source repository directory to block until the commit has
  1469. Xcompleted.
  1470. X.SH "ENVIRONMENT VARIABLES"
  1471. X.TP
  1472. X.SM CVSROOT
  1473. XMust be set for most commands.
  1474. XShould contain the full pathname to the root of the
  1475. X.B cvs
  1476. Xsource repository, that is, where the
  1477. X.SM RCS
  1478. Xfiles are kept.
  1479. X.TP
  1480. X.SM CVSREAD
  1481. XIf this is set,
  1482. X.B checkout
  1483. Xand
  1484. X.B update
  1485. Xwill try hard to make your private checked out sources read-only.
  1486. XWhen this is not set, the default behaviour is to make read-write files.
  1487. X.TP
  1488. X.SM RCSBIN
  1489. XSpecifies the full pathname where to find
  1490. X.SM RCS
  1491. Xprograms, such as
  1492. X.BR co (l)
  1493. Xand
  1494. X.BR ci (l).
  1495. XIf not set, the default is
  1496. X.BR /usr/local/bin .
  1497. X.TP
  1498. X.SM EDITOR
  1499. XSpecifies the editor to use when doing a
  1500. X.BR commit .
  1501. XIf not set, the default editor used is
  1502. X.BR /usr/ucb/vi .
  1503. X.SH "AUTHORS"
  1504. X.TP
  1505. XDick Grune
  1506. XOriginal author of the
  1507. X.B cvs
  1508. Xshell script version posted to
  1509. X.B comp.sources.unix
  1510. Xin the volume6 release of December, 1986.
  1511. XCredited with much of the
  1512. X.B cvs
  1513. Xconflict resolution algorithms.
  1514. X.TP
  1515. XBrian Berliner
  1516. XCoder and designer of the
  1517. X.B cvs
  1518. Xprogram itself in April, 1989, based on the original work done by Dick.
  1519. X.TP
  1520. XJeff Polk
  1521. XHelped Brian with the design of the
  1522. X.B cvs
  1523. Xmodule and vendor branch support and author of the
  1524. X.BR checkin (l)
  1525. Xshell script.
  1526. X.SH "SEE ALSO"
  1527. X.BR checkin (l),
  1528. X.BR ci (l),
  1529. X.BR co (l),
  1530. X.BR diff (1),
  1531. X.BR grep (1),
  1532. X.BR mkmodules (l),
  1533. X.BR ndbm (3),
  1534. X.BR patch (l),
  1535. X.BR rcs (l),
  1536. X.BR rcsdiff (l),
  1537. X.BR rcsmerge (l),
  1538. X.BR rlog (l),
  1539. X.BR rm (1),
  1540. X.BR sort (1).
  1541. X.SH "BUGS"
  1542. END_OF_FILE
  1543. if test 42351 -ne `wc -c <'man/cvs.man'`; then
  1544.     echo shar: \"'man/cvs.man'\" unpacked with wrong size!
  1545. fi
  1546. # end of 'man/cvs.man'
  1547. fi
  1548. echo shar: End of archive 7 \(of 7\).
  1549. cp /dev/null ark7isdone
  1550. MISSING=""
  1551. for I in 1 2 3 4 5 6 7 ; do
  1552.     if test ! -f ark${I}isdone ; then
  1553.     MISSING="${MISSING} ${I}"
  1554.     fi
  1555. done
  1556. if test "${MISSING}" = "" ; then
  1557.     echo You have unpacked all 7 archives.
  1558.     rm -f ark[1-9]isdone
  1559. else
  1560.     echo You still need to unpack the following archives:
  1561.     echo "        " ${MISSING}
  1562. fi
  1563. ##  End of shell archive.
  1564. exit 0
  1565. exit 0 # Just in case...
  1566.