1*c70dac2bStobias.\" $OpenBSD: cvs.5,v 1.4 2007/09/19 13:49:55 tobias Exp $ 2a7bff744Sjmc.\" 3a7bff744Sjmc.\" Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org> 4a7bff744Sjmc.\" Copyright (c) 2004-2007 Xavier Santolaria <xsa@openbsd.org> 5a7bff744Sjmc.\" All rights reserved. 6a7bff744Sjmc.\" 7a7bff744Sjmc.\" Redistribution and use in source and binary forms, with or without 8a7bff744Sjmc.\" modification, are permitted provided that the following conditions 9a7bff744Sjmc.\" are met: 10a7bff744Sjmc.\" 11a7bff744Sjmc.\" 1. Redistributions of source code must retain the above copyright 12a7bff744Sjmc.\" notice, this list of conditions and the following disclaimer. 13a7bff744Sjmc.\" 2. The name of the author may not be used to endorse or promote products 14a7bff744Sjmc.\" derived from this software without specific prior written permission. 15a7bff744Sjmc.\" 16a7bff744Sjmc.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 17a7bff744Sjmc.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 18a7bff744Sjmc.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 19a7bff744Sjmc.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20a7bff744Sjmc.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21a7bff744Sjmc.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22a7bff744Sjmc.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23a7bff744Sjmc.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24a7bff744Sjmc.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25a7bff744Sjmc.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26a7bff744Sjmc.\" 27a2bdf3e3Stobias.Dd $Mdocdate: September 19 2007 $ 28a7bff744Sjmc.Dt CVS 5 29a7bff744Sjmc.Os 30a7bff744Sjmc.Sh NAME 31a7bff744Sjmc.Nm cvs 32a7bff744Sjmc.Nd OpenCVS files format 33a7bff744Sjmc.Sh DESCRIPTION 34a7bff744SjmcThis manual page documents the various support files for 35a7bff744Sjmc.Xr cvs 1 36a7bff744Sjmcand the format of those files. 37a7bff744Sjmc.Pp 38a7bff744SjmcThe location of a module's files are known as its 39a7bff744Sjmc.Dv CVSROOT . 40a7bff744SjmcThe files within CVSROOT are as follows: 41a7bff744Sjmc.Bl -tag -width Ds 42a7bff744Sjmc.It Pa $CVSROOT/CVSROOT 43a7bff744SjmcDirectory containing repository administrative files. 44a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/config 45a7bff744SjmcFile containing various configuration options. 46a7bff744SjmcThe format of each line is as follows: 47a7bff744Sjmc.Pp 48a7bff744Sjmc.Dl keyword=value 49a7bff744Sjmc.Pp 50a7bff744SjmcExtraneous spaces or tabs are not permitted. 51a7bff744SjmcA line beginning with a hash character 52a7bff744Sjmc.Pq Sq # 53a7bff744Sjmcis considered a comment and ignored. 54a7bff744Sjmc.Pp 55a7bff744SjmcThe following options are available: 56a7bff744Sjmc.Pp 57a7bff744Sjmc.Bl -tag -width "dlimit=XvalueXXX" -offset indent -compact 58a7bff744Sjmc.It dlimit='value' 59a7bff744SjmcSet the process data size limit. 60a7bff744Sjmc.It tag='value' 61a7bff744SjmcSet the name of a local tag to use in addition to Id. 62a7bff744Sjmc.It umask='value' 63a7bff744SjmcSet the default umask to use when creating files and directories. 64a7bff744Sjmc.El 65a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/history 66a7bff744SjmcFile containing reports of 67a7bff744Sjmc.Ic checkout , 68a7bff744Sjmc.Ic commit , 69a7bff744Sjmc.Ic export , 70a7bff744Sjmc.Ic release , 71a7bff744Sjmc.Ic rtag , 72a7bff744Sjmcand 73a7bff744Sjmc.Ic update 74a7bff744Sjmccommands that have been issued. 75a7bff744SjmcBy default, the 76a7bff744Sjmc.Ic init 77a7bff744Sjmccommand creates the 78a7bff744Sjmc.Pa history 79a7bff744Sjmcfile. 80a7bff744SjmcTo disable history logging, the 81a7bff744Sjmc.Pa history 82a7bff744Sjmcfile should be removed manually. 83a7bff744SjmcThe 84a7bff744Sjmc.Ic history 85a7bff744Sjmccommand shows these reports according to several criteria. 86a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/loginfo 87a7bff744SjmcFile containing associations between modules and handlers for 88a7bff744Sjmcpost-commit logging. 89a7bff744Sjmc.El 90a7bff744Sjmc.Pp 91a7bff744SjmcEach directory that is managed by 92a7bff744Sjmc.Nm 93a7bff744Sjmccontains a 94a7bff744Sjmc.Pa CVS 95a7bff744Sjmcdirectory. 96a7bff744SjmcThis directory is used by various 97a7bff744Sjmc.Nm 98a7bff744Sjmccommands to record the status of files in the current working directory. 99a7bff744SjmcThese files should not be modified manually by the user but by the 100a7bff744Sjmc.Nm 101a7bff744Sjmccommands instead. 102a7bff744SjmcFiles that are always stored in every 103a7bff744Sjmc.Pa CVS 104a7bff744Sjmcdirectory are as follows: 105a7bff744Sjmc.Bl -tag -width Ds 106a7bff744Sjmc.It Pa CVS/Entries 107a7bff744SjmcFile containing a list of files managed by 108a7bff744Sjmc.Nm . 109a7bff744Sjmc.Pa Entries 110a7bff744Sjmchas one line per file or directory describing the state of it with 111a7bff744Sjmcregard to the source repository. 112a7bff744SjmcThese lines have the following format: 113a7bff744Sjmc.Pp 114a7bff744Sjmc.Dl /name/revision/timestamp/options/tag 115a7bff744Sjmc.Bl -tag -width Ds 116a7bff744Sjmc.It name 117a7bff744SjmcName of the file in the directory. 118a7bff744Sjmc.It revision 119a7bff744SjmcRevision of the file in the working directory. 120a7bff744SjmcThe revision is equal to 121a7bff744Sjmc.Sq 0 122a7bff744Sjmcif the file has been added with the 123a7bff744Sjmc.Ic add 124a7bff744Sjmccommand or preceded by the 125a7bff744Sjmc.Sq - 126a7bff744Sjmccharacter if the file has been removed with the 127a7bff744Sjmc.Ic remove 128a7bff744Sjmccommand. 129a7bff744Sjmc.It timestamp 130a7bff744SjmcContains the timestamp of the file at the time 131a7bff744Sjmc.Nm 132a7bff744Sjmccreated it. 133a7bff744SjmcIf the timestamp is different from the actual modification time of the file, 134a7bff744Sjmcit means that the file has been modified. 135a7bff744Sjmc.It options 136a7bff744SjmcContains the keyword substitution mode used for this file. 137a7bff744Sjmc.It tag 138a7bff744SjmcContains 139a7bff744Sjmc.Sq T 140a7bff744Sjmcfollowed by a tagname or 141a7bff744Sjmc.Sq D 142a7bff744Sjmcfollowed by a date. 143a7bff744Sjmc.El 144a7bff744Sjmc.Pp 145a7bff744SjmcEntries corresponding to directories have the following format: 146a7bff744Sjmc.Pp 147a7bff744Sjmc.Dl D/name//// 148a7bff744Sjmc.Pp 149a7bff744SjmcThe lines in the 150a7bff744Sjmc.Pa Entries 151a7bff744Sjmcfile can be in any order. 152a7bff744Sjmc.It Pa CVS/Repository 153a7bff744SjmcFile containing the path to the corresponding directory in the 154a7bff744Sjmcsource repository. 155a7bff744Sjmc.It Pa CVS/Root 156a7bff744SjmcFile containing the value of the 157a7bff744Sjmc.Ev CVSROOT 158a7bff744Sjmcvariable at the time of checkout. 159a7bff744SjmcThis file is used by all 160a7bff744Sjmc.Nm 161a7bff744Sjmccommands instead of 162a7bff744Sjmc.Ev CVSROOT 163a7bff744Sjmconce 164a7bff744Sjmc.Nm 165a7bff744Sjmchas checked for its existence. 166a7bff744Sjmc.El 167a7bff744Sjmc.Pp 168a7bff744SjmcDepending on the circumstances, other files may exist in the 169a7bff744Sjmc.Pa CVS 170a7bff744Sjmcdirectory: 171a7bff744Sjmc.Bl -tag -width Ds 172a7bff744Sjmc.It Pa CVS/Base 173a7bff744SjmcIf pseudo-lock mode is enabled in client-server mode, 174a7bff744Sjmcthe 175a7bff744Sjmc.Pa Base 176a7bff744Sjmcdirectory contains a copy of the file on which the 177a7bff744Sjmc.Ic edit 178a7bff744Sjmccommand has been issued. 179a7bff744SjmcThis allows the 180a7bff744Sjmc.Ic unedit 181a7bff744Sjmccommand to operate even if the CVS server is unreachable. 182a7bff744Sjmc.It Pa CVS/Baserev 183a7bff744SjmcFile listing the revisions for each file contained in the 184a7bff744Sjmc.Pa Base 185a7bff744Sjmcdirectory under the following format: 186a7bff744Sjmc.Pp 187a7bff744Sjmc.Dl name/revision/ 188a7bff744Sjmc.It Pa CVS/Baserev.tmp 189a7bff744SjmcTemporary file used to write 190a7bff744Sjmc.Pa CVS/Baserev 191a7bff744Sjmccontent then atomically renamed to 192a7bff744Sjmc.Pa Baserev . 193a7bff744Sjmc.It Pa CVS/Checkin.prog 194a7bff744SjmcFile containing the path to the command specified with the 195a7bff744Sjmc.Fl i 196a7bff744Sjmcoption in the 197a7bff744Sjmc.Pa CVSROOT/modules 198a7bff744Sjmcfile. 199a7bff744Sjmc.It Pa CVS/Entries.Backup 200a7bff744SjmcTemporary file used to write 201a7bff744Sjmc.Pa CVS/Entries 202a7bff744Sjmccontent then atomically renamed to 203a7bff744Sjmc.Pa Entries . 204a7bff744Sjmc.It Pa CVS/Entries.Static 205a7bff744SjmcTells 206a7bff744Sjmc.Nm 207a7bff744Sjmcto not add files to the directory unless the 208a7bff744Sjmc.Ic update 209a7bff744Sjmccommand is issued with the 210a7bff744Sjmc.Fl d 211a7bff744Sjmcoption. 212a7bff744Sjmc.It Pa CVS/Notify 213a7bff744SjmcFile containing the notifications that could not be sent to the 214a7bff744SjmcCVS server but will be sent at the next successful connection. 215a7bff744Sjmc.It Pa CVS/Notify.tmp 216a7bff744SjmcTemporary file used to write 217a7bff744Sjmc.Pa CVS/Notify 218a7bff744Sjmccontent then atomically renamed to 219a7bff744Sjmc.Pa Notify . 220a7bff744Sjmc.It Pa CVS/Tag 221a7bff744SjmcFile containing the symbolic revision that was used at checkout. 222a7bff744SjmcThe first character of the line is a single letter indicating the 223a7bff744Sjmctype of tag: 224a7bff744Sjmc.Sq D , 225a7bff744Sjmc.Sq N , 226a7bff744Sjmcor 227a7bff744Sjmc.Sq T , 228a7bff744Sjmcfor date, non-branch tag, or branch tag, respectively. 229a7bff744SjmcThe rest of the line is the tag or date itself. 230a7bff744SjmcThe 231a7bff744Sjmc.Pa Tag 232a7bff744Sjmcfile should not be removed manually: 233a7bff744Sjmcinstead, use 234a7bff744Sjmc.Dq update -A . 235a7bff744Sjmc.It Pa CVS/Template 236a7bff744SjmcFile containing the template specified by the 237a7bff744Sjmc.Pa CVSROOT/rcsinfo 238a7bff744Sjmcfile. 239a7bff744SjmcIt is only used in client-server mode. 240a7bff744SjmcLocally, 241a7bff744Sjmc.Nm 242a7bff744Sjmcuses the 243a7bff744Sjmc.Pa rcsinfo 244a7bff744Sjmcfile directly. 245a7bff744Sjmc.It Pa CVS/Update.prog 246a7bff744SjmcFile containing the path to the command specified with the 247a7bff744Sjmc.Fl u 248a7bff744Sjmcoption in the 249a7bff744Sjmc.Pa CVSROOT/modules 250a7bff744Sjmcfile. 251a7bff744Sjmc.It Pa CVS/<name>,t 252a7bff744SjmcFile containing the description of the file 253a7bff744Sjmc.Pa file 254a7bff744Sjmcthat has been added with the 255a7bff744Sjmc.Ic add 256a7bff744Sjmccommand. 257a7bff744SjmcThis description is used by 258a7bff744Sjmc.Nm 259a7bff744Sjmcwhen archiving this file with the 260a7bff744Sjmc.Ic commit 261a7bff744Sjmccommand. 262a7bff744Sjmc.It Pa $HOME/.cvsignore 263a7bff744SjmcThis file provides a list of files (or 264a7bff744Sjmc.Xr sh 1 265a7bff744Sjmcfile name patterns) that should be ignored by 266a7bff744Sjmc.Xr cvs 1 267a7bff744Sjmcduring the 268a7bff744Sjmc.Ic import , 269a7bff744Sjmc.Ic release , 270a7bff744Sjmcand 271a7bff744Sjmc.Ic update 272a7bff744Sjmccommands. 273a7bff744Sjmc.Pp 274a7bff744SjmcThe syntax of the 275a7bff744Sjmc.Nm 276a7bff744Sjmcfile consists of a series of lines, each of which contains a 277a7bff744Sjmcspace-separated list of filenames. 278a7bff744SjmcThere is currently no way of using comments in this file. 279a7bff744Sjmc.Pp 280a7bff744SjmcDefault patterns that are ignored by 281a7bff744Sjmc.Xr cvs 1 282a7bff744Sjmcare as follows: 283a7bff744Sjmc.Bd -filled 284a7bff744SjmcCVS, 285a7bff744SjmcRCS, 286a7bff744SjmcRCSLOG, 287a7bff744SjmcSCCS, 288a7bff744SjmcTAGS, 289a7bff744Sjmctags, 290a7bff744Sjmccore, 291a7bff744Sjmccvslog*, 292a7bff744Sjmc*.o, 293a7bff744Sjmc*.so, 294a7bff744Sjmc*.a, 295a7bff744Sjmc*.bak, 296a7bff744Sjmc*.orig, 297a7bff744Sjmc*.rej, 298a7bff744Sjmc*.old, 299a7bff744Sjmc*.exe, 300a7bff744Sjmc*.depend, 301a7bff744Sjmc*.obj, 302a7bff744Sjmc*.elc, 303a7bff744Sjmc*.ln, 304a7bff744Sjmc*.olb, 305a7bff744Sjmc*.core, 306a7bff744Sjmc.#*, 307a7bff744Sjmc*~, 308a7bff744Sjmc_$*, 309a7bff744Sjmc*$, 310a7bff744Sjmc#*, 311a7bff744Sjmc,*. 312a7bff744Sjmc.Ed 313a7bff744Sjmc.Pp 314a7bff744SjmcThe list can be modified using the methods described below: 315a7bff744Sjmc.Pp 316a7bff744Sjmc.Bl -enum -compact 317a7bff744Sjmc.It 318a7bff744SjmcThe 319a7bff744Sjmc.Pa $CVSROOT/CVSROOT/cvsignore 320a7bff744Sjmcfile appends patterns to ignore for the whole repository. 321a7bff744Sjmc.It 322a7bff744SjmcThe 323a7bff744Sjmc.Pa $HOME/.cvsignore 324a7bff744Sjmcfile appends patterns to ignore for user only. 325a7bff744Sjmc.It 326a7bff744SjmcThe content of the 327a7bff744Sjmc.Ev CVSIGNORE 328a7bff744Sjmcvariable is appended to the list. 329a7bff744Sjmc.It 330a7bff744SjmcOptions to the command line 331a7bff744Sjmc.Fl I 332a7bff744Sjmcflag, available for the 333a7bff744Sjmc.Ic import 334a7bff744Sjmcand 335a7bff744Sjmc.Ic update 336a7bff744Sjmccommands, appends patterns for the current command line action only. 337a7bff744Sjmc.It 338a7bff744Sjmc.Pa .cvsignore 339a7bff744Sjmcfiles placed in the repository directories allow to add patterns to 340a7bff744Sjmcignore locally. 341a7bff744SjmcThey do not take effect on sub-directories. 342a7bff744Sjmc.El 343a7bff744Sjmc.Pp 344a7bff744SjmcThe 345a7bff744Sjmc.Sq !\& 346a7bff744Sjmccharacter can be used to reset the list of patterns using any of these 347a7bff744Sjmcfive methods. 348a7bff744Sjmc.Pp 349a7bff744SjmcFor the 350a7bff744Sjmc.Ic update 351a7bff744Sjmccommand, 352a7bff744Sjmc.Xr cvs 1 353a7bff744Sjmchandles files that are already present in the repository even if they 354a7bff744Sjmcare in the list to ignore. 355a7bff744SjmcFiles that are in the list to ignore but not in the repository will not 356a7bff744Sjmcbe listed. 357a7bff744SjmcThis way, files preceded by the 358a7bff744Sjmc.Sq ?\& 359a7bff744Sjmccharacter will not appear even if they should. 360a7bff744Sjmc.It Pa $HOME/.cvsrc 361a7bff744SjmcThis file provides a way to give the 362a7bff744Sjmc.Xr cvs 1 363a7bff744Sjmcprogram implicit global options and command-specific options. 364a7bff744SjmcUnless the 365a7bff744Sjmc.Fl f 366a7bff744Sjmcoption is specified, 367a7bff744Sjmc.Xr cvs 1 368a7bff744Sjmcreads its startup configuration file 369a7bff744Sjmc.Pa .cvsrc 370a7bff744Sjmcfrom the home directory of the user who invoked it. 371a7bff744Sjmc.Pp 372a7bff744SjmcThe format of each line is as follows: 373a7bff744Sjmc.Pp 374a7bff744Sjmc.Dl command [arg ...] 375a7bff744Sjmc.Pp 376a7bff744Sjmcwhere 377a7bff744Sjmc.Ar command 378a7bff744Sjmcis either the 379a7bff744Sjmc.Sq cvs 380a7bff744Sjmckeyword to specify global options, one of the supported 381a7bff744Sjmc.Xr cvs 1 382a7bff744Sjmccommands or a command alias. 383a7bff744SjmcArguments following 384a7bff744Sjmc.Ar command 385a7bff744Sjmcwill be added implicitly to the appropriate command's argument vector if it is 386a7bff744Sjmcrun. 387a7bff744SjmcLines whose 388a7bff744Sjmc.Ar command 389a2bdf3e3Stobiasargument is not a valid command will generate a warning when running with 390a7bff744Sjmcthe 391a2bdf3e3Stobias.Fl V 392a2bdf3e3Stobiasflag. 393a7bff744Sjmc.Pp 394*c70dac2bStobiasEmpty lines are ignored. 395a7bff744SjmcA line beginning with a hash character 396a7bff744Sjmc.Pq Sq # 397a7bff744Sjmcis considered a comment and ignored. 398a7bff744Sjmc.Pp 399a7bff744SjmcFor example, to specify that 400a7bff744Sjmc.Xr cvs 1 401a7bff744Sjmcshould always run in quiet mode and the 402a7bff744Sjmc.Ic diff 403a7bff744Sjmcinternal command should always produce unified output: 404a7bff744Sjmc.Bd -literal -offset indent 405a7bff744Sjmccvs -q 406a7bff744Sjmcdiff -u 407a7bff744Sjmc.Ed 408a7bff744Sjmc.It Pa $HOME/.cvswrappers 409a7bff744SjmcThis file, located in 410a7bff744Sjmc.Pa $CVSROOT/CVSROOT 411a7bff744Sjmcand/or 412a7bff744Sjmc.Pa $HOME/.cvswrappers , 413a7bff744Sjmcprovides a way to configure filters for 414a7bff744Sjmc.Xr cvs 1 415a7bff744Sjmcbased on file type (name). 416a7bff744SjmcThis works by specifying a pattern to match for varying file types. 417a7bff744Sjmc.Pp 418a7bff744SjmcThe format of each line is as follows: 419a7bff744Sjmc.Pp 420a7bff744Sjmc.Dl pattern [option 'value'] [option 'value'] ... 421a7bff744Sjmc.Pp 422a7bff744SjmcThe following options are supported: 423a7bff744Sjmc.Bl -tag -width Ds 424a7bff744Sjmc.It Fl f Ar filter 425a7bff744SjmcExecute 426a7bff744Sjmc.Ar filter 427a7bff744Sjmcwhen the file is extracted from the repository (for the 428a7bff744Sjmc.Ic checkout , 429a7bff744Sjmc.Ic export , 430a7bff744Sjmcand 431a7bff744Sjmc.Ic update 432a7bff744Sjmccommands). 433a7bff744Sjmc.It Fl k Ar mode 434a7bff744SjmcSpecify the keyword substitution mode. 435a7bff744SjmcSee the 436a7bff744Sjmc.Sx KEYWORD SUBSTITUTION 437a7bff744Sjmcsection of 438a7bff744Sjmc.Xr rcs 1 439a7bff744Sjmcfor more information. 440a7bff744Sjmc.It Fl m Ar method 441a7bff744SjmcSpecify the merge methodology to be used when a file is updated. 442a7bff744Sjmc.Pp 443a7bff744SjmcThe methods are as follows: 444a7bff744Sjmc.Bl -tag -width Ds 445a7bff744Sjmc.It COPY 446a7bff744SjmcWhen the 447a7bff744Sjmc.Ic update 448a7bff744Sjmccommand is used, 449a7bff744Sjmc.Xr cvs 1 450a7bff744Sjmcwill merely copy one version over another and let the user do the merge 451a7bff744Sjmcby himself. 452a7bff744SjmcThis method is used by default on binary files (see the 453a7bff744Sjmc.Fl k Ar b 454a7bff744Sjmcoption). 455a7bff744Sjmc.It MERGE 456a7bff744SjmcTry to merge the files. 457a7bff744SjmcThis method is the default. 458a7bff744Sjmc.El 459a7bff744Sjmc.It Fl t Ar filter 460a7bff744SjmcExecute 461a7bff744Sjmc.Ar filter 462a7bff744Sjmcbefore the file is archived in the repository (for the 463a7bff744Sjmc.Ic commit , 464a7bff744Sjmcand 465a7bff744Sjmc.Ic import 466a7bff744Sjmccommands). 467a7bff744Sjmc.El 468a7bff744Sjmc.It Pa $TMPDIR/cvs-serv Ns Aq Pa pid 469a7bff744SjmcTemporary directory created by the server where 470a7bff744Sjmc.Ar pid 471a7bff744Sjmcis the process ID of the server. 472a7bff744SjmcIt is located in the directory specified by the 473a7bff744Sjmc.Ev TMPDIR 474a7bff744Sjmcenvironment variable or the 475a7bff744Sjmc.Fl T 476a7bff744Sjmcglobal option. 477a7bff744SjmcSee above for more information. 478a7bff744Sjmc.El 479a7bff744Sjmc.Sh SEE ALSO 480a7bff744Sjmc.Xr cvs 1 , 481a7bff744Sjmc.Xr cvsintro 7 482