From owner-freebsd-ports-bugs@FreeBSD.ORG Fri Oct 6 04:30:18 2006 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DCD4416A415 for ; Fri, 6 Oct 2006 04:30:18 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 75B2143D4C for ; Fri, 6 Oct 2006 04:30:17 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k964UH5A052153 for ; Fri, 6 Oct 2006 04:30:17 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k964UHXV052150; Fri, 6 Oct 2006 04:30:17 GMT (envelope-from gnats) Resent-Date: Fri, 6 Oct 2006 04:30:17 GMT Resent-Message-Id: <200610060430.k964UHXV052150@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, KIMURA Yasuhiro Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6A08616A403 for ; Fri, 6 Oct 2006 04:22:50 +0000 (UTC) (envelope-from yasu@home.utahime.org) Received: from utahime.as.wakwak.ne.jp (utahime.as.wakwak.ne.jp [61.205.238.40]) by mx1.FreeBSD.org (Postfix) with ESMTP id C824D43D46 for ; Fri, 6 Oct 2006 04:22:48 +0000 (GMT) (envelope-from yasu@home.utahime.org) Received: from eastasia.home.utahime.org (eastasia.home.utahime.org [192.168.174.1]) by utahime.as.wakwak.ne.jp (Postfix) with ESMTP id 4DA0517048; Fri, 6 Oct 2006 13:22:45 +0900 (JST) Received: from eastasia.home.utahime.org (localhost.home.utahime.org [127.0.0.1]) by localhost-backdoor.home.utahime.org (Postfix) with ESMTP id 8092D52; Fri, 6 Oct 2006 13:22:44 +0900 (JST) Received: by eastasia.home.utahime.org (Postfix, from userid 1000) id 565E230; Fri, 6 Oct 2006 13:22:44 +0900 (JST) Message-Id: <20061006042244.565E230@eastasia.home.utahime.org> Date: Fri, 6 Oct 2006 13:22:44 +0900 (JST) From: KIMURA Yasuhiro To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/104035: [PATCH] devel/cvs+ipv6 : Update patch-freebsdlocal X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Oct 2006 04:30:19 -0000 >Number: 104035 >Category: ports >Synopsis: [PATCH] devel/cvs+ipv6 : Update patch-freebsdlocal >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Oct 06 04:30:16 GMT 2006 >Closed-Date: >Last-Modified: >Originator: KIMURA Yasuhiro >Release: FreeBSD 6.1-RELEASE-p10 i386 >Organization: >Environment: System: FreeBSD xxxx 6.1-RELEASE-p10 FreeBSD 6.1-RELEASE-p10 #0: Sun Oct 1 10:53:31 JST 2006 xxxx i386 >Description: - Update files/patch-freebsdlocal since current version does not include the fix of FreeBSD-SA-05:20.cvsbug. - Use MASTER_SITE_GNU as MASTER_SITES >How-To-Repeat: >Fix: --- patch-cvs+ipv6 begins here --- Index: Makefile =================================================================== RCS file: /usr1/freebsd/cvsroot/ports/devel/cvs+ipv6/Makefile,v retrieving revision 1.20 diff -u -r1.20 Makefile --- Makefile 4 May 2006 21:40:29 -0000 1.20 +++ Makefile 6 Oct 2006 04:09:32 -0000 @@ -7,9 +7,10 @@ PORTNAME= cvs PORTVERSION= 1.11.17 +PORTREVISION= 1 CATEGORIES= devel ipv6 -MASTER_SITES= http://musthave.sunbase.org/progs/ccvs/ \ - http://keyserver.kjsl.com/~jharris/distfiles/ +MASTER_SITES= ${MASTER_SITE_GNU} +MASTER_SITE_SUBDIR= non-gnu/${PORTNAME}/source/stable/${PORTVERSION} PKGNAMESUFFIX= +ipv6 PATCH_SITES= ftp://ftp.kame.net/pub/kame/misc/ Index: files/patch-freebsdlocal =================================================================== RCS file: /usr1/freebsd/cvsroot/ports/devel/cvs+ipv6/files/patch-freebsdlocal,v retrieving revision 1.6 diff -u -r1.6 patch-freebsdlocal --- files/patch-freebsdlocal 21 May 2004 13:45:07 -0000 1.6 +++ files/patch-freebsdlocal 6 Oct 2006 03:14:41 -0000 @@ -1,50 +1,56 @@ -Index: FREEBSD-upgrade -diff -u /dev/null src/contrib/cvs/FREEBSD-upgrade:1.10 ---- /dev/null Fri Apr 16 06:29:02 2004 -+++ FREEBSD-upgrade Mon Sep 2 14:58:30 2002 -@@ -0,0 +1,58 @@ -+FreeBSD: src/contrib/cvs/FREEBSD-upgrade,v 1.10 2002/09/02 05:58:30 peter Exp $ -+ -+MAINTAINER= peter@FreeBSD.org -+ -+This directory contains the virgin CVS source on the vendor branch. Do -+not under any circumstances commit new versions onto the mainline, new -+versions or official-patch versions must be imported. +Index: FREEBSD-Xlist +diff -u /dev/null src/contrib/cvs/FREEBSD-Xlist:1.1 +--- /dev/null Fri Oct 6 12:14:37 2006 ++++ FREEBSD-Xlist Thu Jun 10 05:14:53 2004 +@@ -0,0 +1,21 @@ ++FreeBSD: src/contrib/cvs/FREEBSD-Xlist,v 1.1 2004/06/09 20:14:53 des Exp $ + -+To prepare a new cvs dist for import, extract it into a fresh directory; -+ -+The following generated files were deleted: -+doc/*.ps -+doc/*.info* -+doc/texinfo.tex -+lib/getdate.c -+cvsnt.* -+cvs.spec* -+build.com +*/*.com ++*/*.dep +*/*.dsp ++*/*.mak +*/.cvsignore +.cvsignore +README.VMS -+ -+The following non-freebsd-specific directories were deleted: -+os2 ++build.com ++cvs.spec* ++cvsnt.* ++doc/*.info* ++doc/*.ps ++doc/texinfo.tex +emx -+windows-NT ++lib/getdate.c ++os2 +vms ++windows-NT +zlib +Index: FREEBSD-upgrade +diff -u /dev/null src/contrib/cvs/FREEBSD-upgrade:1.11 +--- /dev/null Fri Oct 6 12:14:37 2006 ++++ FREEBSD-upgrade Thu Jun 10 05:51:26 2004 +@@ -0,0 +1,38 @@ ++FreeBSD: src/contrib/cvs/FREEBSD-upgrade,v 1.11 2004/06/09 20:51:26 des Exp $ ++ ++MAINTAINER= peter@FreeBSD.org ++ ++This directory contains the virgin CVS source on the vendor branch. Do ++not under any circumstances commit new versions onto the mainline, new ++versions or official-patch versions must be imported. + -+It is imported from it's top level directory something like this: ++To prepare a new cvs dist for import, extract it into a fresh directory; ++then delete the files and directories listed in FREEBSD-Xlist. ++ ++CVS is imported from its top level directory something like this: + cvs -n import src/contrib/cvs CVSHOME v + -+The -n option is "dont do anything" so you can see what is about to happen ++The -n option is "don't do anything" so you can see what is about to happen +first. Remove it when it looks ok. + +The initial import was done with: + cvs import src/contrib/cvs CVSHOME v1_8_1 + +When new versions are imported, cvs will give instructions on how to merge -+the local and vendor changes when/if conflicts arise.. ++the local and vendor changes when/if conflicts arise. + +The developers can be reached at: . Local changes +that are suitable for public consumption should be submitted for inclusion @@ -76,7 +82,7 @@ Index: diff/diagmeet.note diff -u src/contrib/cvs/diff/diagmeet.note:1.1.1.1 src/contrib/cvs/diff/diagmeet.note:removed --- src/contrib/cvs/diff/diagmeet.note:1.1.1.1 Mon Jan 26 12:09:49 1998 -+++ diff/diagmeet.note Fri Apr 16 06:29:02 2004 ++++ diff/diagmeet.note Fri Oct 6 12:14:38 2006 @@ -1,71 +0,0 @@ -Here is a comparison matrix which shows a case in which -it is possible for the forward and backward scan in `diag' @@ -189,14 +195,2221 @@ /* Unlike previous versions of this code, uint32 need not be exactly 32 bits, merely 32 bits or more. Choosing a data type which is 32 bits instead of 64 is not important; speed is considerably more -@@ -22,5 +35,7 @@ - void cvs_MD5Final PROTO ((unsigned char digest[16], +@@ -23,4 +36,6 @@ struct cvs_MD5Context *context)); void cvs_MD5Transform PROTO ((cvs_uint32 buf[4], const unsigned char in[64])); -+ -+#endif ++#endif ++ #endif /* !MD5_H */ +Index: man/cvs.1 +diff -u /dev/null src/contrib/cvs/man/cvs.1:1.22 +--- /dev/null Fri Oct 6 12:14:38 2006 ++++ man/cvs.1 Thu Jul 28 22:53:45 2005 +@@ -0,0 +1,2203 @@ ++.\" FreeBSD: src/contrib/cvs/man/cvs.1,v 1.22 2005/07/28 13:53:45 keramida Exp $ ++.de Id ++.ds Rv \\$3 ++.ds Dt \\$4 ++.. ++.TH CVS 1 "\*(Dt" ++.\" Full space in nroff; half space in troff ++.de SP ++.if n .sp ++.if t .sp .5 ++.. ++.\" quoted command ++.de ` ++.RB ` "\|\\$1\|" '\\$2 ++.. ++.SH "NAME" ++cvs \- Concurrent Versions System ++.SH "SYNOPSIS" ++.TP ++\fBcvs\fP [ \fIcvs_options\fP ] ++.I cvs_command ++[ ++.I command_options ++] [ ++.I command_args ++] ++.SH "NOTE" ++This manpage is a summary of some of the features of ++.B cvs ++but it may no longer be kept up-to-date. ++For more current and in-depth documentation, please consult the ++Cederqvist manual (via the ++.B info cvs ++command or otherwise, ++as described in the SEE ALSO section of this manpage). ++.SH "DESCRIPTION" ++.IX "revision control system" "\fLcvs\fR" ++.IX cvs "" "\fLcvs\fP \- concurrent versions system" ++.IX "concurrent versions system \- \fLcvs\fP" ++.IX "release control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" ++.IX "source control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" ++.IX revisions "cvs command" "" "\fLcvs\fP \- source control" ++CVS is a version control system, which allows you to keep old versions ++of files (usually source code), keep a log of who, when, and why ++changes occurred, etc., like RCS or SCCS. Unlike the simpler systems, ++CVS does not just operate on one file at a time or one directory at a ++time, but operates on hierarchical collections of directories ++consisting of version controlled files. CVS helps to manage releases ++and to control the concurrent editing of source files among multiple ++authors. CVS allows triggers to enable/log/control various ++operations and works well over a wide area network. ++.SP ++.B cvs ++keeps a single copy of the master sources. ++This copy is called the source ``repository''; it contains all the ++information to permit extracting previous software releases at any ++time based on either a symbolic revision tag, or a date in the past. ++.SH "ESSENTIAL COMMANDS" ++.B cvs ++provides a rich variety of commands (\fIcvs_command\fP in the ++Synopsis), each of which often has a wealth of options, to satisfy the ++many needs of source management in distributed environments. However, ++you don't have to master every detail to do useful work with ++.BR cvs ; ++in fact, five commands are sufficient to use (and contribute to) ++the source repository. ++.TP ++\fBcvs checkout\fP \fImodules\fP\|.\|.\|. ++A necessary preliminary for most \fBcvs\fP work: creates your private ++copy of the source for \fImodules\fP (named collections of source; you ++can also use a path relative to the source repository here). You can ++work with this copy without interfering with others' work. At least ++one subdirectory level is always created. ++.TP ++.B cvs update ++Execute this command from \fIwithin\fP your private source ++directory when you wish to update your copies of source files from ++changes that other developers have made to the source in the ++repository. ++.TP ++\fBcvs add\fP \fIfile\fP\|.\|.\|. ++Use this command to enroll new files in \fBcvs\fP records of your ++working directory. The files will be added to the repository the next ++time you run ++.` "cvs commit". ++Note: ++You should use the ++.` "cvs import" ++command to bootstrap new sources into the source repository. ++.` "cvs add" ++is only used for new files to an already checked-out module. ++.TP ++\fBcvs remove\fP \fIfile\fP\|.\|.\|. ++Use this command (after erasing any files listed) to declare that you ++wish to eliminate files from the repository. The removal does not ++affect others until you run ++.` "cvs commit". ++.TP ++\fBcvs commit\fP \fIfile\fP\|.\|.\|. ++Use this command when you wish to ``publish'' your changes to other ++developers, by incorporating them in the source repository. ++.SH "OPTIONS" ++The ++.B cvs ++command line can include ++.IR cvs_options , ++which apply to the overall ++.B cvs ++program; a ++.IR cvs_command , ++which specifies a particular action on the source repository; and ++.I command_options ++and ++.I command_arguments ++to fully specify what the ++.I cvs_command ++will do. ++.SP ++.I Warning: ++you must be careful of precisely where you place options relative to the ++.IR cvs_command . ++The same option can mean different things depending on whether it ++is in the ++.I cvs_options ++position (to the left of a ++.B cvs ++command) or in the ++.I command_options ++position (to the right of a ++.B cvs ++command). ++.SP ++There are only two situations where you may omit ++.IR cvs_command : ++.` "cvs \-H" ++or ++.` "cvs --help" ++elicits a list of available commands, and ++.` "cvs \-v" ++or ++.` "cvs --version" ++displays version information on \fBcvs\fP itself. ++.SP ++.SH "CVS OPTIONS" ++As of release 1.6, ++.B cvs ++supports ++.SM GNU ++style long options as well as short options. Only ++a few long options are currently supported, these are listed in ++brackets after the short options whose functions they duplicate. ++.SP ++Use these options to control the overall ++.B cvs ++program: ++.TP ++.B \-H [ --help ] ++Display usage information about the specified ++.I cvs_command ++(but do not actually execute the command). If you don't specify a ++command name, ++.` "cvs \-H" ++displays a summary of all the commands available. ++.TP ++.B \-Q ++Causes the command to be ++.I really ++quiet; the command will generate output only for serious problems. ++.TP ++.B \-q ++Causes the command to be somewhat quiet; informational messages, such ++as reports of recursion through subdirectories, are suppressed. ++.TP ++\fB\-b\fP \fIbindir\fP ++Use ++.I bindir ++as the directory where ++.SM RCS ++programs are located (CVS 1.9 and older). ++Overrides the setting of the ++.SM RCSBIN ++environment variable. ++This value should be specified as an absolute pathname. ++.TP ++\fB\-d\fP \fICVS_root_directory\fP ++Use ++.I CVS_root_directory ++as the root directory pathname of the master ++source repository. ++Overrides the setting of the ++.SM CVSROOT ++environment variable. ++This value should be specified as an absolute pathname. ++.TP ++\fB\-e\fP \fIeditor\fP ++Use ++.I editor ++to enter revision log information. ++Overrides the setting of the ++.SM CVSEDITOR\c ++, ++.SM VISUAL\c ++, and ++.SM EDITOR ++environment variables. ++.TP ++.B \-f ++Do not read the ++.B cvs ++startup file (\fI~/.cvsrc\fP). ++.TP ++.B \-n ++Do not change any files. Attempt to execute the ++.IR cvs_command , ++but only to issue reports; do not remove, update, or merge any ++existing files, or create any new files. ++.TP ++.B \-t ++Trace program execution; display messages showing the steps of ++.B cvs ++activity. Particularly useful with ++.B \-n ++to explore the potential impact of an unfamiliar command. ++.TP ++.B \-r ++Makes new working files read-only. ++Same effect as if the ++.SM CVSREAD ++environment variable is set. ++.TP ++.B \-R ++Turns on read-only repository mode. This allows one to check out from a ++read-only repository, such as within an anoncvs server, or from a CDROM ++repository. ++Same effect as if the ++.SM CVSREADONLYFS ++environment variable is set. Using ++.B \-R ++can also considerably speed up checkout's over NFS. ++.TP ++.B \-v [ --version ] ++Displays version and copyright information for ++.BR cvs . ++.TP ++.B \-w ++Makes new working files read-write (default). ++Overrides the setting of the ++.SM CVSREAD ++environment variable. ++.TP ++.B \-g ++Forces group-write perms on working files. This option is typically ++used when you have multiple users sharing a single checked out source ++tree, allowing them to operate their shells with a less dangerous umask. ++To use this feature, create a directory to hold the checked-out source ++tree, set it to a private group, and set up the directory such that ++files created under it inherit the group id of the directory. This occurs ++automatically with FreeBSD. With SysV you must typically set the SGID bit ++on the directory. The users who are to share the checked out tree must ++be placed in that group. Note that the sharing of a single checked-out ++source tree is very different from giving several users access to a common ++CVS repository. Access to a common CVS repository already maintains shared ++group-write perms and does not require this option. ++ ++To use the option transparently, simply place the line 'cvs -g' in your ++~/.cvsrc file. Doing this is not recommended unless you firewall all your ++source checkouts within a private group or within a private mode 0700 ++directory. ++.TP ++.B \-x ++Encrypt all communication between the client and the server. As of ++this writing, this is only implemented when using a Kerberos ++connection. ++.TP ++\fB\-z\fP \fIcompression\-level\fP ++When transferring files across the network use ++.B gzip ++with compression level \fIcompression\-level\fP to compress and ++de-compress data as it is transferred. Requires the presence of ++the ++.SM GNU ++.B gzip ++program in the current search path at both ends of the link. ++.SH "USAGE" ++Except when requesting general help with ++.` "cvs \-H", ++you must specify a ++.I cvs_command ++to ++.B cvs ++to select a specific release control function to perform. ++Each ++.B cvs ++command accepts its own collection of options and arguments. ++However, many options are available across several commands. ++You can display a usage summary for each command by specifying the ++.B \-H ++option with the command. ++.SH "CVS STARTUP FILE" ++Normally, when CVS starts up, it reads the ++.I .cvsrc ++file from the home directory of the user reading it. This startup ++procedure can be turned off with the ++.B \-f ++flag. ++.SP ++The ++.I .cvsrc ++file lists CVS commands with a list of arguments, one command per ++line. For example, the following line in \fI.cvsrc\fP: ++.SP ++diff \-c ++.SP ++will mean that the ++.` "cvs diff" ++command will always be passed the \-c option in addition to any ++other options that are specified in the command line (in this case ++it will have the effect of producing context sensitive diffs for ++all executions of ++.` "cvs diff" ++). ++.SP ++Global options are specified using the \fBcvs\fP keyword. For example, ++the following: ++.SP ++cvs \-q ++.SP ++will mean that all ++.` "cvs" ++commands will behave as thought he \-q global option had been supplied. ++.SH "CVS COMMAND SUMMARY" ++Here are brief descriptions of all the ++.B cvs ++commands: ++.TP ++.B add ++Add a new file or directory to the repository, pending a ++.` "cvs commit" ++on the same file. ++Can only be done from within sources created by a previous ++.` "cvs checkout" ++invocation. ++Use ++.` "cvs import" ++to place whole new hierarchies of sources under ++.B cvs ++control. ++(Does not directly affect repository; changes ++working directory.) ++.TP ++.B admin ++Execute ++control functions on the source repository. (Changes ++repository directly; uses working directory without changing it.) ++.TP ++.B checkout ++Make a working directory of source files for editing. (Creates or changes ++working directory.) ++.TP ++.B commit ++Apply to the source repository changes, additions, and deletions from your ++working directory. (Changes repository.) ++.TP ++.B diff ++Show differences between files in working directory and source ++repository, or between two revisions in source repository. ++(Does not change either repository or working directory.) ++.TP ++.B export ++Prepare copies of a set of source files for shipment off site. ++Differs from ++.` "cvs checkout" ++in that no ++.B cvs ++administrative directories are created (and therefore ++.` "cvs commit" ++cannot be executed from a directory prepared with ++.` "cvs export"), ++and a symbolic tag must be specified. ++(Does not change repository; creates directory similar to working ++directories). ++.TP ++.B history ++Show reports on ++.B cvs ++commands that you or others have executed on a particular file or ++directory in the source repository. (Does not change repository or ++working directory.) History logs are kept only if enabled by creation ++of the ++.` "$CVSROOT/CVSROOT/history" ++file; see ++.BR cvs ( 5 ). ++.TP ++.B import ++Incorporate a set of updates from off-site into the source repository, ++as a ``vendor branch''. (Changes repository.) ++.TP ++.B init ++Initialize a repository by adding the CVSROOT subdirectory and some default ++control files. You must use this command or initialize the repository in ++some other way before you can use it. ++.TP ++.B log ++Display ++log information. ++(Does not change repository or working directory.) ++.TP ++.B rdiff ++Prepare a collection of diffs as a patch file between two releases in ++the repository. (Does not change repository or working directory.) ++.TP ++.B release ++Cancel a ++.` "cvs checkout", ++abandoning any changes. ++(Can delete working directory; no effect on repository.) ++.TP ++.B remove ++Remove files from the source repository, pending a ++.` "cvs commit" ++on the same files. (Does not directly affect repository; ++changes working directory.) ++.TP ++.B rtag ++Explicitly specify a symbolic tag for particular revisions of files in the ++source repository. See also ++.` "cvs tag". ++(Changes repository directly; does not require or affect ++working directory.) ++.TP ++.B status ++Show current status of files: latest version, version in working ++directory, whether working version has been edited and, optionally, ++symbolic tags in the ++.SM RCS ++file. (Does not change ++repository or working directory.) ++.TP ++.B tag ++Specify a symbolic tag for files in the repository. By default, tags ++the revisions ++that were last synchronized with your working directory. (Changes ++repository directly; uses working directory without changing it.) ++.TP ++.B update ++Bring your working directory up to date with changes from the ++repository. Merges are performed automatically when possible; a ++warning is issued if manual resolution is required for conflicting ++changes. (Changes working directory; does not change repository.) ++.SH "COMMON COMMAND OPTIONS" ++This section describes the ++.I command_options ++that are available across several ++.B cvs ++commands. Not all commands support all of these options; each option ++is only supported for commands where it makes sense. However, when ++a command has one of these options you can count on the same meaning ++for the option as in other commands. (Other command ++options, which are listed with the individual commands, may have ++different meanings from one ++.B cvs ++command to another.) ++.I "Warning:" ++the ++.B history ++command is an exception; ++it supports many options that conflict ++even with these standard options. ++.TP ++\fB\-D\fP \fIdate_spec\fP ++Use the most recent revision no later than \fIdate_spec\fP (a single ++argument, date description specifying a date in the ++past). A wide variety of date formats are supported, in particular ++ISO ("1972-09-24 20:05") or Internet ("24 Sep 1972 20:05"). ++The \fIdate_spec\fP is interpreted as being in the local timezone, unless a ++specific timezone is specified. ++The specification is ``sticky'' when you use it to make a ++private copy of a source file; that is, when you get a working file ++using \fB\-D\fP, \fBcvs\fP records the date you ++specified, so that further updates in the same directory will use the ++same date (unless you explicitly override it; see the description of ++the \fBupdate\fP command). ++.B \-D ++is available with the ++.BR checkout ", " diff ", " history ", " export ", " ++.BR rdiff ", " rtag ", and " ++.B update ++commands. ++Examples of valid date specifications include: ++.in +1i ++.ft B ++.nf ++1 month ago ++2 hours ago ++400000 seconds ago ++last year ++last Monday ++yesterday ++a fortnight ago ++3/31/92 10:00:07 PST ++January 23, 1987 10:05pm ++22:00 GMT ++.fi ++.ft P ++.in -1i ++.TP ++.B \-f ++When you specify a particular date or tag to \fBcvs\fP commands, they ++normally ignore files that do not contain the tag (or did not exist on ++the date) that you specified. Use the \fB\-f\fP option if you want ++files retrieved even when there is no match for the tag or date. (The ++most recent version is used in this situation.) ++.B \-f ++is available with these commands: ++.BR checkout ", " export ", " ++.BR rdiff ", " rtag ", and " update . ++.TP ++\fB\-k\fP \fIkflag\fP ++Alter the default ++processing of keywords. ++The \fB\-k\fP option is available with the ++.BR add ", " checkout ", " diff ", " export ", " ++.BR rdiff ", and " update ++commands. Your \fIkflag\fP specification is ``sticky'' when you use ++it to create a private copy of a source file; that is, when you use ++this option with the \fBcheckout\fP or \fBupdate\fP commands, ++\fBcvs\fP associates your selected \fIkflag\fP with the file, and ++continues to use it with future \fBupdate\fP commands on the same file ++until you specify otherwise. ++.SP ++Some of the more useful \fIkflag\fPs are \-ko and \-kb (for binary files), ++and \-kv which is useful for an ++.B export ++where you wish to retain keyword information after an ++.B import ++at some other site. ++.TP ++.B \-l ++Local; run only in current working directory, rather than recurring through ++subdirectories. Available with the following commands: ++.BR checkout ", " commit ", " diff ", " ++.BR export ", " remove ", " rdiff ", " rtag ", " ++.BR status ", " tag ", and " update . ++.TP ++.B \-n ++Do ++.I not ++run any ++.BR checkout / commit / tag / update ++program. (A program can be specified to run on each of these ++activities, in the modules database; this option bypasses it.) ++Available with the ++.BR checkout ", " commit ", " export ", and " ++.B rtag ++commands. ++.I Warning: ++this is not the same ++as the overall ++.` "cvs \-n" ++option, which you can specify to the ++.I left ++of a ++.B cvs ++command! ++.TP ++.B \-P ++Prune (remove) directories that are empty after being updated, on ++.BR checkout ", or " update . ++Normally, an empty directory (one that is void of revision-controlled ++files) is left alone. ++Specifying ++.B \-P ++will cause these directories to be silently removed from your checked-out ++sources. ++This does not remove the directory from the repository, only from your ++checked out copy. ++Note that this option is implied by the ++.B \-r ++or ++.B \-D ++options of ++.BR checkout " and " export . ++.TP ++.B \-T ++Create/Update CVS/Template by copying it from the (local) repository. ++This option is useful for developers maintaining a local cvs repository ++but committing to a remote repository. By maintaining CVS/Template the ++remote commits will still be able to bring up the proper template in the ++commit editor session. ++Available with the ++.BR checkout " and " update ++commands. ++.TP ++.B \-p ++Pipe the files retrieved from the repository to standard output, ++rather than writing them in the current directory. Available with the ++.BR checkout " and " update ++commands. ++.TP ++\fB\-r\fP \fItag\fP ++Use the revision specified by the ++.I tag ++argument instead of the default ``head'' revision. As well as ++arbitrary tags defined with the \fBtag\fP or \fBrtag\fP command, two ++special tags are always available: ++.` "HEAD" ++refers to the most ++recent version available in the repository, and ++.` "BASE" ++refers to the revision you last checked out into the current working ++directory. ++.SP ++The \fItag\fP specification is ``sticky'' when you use ++this option with ++.` "cvs checkout" ++or ++.` "cvs update" ++to ++make your own copy of a file: \fBcvs\fP remembers the \fItag\fP and ++continues to use it on future \fBupdate\fP commands, until you specify ++otherwise. ++.I tag ++can be either a symbolic or numeric tag. ++Specifying the ++.B \-q ++global option along with the ++.B \-r ++command option is often useful, to suppress the warning messages when the ++.SM RCS ++file does not contain the specified tag. ++.B \-r ++is available with the ++.BR checkout ", " commit ", " diff ", " ++.BR history ", " export ", " ++.BR rdiff ", " rtag ", and " update ++commands. ++.I Warning: ++this is not the same ++as the overall ++.` "cvs \-r" ++option, which you can specify to the ++.I left ++of a ++.B cvs ++command! ++.SH "CVS COMMANDS" ++Here (finally) are details on all the ++.B cvs ++commands and the options each accepts. The summary lines at the top ++of each command's description highlight three kinds of things: ++.TP 1i ++\ \ \ \ Command Options and Arguments ++Special options are described in detail below; common command options ++may appear only in the summary line. ++.TP 1i ++\ \ \ \ Working Directory, or Repository? ++Some \fBcvs\fP commands require a working directory to operate; some ++require a repository. Also, some commands \fIchange\fP the ++repository, some change the working directory, and some change ++nothing. ++.TP 1i ++\ \ \ \ Synonyms ++Many commands have synonyms, which you may find easier to ++remember (or type) than the principal name. ++.PP ++.TP ++\fBadd\fP [\fB\-k\fP \fIkflag\fP] [\fB\-m '\fP\fImessage\fP\fB'\fP] \fIfiles.\|.\|.\fP ++.I Requires: ++repository, working directory. ++.br ++.I Changes: ++working directory. ++.br ++.I Synonym: ++.B new ++.br ++Use the ++.B add ++command to create a new file or directory in the ++source repository. ++The files or directories specified with ++.B add ++must already exist in the current directory (which must have been created ++with the ++.B checkout ++command). ++To add a whole new directory hierarchy to the source repository ++(for example, files received from a third-party vendor), use the ++.` "cvs import" ++command instead. ++.SP ++If the argument to ++.` "cvs add" ++refers to an immediate sub-directory, the directory is ++created at the correct place in the ++source repository, and the necessary ++.B cvs ++administration files are created in your working directory. ++If the directory already exists in the source repository, ++.` "cvs add" ++still creates the administration files in your version of the directory. ++This allows you to use ++.` "cvs add" ++to add a particular directory to your private sources even if ++someone else created that directory after your ++.B checkout ++of the sources. You can do the following: ++.SP ++.in +1i ++.ft B ++.nf ++example% mkdir new_directory ++example% cvs add new_directory ++example% cvs update new_directory ++.fi ++.ft P ++.in -1i ++.SP ++An alternate approach using ++.` "cvs update" ++might be: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs update -d new_directory ++.fi ++.ft P ++.in -1i ++.SP ++(To add \fIany available\fP new directories to your working directory, it's ++probably simpler to use ++.` "cvs checkout" ++or ++.` "cvs update -d".) ++.SP ++The added files are not placed in the ++source repository until you use ++.` "cvs commit" ++to make the change permanent. ++Doing a ++.` "cvs add" ++on a file that was removed with the ++.` "cvs remove" ++command will resurrect the file, if no ++.` "cvs commit" ++command intervened. ++.SP ++You will have the opportunity to specify a logging message, as usual, ++when you use ++.` "cvs commit" ++to make the new file permanent. If you'd like to have another ++logging message associated with just ++.I creation ++of the file (for example, to describe the file's purpose), you can ++specify it with the ++.` "\-m \fImessage\fP" ++option to the ++.B add ++command. ++.SP ++The ++.` "-k kflag" ++option specifies the default way that this ++file will be checked out. ++The ++.` "kflag" ++argument is stored in the ++.SM RCS ++file and can be changed with ++.` "cvs admin". ++Specifying ++.` "-ko" ++is useful for checking in binaries that ++shouldn't have ++keywords expanded. ++.TP ++\fBadmin\fP [\fIrcs-options\fP] \fIfiles.\|.\|.\fP ++.I Requires: ++repository, working directory. ++.br ++.I Changes: ++repository. ++.br ++.I Synonym: ++.B rcs ++.br ++This is the ++.B cvs ++interface to assorted administrative ++facilities, similar to ++.BR rcs ( 1 ). ++This command works recursively, so extreme care should be ++used. ++.TP ++\fBcheckout\fP [\fBoptions\fP] \fImodules\fP.\|.\|. ++.I Requires: ++repository. ++.br ++.I Changes: ++working directory. ++.br ++.I Synonyms: ++.BR co ", " get ++.br ++Make a working directory containing copies of the source files specified by ++.IR modules . ++You must execute ++.` "cvs checkout" ++before using most of the other ++.B cvs ++commands, since most of them operate on your working directory. ++.SP ++\fImodules\fP are either symbolic names (themselves defined as the ++module ++.` "modules" ++in the source repository; see ++.BR cvs ( 5 )) ++for some collection of source directories and files, or paths to ++directories or files in the repository. ++.SP ++Depending on the ++.I modules ++you specify, ++.B checkout ++may recursively create directories and populate them with the appropriate ++source files. ++You can then edit these source files at any time (regardless of whether ++other software developers are editing their own copies of the sources); ++update them to include new changes applied by others to the source ++repository; or commit your work as a permanent change to the ++repository. ++.SP ++Note that ++.B checkout ++is used to create directories. ++The top-level directory created is always added to the directory ++where ++.B checkout ++is invoked, and usually has the same name as the specified ++.IR module . ++In the case of a ++.I module ++alias, the created sub-directory may have a different name, but you can be ++sure that it will be a sub-directory, and that ++.B checkout ++will show the relative path leading to each file as it is extracted into ++your private work area (unless you specify the ++.B \-Q ++global option). ++.SP ++Running ++.` "cvs checkout" ++on a directory that was already built by a prior ++.B checkout ++is also permitted, and ++has the same effect as specifying the ++.B \-d ++option to the ++.B update ++command described below. ++.SP ++The ++.I options ++permitted with ++.` "cvs checkout" ++include the standard command options ++.BR \-P ", " \-f ", " ++.BI \-k " kflag" ++\&, ++.BR \-l ", " \-n ", " \-p ", " ++.BR \-r ++.IR tag ", and" ++.BI \-D " date"\c ++\&. ++.SP ++In addition to those, you can use these special command options ++with ++.BR checkout : ++.SP ++Use the ++.B \-A ++option to reset any sticky tags, dates, or ++.B \-k ++options. (If you get a working file using one of the ++\fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the ++corresponding tag, date, or \fIkflag\fP and continues using it on ++future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these ++specifications, and retrieve the ``head'' version of the file). ++.SP ++The ++.BI \-j " branch" ++option merges the changes made between the ++resulting revision and the revision that it is based on (e.g., if ++the tag refers to a branch, ++.B cvs ++will merge all changes made in that branch into your working file). ++.SP ++With two \fB-j\fP options, ++.B cvs ++will merge in the changes between the two respective revisions. ++This can be used to ``remove'' a certain delta from your working file. ++.SP ++In addition, each \fB-j\fP option can contain on optional date ++specification which, when used with branches, can limit the chosen ++revision to one within a specific date. ++An optional date is specified by adding a colon (:) to the tag. ++An example might be what ++.` "cvs import" ++tells you to do when you have ++just imported sources that have conflicts with local changes: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs checkout -jTAG:yesterday -jTAG module ++.fi ++.ft P ++.in -1i ++.SP ++Use the ++.B \-N ++option with ++.` "\-d \fIdir\fP" ++to avoid shortening module paths in your working directory. (Normally, \fBcvs\fP shortens paths as much as possible when you specify an explicit target directory.) ++.SP ++Use the ++.B \-c ++option to copy the module file, sorted, to the standard output, ++instead of creating or modifying any files or directories in your ++working directory. ++.SP ++Use the ++.BI \-d " dir" ++option to create a directory called ++.I dir ++for the working files, instead of using the module name. Unless you ++also use \fB\-N\fP, the paths created under \fIdir\fP will be as short ++as possible. ++.SP ++Use the ++.B \-s ++option to display per-module status information stored with ++the ++.B \-s ++option within the modules file. ++.TP ++\fBcommit\fP [\fB\-lnR\fP] [\fB\-m\fP '\fIlog_message\fP' | \fB\-F\fP \fIfile\fP] [\fB\-r\fP \fIrevision\fP] [\fIfiles.\|.\|.\fP] ++.I Requires: ++working directory, repository. ++.br ++.I Changes: ++repository. ++.br ++.I Synonym: ++.B ci ++.br ++Use ++.` "cvs commit" ++when you want to incorporate changes from your working source ++files into the general source repository. ++.SP ++If you don't specify particular \fIfiles\fP to commit, all ++of the files in your working current directory are examined. ++.B commit ++is careful to change in the repository only those files that you have ++really changed. By default (or if you explicitly specify the ++.B \-R ++option), files ++in subdirectories are also examined and committed if they have ++changed; you can use the ++.B \-l ++option to limit ++.B commit ++to the current directory only. ++Sometimes you may want to force a file to be committed even though it ++is unchanged; this is achieved with the ++.B \-f ++flag, which also has the effect of disabling recursion (you can turn ++it back on with ++.B \-R ++of course). ++.SP ++.B commit ++verifies that the selected files are up to date with the current revisions ++in the source repository; it will notify you, and exit without ++committing, if any of the specified files must be made current first ++with ++.` "cvs update". ++.B commit ++does not call the ++.B update ++command for you, but rather leaves that for you to do when ++the time is right. ++.SP ++When all is well, an editor is invoked to allow you to enter a log ++message that will be written to one or more logging programs and placed in the ++source repository file. ++You can instead specify the log message on the command line with the ++.B \-m ++option, thus suppressing the editor invocation, or use the ++.B \-F ++option to specify that the argument \fIfile\fP contains the log message. ++.SP ++The ++.B \-r ++option can be used to commit to a particular symbolic or numeric revision. ++For example, to bring all your files up to the ++revision ``3.0'' (including those that haven't changed), you might do: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs commit -r3.0 ++.fi ++.ft P ++.in -1i ++.SP ++.B cvs ++will only allow you to commit to a revision that is on the main trunk (a ++revision with a single dot). ++However, you can also commit to a branch revision (one that has an even ++number of dots) with the ++.B \-r ++option. ++To create a branch revision, one typically use the ++.B \-b ++option of the ++.BR rtag " or " tag ++commands. ++Then, either ++.BR checkout " or " update ++can be used to base your sources on the newly created branch. ++From that point on, all ++.B commit ++changes made within these working sources will be automatically added ++to a branch revision, thereby not perturbing main-line development in any ++way. ++For example, if you had to create a patch to the 1.2 version of the ++product, even though the 2.0 version is already under development, you ++might do: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs rtag -b -rFCS1_2 FCS1_2_Patch product_module ++example% cvs checkout -rFCS1_2_Patch product_module ++example% cd product_module ++[[ hack away ]] ++example% cvs commit ++.fi ++.ft P ++.in -1i ++.SP ++Say you have been working on some extremely experimental software, based on ++whatever revision you happened to checkout last week. ++If others in your group would like to work on this software with you, but ++without disturbing main-line development, you could commit your change to a ++new branch. ++Others can then checkout your experimental stuff and utilize the full ++benefit of ++.B cvs ++conflict resolution. ++The scenario might look like: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs tag -b EXPR1 ++example% cvs update -rEXPR1 ++[[ hack away ]] ++example% cvs commit ++.fi ++.ft P ++.in -1i ++.SP ++Others would simply do ++.` "cvs checkout -rEXPR1 whatever_module" ++to work with you on the experimental change. ++.TP ++\fBdiff\fP [\fB\-kl\fP] [\fIformat_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP | \fB\-j\fP \fIrev1:date1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP | \fB\-j\fP \fIrev2:date2\fP]] [\fIfiles.\|.\|.\fP] ++.I Requires: ++working directory, repository. ++.br ++.I Changes: ++nothing. ++.br ++You can compare your working files with revisions in the source ++repository, with the ++.` "cvs diff" ++command. If you don't specify a particular revision, your files ++are compared with the revisions they were based on. You can also use ++the standard ++.B cvs ++command option ++.B \-r ++to specify a particular revision to compare your files with. Finally, ++if you use ++.B \-r ++twice, you can see differences between two revisions in the ++repository. ++You can also specify ++.B \-D ++options to diff against a revision (on the head branch) in the past, and ++you can also specify ++.B \-j ++options to diff against a revision relative to a branch tag in the past. ++The ++.B \-r ++and ++.B \-D ++and ++.B \-j ++options can be mixed together with at most two options ever specified. ++.SP ++See ++.` "cvs --help diff" ++for a list of supported ++.IR format_options . ++.SP ++If you don't specify any files, ++.B diff ++will display differences for all those files in the current directory ++(and its subdirectories, unless you use the standard option ++.BR \-l ) ++that ++differ from the corresponding revision in the source repository ++(i.e. files that ++.I you ++have changed), or that differ from the revision specified. ++.TP ++\fBexport\fP [\-\fBf\|lNnQq\fP] \fB\-r\fP \fIrev\fP\||\|\fB\-D\fP \fIdate\fP [\fB\-d\fP \fIdir\fP] [\fB\-k\fP \fIkflag\fP] \fImodule\fP.\|.\|. ++.I Requires: ++repository. ++.br ++.I Changes: ++current directory. ++.br ++This command is a variant of ++.` "cvs checkout"; ++use it when you want a copy of the source for \fImodule\fP ++without the \fBcvs\fP administrative directories. For example, you ++might use ++.` "cvs export" ++to prepare source for shipment ++off-site. This command \fIrequires\fP that you specify a date or tag ++(with \fB\-D\fP or \fB\-r\fP), so that you can count on reproducing ++the source you ship to others. ++.SP ++The only non-standard options are ++.` "\-d \fIdir\fP" ++(write the ++source into directory \fIdir\fP) and ++.` "\-N" ++(don't shorten ++module paths). ++These have the same meanings as the same options in ++.` "cvs checkout". ++.SP ++The ++.B \-kv ++option is useful when ++.B export ++is used. ++This causes any ++keywords to be expanded such that an ++.B import ++done at some other site will not lose the keyword revision information. ++Other \fIkflag\fPs may be used with ++.` "cvs export" ++and are described in ++.BR co ( 1 ). ++.TP ++\fBhistory\fP [\fB\-\fP\fIreport\fP] [\fB\-\fP\fIflags\fP] [\fB\-\fP\fIoptions args\fP] [\fIfiles\fP.\|.\|.] ++.I Requires: ++the file ++.` "$CVSROOT/CVSROOT/history" ++.br ++.I Changes: ++nothing. ++.br ++\fBcvs\fP keeps a history file that tracks each use of the ++\fBcheckout\fP, \fBcommit\fP, \fBrtag\fP, \fBupdate\fP, and \fBrelease\fP ++commands. You can use ++.` "cvs history" ++to display this ++information in various formats. ++.SP ++.I Warning: ++.` "cvs history" ++uses ++.` "\-f", ++.` "\-l", ++.` "\-n", ++and ++.` "\-p" ++in ways that conflict with the ++descriptions in ++.SM ++COMMON COMMAND OPTIONS\c ++\&. ++.SP ++Several options (shown above as \fB\-\fP\fIreport\fP) control what ++kind of report is generated: ++.TP 1i ++.B \ \ \ \ \ \ \-c ++Report on each time \fBcommit\fP was used (i.e., each time the ++repository was modified). ++.TP 1i ++\fB\ \ \ \ \ \ \-m\fP \fImodule\fP ++Report on a particular \fImodule\fP. (You can meaningfully use ++\fB\-m\fP more than once on the command line.) ++.TP 1i ++.B \ \ \ \ \ \ \-o ++Report on checked-out modules. ++.TP 1i ++.B \ \ \ \ \ \ \-T ++Report on all tags. ++.TP 1i ++\fB\ \ \ \ \ \ \-x\fP \fItype\fP ++Extract a particular set of record types \fIX\fP from the \fBcvs\fP ++history. The types are indicated by single letters, which you may ++specify in combination. ++Certain commands have a single record type: \fBcheckout\fP (type `O'), ++\fBrelease\fP (type `F'), and \fBrtag\fP (type `T'). One of four ++record types may result from an \fBupdate\fP: `W', when the working copy ++of a file is deleted during update (because it was gone from the ++repository); `U', when a working file was copied from the ++repository; `G', when a merge was necessary and it succeeded; and 'C', ++when a merge was necessary but collisions were detected (requiring ++manual merging). Finally, one of three record types results from ++\fBcommit\fP: `M', when a file was modified; `A', when a file is first ++added; and `R', when a file is removed. ++.TP 1i ++.B \ \ \ \ \ \ \-e ++Everything (all record types); equivalent to specifying ++.` "\-xMACFROGWUT". ++.TP 1i ++\fB\ \ \ \ \ \ \-z\fP \fIzone\fP ++Use time zone ++.I zone ++when outputting history records. ++The zone name ++.B LT ++stands for local time; ++numeric offsets stand for hours and minutes ahead of UTC. ++For example, ++.B +0530 ++stands for 5 hours and 30 minutes ahead of (i.e. east of) UTC. ++.PP ++.RS .5i ++The options shown as \fB\-\fP\fIflags\fP constrain the report without ++requiring option arguments: ++.RE ++.TP 1i ++.B \ \ \ \ \ \ \-a ++Show data for all users (the default is to show data only for the user ++executing ++.` "cvs history"). ++.TP 1i ++.B \ \ \ \ \ \ \-l ++Show last modification only. ++.TP 1i ++.B \ \ \ \ \ \ \-w ++Show only the records for modifications done from the same working ++directory where ++.` "cvs history" ++is executing. ++.PP ++.RS .5i ++The options shown as \fB\-\fP\fIoptions args\fP constrain the report ++based on an argument: ++.RE ++.TP 1i ++\fB\ \ \ \ \ \ \-b\fP \fIstr\fP ++Show data back to a record containing the string \fIstr\fP in either ++the module name, the file name, or the repository path. ++.TP 1i ++\fB\ \ \ \ \ \ \-D\fP \fIdate\fP ++Show data since \fIdate\fP. ++.TP 1i ++\fB\ \ \ \ \ \ \-p\fP \fIrepository\fP ++Show data for a particular source repository (you can specify several ++\fB\-p\fP options on the same command line). ++.TP 1i ++\fB\ \ \ \ \ \ \-r\fP \fIrev\fP ++Show records referring to revisions since the revision or tag ++named \fIrev\fP appears in individual RCS files. ++Each ++.SM RCS ++file is searched for the revision or tag. ++.TP 1i ++\fB\ \ \ \ \ \ \-t\fP \fItag\fP ++Show records since tag \fItag\fP was last added to the history file. ++This differs from the \fB-r\fP flag above in that it reads ++only the history file, not the ++.SM RCS ++files, and is much faster. ++.TP 1i ++\fB\ \ \ \ \ \ \-u\fP \fIname\fP ++Show records for user \fIname\fP. ++.PP ++.TP ++\fBimport\fP [\fB\-\fP\fIoptions\fP] \fIrepository vendortag releasetag\fP.\|.\|. ++.I Requires: ++Repository, source distribution directory. ++.br ++.I Changes: ++repository. ++.br ++Use ++.` "cvs import" ++to incorporate an entire source ++distribution from an outside source (e.g., a source vendor) into your ++source repository directory. You can use this command both for ++initial creation of a repository, and for wholesale updates to the ++module form the outside source. ++.SP ++The \fIrepository\fP argument gives a directory name (or a path to a ++directory) under the CVS root directory for repositories; if the ++directory did not exist, \fBimport\fP creates it. ++.SP ++When you use \fBimport\fP for updates to source that has been modified in your ++source repository (since a prior \fBimport\fP), it ++will notify you of any files that conflict in the two branches of ++development; use ++.` "cvs checkout -j" ++to reconcile the differences, as \fBimport\fP instructs you to do. ++.SP ++By default, certain file names are ignored during ++.` "cvs import": ++names associated with ++.SM CVS ++administration, or with other common source control systems; common ++names for patch files, object files, archive files, and editor backup ++files; and other names that are usually artifacts of assorted utilities. ++For an up to date list of ignored file names, see the Cederqvist manual (as ++described in the SEE ALSO section of this manpage). ++.SP ++The outside source is saved in a first-level ++branch, by default ++.` "1.1.1". ++Updates are leaves of this ++branch; for example, files from the first imported collection of ++source will be revision ++.` "1.1.1.1", ++then files from the first ++imported update will be revision ++.` "1.1.1.2", ++and so on. ++.SP ++At least three arguments are required. \fIrepository\fP is needed to ++identify the collection of source. \fIvendortag\fP is a tag for the ++entire branch (e.g., for ++.` "1.1.1"). ++You must also specify at ++least one \fIreleasetag\fP to identify the files at the leaves created ++each time you execute ++.` "cvs import". ++.SP ++One of the standard ++.B cvs ++command options is available: \fB\-m\fP ++\fImessage\fP. If you do not specify a logging message with ++\fB\-m\fP, your editor is invoked (as with \fBcommit\fP) to allow you ++to enter one. ++.SP ++There are three additional special options. ++.SP ++Use ++.` "\-d" ++to specify that each file's time of last modification should be used ++for the checkin date and time. ++.SP ++Use ++.` "\-b \fIbranch\fP" ++to specify a first-level branch other ++than ++.` "1.1.1". ++.SP ++Use ++.` "\-I \fIname\fP" ++to specify file names that should be ++ignored during \fBimport\fP. You can use this option repeatedly. ++To avoid ignoring any files at all (even those ignored by default), ++specify ++.` "\-I !". ++.TP ++\fBlog\fP [\fB\-l\fP] \fIrlog-options [files\fP\|.\|.\|.] ++.I Requires: ++repository, working directory. ++.br ++.I Changes: ++nothing. ++.br ++.I Synonym: ++.B rlog ++.br ++Display log information for \fIfiles\fP. ++Among the more useful options are \fB\-h\fP ++to display only the header (including tag definitions, but omitting ++most of the full log); \fB\-r\fP to select logs on particular ++revisions or ranges of revisions; and \fB\-d\fP to select particular ++dates or date ranges. See ++.BR rlog ( 1 ) ++for full explanations. ++This command is recursive by default, unless the ++.B \-l ++option is specified. ++.TP ++\fBrdiff\fP [\fB\-\fP\fIflags\fP] [\fB\-V\fP \fIvn\fP] [\fB\-r\fP \fIt\fP|\fB\-D\fP \fId\fP [\fB\-r\fP \fIt2\fP|\fB\-D\fP \fId2\fP]] \fImodules\|.\|.\|.\fP ++.I Requires: ++repository. ++.br ++.I Changes: ++nothing. ++.br ++.I Synonym: ++.B patch ++.br ++Builds a Larry Wall format ++.BR patch ( 1 ) ++file between two releases, that can be fed directly into the ++.B patch ++program to bring an old release up-to-date with the new release. ++(This is one of the few \fBcvs\fP commands that operates directly from ++the repository, and doesn't require a prior ++.BR checkout .) ++The diff output is sent to the standard output device. ++You can specify (using the standard \fB\-r\fP and \fB\-D\fP options) ++any combination of one or two revisions or dates. ++If only one revision or date is specified, the ++patch file reflects differences between that revision or date and the ++current ``head'' revisions in the ++.SM RCS ++file. ++.SP ++Note that if the software release affected ++is contained in more than one directory, then it may be necessary to ++specify the ++.B \-p ++option to the ++.B patch ++command when patching the old sources, so that ++.B patch ++is able to find the files that are located in other directories. ++.SP ++The standard option \fIflags\fP \fB\-f\fP, and \fB\-l\fP ++are available with this command. There are also several ++special option flags: ++.SP ++If you use the ++.B \-s ++option, no patch output is produced. ++Instead, a summary of the changed or added files between the two ++releases is sent to the standard output device. ++This is useful for finding out, for example, which files have changed ++between two dates or revisions. ++.SP ++If you use the ++.B \-t ++option, a diff of the top two revisions is sent to the standard output device. ++This is most useful for seeing what the last change to a file was. ++.SP ++If you use the ++.B \-u ++option, the patch output uses the newer ``unidiff'' format for context ++diffs. ++.SP ++You can use ++.B \-c ++to explicitly specify the ++.` "diff \-c" ++form of context diffs ++(which is the default), if you like. ++.TP ++\fBrelease\fP [\fB\-dQq\fP] \fImodules\fP\|.\|.\|. ++.I Requires: ++Working directory. ++.br ++.I Changes: ++Working directory, history log. ++.br ++This command is meant to safely cancel the effect of ++.` "cvs checkout". ++Since ++.B cvs ++doesn't lock files, it isn't strictly necessary to use this command. ++You can always simply delete your working directory, if you ++like; but you risk losing changes you may have forgotten, and you ++leave no trace in the ++.B cvs ++history file that you've abandoned your checkout. ++.SP ++Use ++.` "cvs release" ++to avoid these problems. This command ++checks that no un-committed changes are present; that you are ++executing it from immediately above, or inside, a \fBcvs\fP working ++directory; and that the repository recorded for your files is the same ++as the repository defined in the module database. ++.SP ++If all these conditions are true, ++.` "cvs release" ++leaves a ++record of its execution (attesting to your intentionally abandoning ++your checkout) in the ++.B cvs ++history log. ++.SP ++You can use the \fB\-d\fP flag to request that your working copies of ++the source files be deleted if the \fBrelease\fP succeeds. ++.TP ++\fBremove\fP [\fB\-lR\fP] [\fIfiles\|.\|.\|.\fP] ++.I Requires: ++Working directory. ++.br ++.I Changes: ++Working directory. ++.br ++.I Synonyms: ++.BR rm ", " delete ++.br ++Use this command to declare that you wish to remove \fIfiles\fP from ++the source repository. Like most ++.B cvs ++commands, ++.` "cvs remove" ++works on files in your working ++directory, not directly on the repository. As a safeguard, it also ++requires that you first erase the specified files from your working ++directory. ++.SP ++The files are not actually removed until you apply your changes to the ++repository with ++.BR commit ; ++at that point, the corresponding ++.SM RCS ++files in the source repository are ++.I moved ++into the ++.` "Attic" ++directory (also within the source repository). ++.SP ++This command is recursive by default, scheduling all physically removed ++files that it finds for removal by the next ++.BR commit . ++Use the ++.B \-l ++option to avoid this recursion, or just specify that actual files that you ++wish remove to consider. ++.TP ++\fBrtag\fP [\fB\-f\|alnRQq\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] \fIsymbolic_tag\fP \fImodules\|.\|.\|.\fP ++.I Requires: ++repository. ++.br ++.I Changes: ++repository. ++.br ++.I Synonym: ++.B rfreeze ++.br ++You can use this command to assign symbolic tags to particular, ++explicitly specified source versions in the repository. ++.` "cvs rtag" ++works directly on the repository contents (and requires no ++prior ++.BR checkout ). ++Use ++.` "cvs tag" ++instead, to base the selection of ++versions to tag on the contents of your working directory. ++.SP ++In general, tags (often the symbolic names of software distributions) ++should not be removed, but the ++.B \-d ++option is available as a means to remove completely obsolete symbolic names ++if necessary (as might be the case for an Alpha release, say). ++.SP ++.` "cvs rtag" ++will not move a tag that already exists. With the \fB\-F\fP option, ++however, ++.` "cvs rtag" ++will re-locate any instance of \fIsymbolic_tag\fP that already exists ++on that file to the new repository versions. Without the \fB\-F\fP ++option, attempting to use ++.` "cvs rtag" ++to apply a tag that already exists on that file will produce an error ++message. ++.SP ++The \fB-b\fP option makes the tag a ``branch'' tag, allowing ++concurrent, isolated development. ++This is most useful for creating a patch to a previously released software ++distribution. ++.SP ++You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those ++files that already contain a certain tag. This method would be used ++to rename a tag: tag only the files identified by the old tag, then delete the ++old tag, leaving the new tag on exactly the same files as the old tag. ++.SP ++.B rtag ++executes recursively by default, tagging all subdirectories of ++\fImodules\fP you specify in the argument. You can restrict its ++operation to top-level directories with the standard \fB\-l\fP option; ++or you can explicitly request recursion with \fB\-R\fP. ++.SP ++The modules database can specify a program to execute whenever a tag ++is specified; a typical use is to send electronic mail to a group of ++interested parties. If you want to bypass that program, use the ++standard \fB\-n\fP option. ++.SP ++Use the ++.B \-a ++option to have ++.B rtag ++look in the ++.` "Attic" ++for removed files that contain the specified tag. ++The tag is removed from these files, which makes it convenient to re-use a ++symbolic tag as development continues (and files get removed from the ++up-coming distribution). ++.TP ++\fBstatus\fP [\fB\-lRqQ\fP] [\fB\-v\fP] [\fIfiles\fP\|.\|.\|.] ++.I Requires: ++working directory, repository. ++.br ++.I Changes: ++nothing. ++.br ++Display a brief report on the current status of \fIfiles\fP with ++respect to the source repository, including any ``sticky'' tags, ++dates, or \fB\-k\fP options. (``Sticky'' options will restrict how ++.` "cvs update" ++operates until you reset them; see the ++description of ++.` "cvs update \-A\|.\|.\|.".) ++.SP ++You can also use this command to anticipate the potential impact of a ++.` "cvs update" ++on your working source directory. If you do ++not specify any \fIfiles\fP explicitly, reports are shown for all ++files that \fBcvs\fP has placed in your working directory. You can ++limit the scope of this search to the current directory itself (not ++its subdirectories) with the standard \fB\-l\fP option flag; or you ++can explicitly request recursive status reports with the \fB\-R\fP ++option. ++.SP ++The ++.B \-v ++option causes the symbolic tags for the ++.SM RCS ++file to be displayed as well. ++.TP ++\fBtag\fP [\fB\-lQqR\fP] [\fB\-F\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] [\fB\-f\fP] \fIsymbolic_tag\fP [\fIfiles\fP\|.\|.\|.\|] ++.I Requires: ++working directory, repository. ++.br ++.I Changes: ++repository. ++.br ++.I Synonym: ++.B freeze ++.br ++Use this command to assign symbolic tags to the nearest repository ++versions to your working sources. The tags are applied immediately to ++the repository, as with \fBrtag\fP. ++.SP ++One potentially surprising aspect of the fact that \fBcvs tag\fP ++operates on the repository is that you are tagging the checked-in ++revisions, which may differ from locally modified files in your working ++directory. If you want to avoid doing this by mistake, specify the ++\fB-c\fP option to \fBcvs tag\fP. If there are any locally modified files, CVS ++will abort with an error before it tags any files. ++.SP ++One use for tags is to record a ``snapshot'' of the current sources ++when the software freeze date of a project arrives. As bugs are fixed ++after the freeze date, only those changed sources that are to be part ++of the release need be re-tagged. ++.SP ++The symbolic tags are meant to permanently record which revisions of which ++files were used in creating a software distribution. ++The ++.BR checkout , ++.B export ++and ++.B update ++commands allow you to extract an exact copy of a tagged release at any time in ++the future, regardless of whether files have been changed, added, or removed ++since the release was tagged. ++.SP ++You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those ++files that already contain a certain tag. This method would be used ++to rename a tag: tag only the files identified by the old tag, then delete the ++old tag, leaving the new tag on exactly the same files as the old tag. ++.SP ++Specifying the \fB\-f\fP flag in addition to the \fB\-r\fP or \fB\-D\fP ++flags will tag those files named on the command line even if they do not ++contain the old tag or did not exist on the specified date. ++.SP ++By default (without a \fB\-r\fP or \fB\-D\fP flag) ++the versions to be tagged are supplied ++implicitly by the \fBcvs\fP records of your working files' history ++rather than applied explicitly. ++.SP ++If you use ++.` "cvs tag \-d \fIsymbolic_tag\fP\|.\|.\|.", ++the ++symbolic tag you specify is ++.I deleted ++instead of being added. \fIWarning\fP: Be very certain of your ground ++before you delete a tag; doing this effectively discards some ++historical information, which may later turn out to have been valuable. ++.SP ++.` "cvs tag" ++will not move a tag that already exists. With the \fB\-F\fP option, ++however, ++.` "cvs tag" ++will re-locate any instance of \fIsymbolic_tag\fP that already exists ++on that file to the new repository versions. Without the \fB\-F\fP ++option, attempting to use ++.` "cvs tag" ++to apply a tag that already exists on that file will produce an error ++message. ++.SP ++The \fB-b\fP option makes the tag a ``branch'' tag, allowing ++concurrent, isolated development. ++This is most useful for creating a patch to a previously released software ++distribution. ++.SP ++Normally, ++.B tag ++executes recursively through subdirectories; you can prevent this by ++using the standard \fB\-l\fP option, or specify the recursion ++explicitly by using \fB\-R\fP. ++.TP ++\fBupdate\fP [\fB\-ACdf\|lPpQqR\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP|\fB\-D\fP \fIdate\fP] \fIfiles\|.\|.\|.\fP ++.I Requires: ++repository, working directory. ++.br ++.I Changes: ++working directory. ++.br ++After you've run ++.B checkout ++to create your private copy of source from the common repository, ++other developers will continue changing the central source. From time ++to time, when it is convenient in your development process, you can ++use the ++.B update ++command ++from within your working directory to reconcile your work with any ++revisions applied to the source repository since your last ++.B checkout ++or ++.BR update . ++.SP ++.B update ++keeps you informed of its progress by printing a line for each file, ++prefaced with one of the characters ++.` "U P A R M C ?" ++to indicate the status of the file: ++.TP 1i ++\fBU\fP \fIfile\fP ++The file was brought \fIup to date\fP with respect to the repository. ++This is done for any file that exists in the repository but not in ++your source, and for files that you haven't changed but are not the most ++recent versions available in the repository. ++.TP 1i ++\fBP\fP \fIfile\fP ++Like \fBU\fP, but the CVS server sends a patch instead of an entire file. ++This accomplishes the same thing as \fBU\fP using less bandwidth. ++.TP 1i ++\fBA\fP \fIfile\fP ++The file has been \fIadded\fP to your private copy of the sources, and ++will be added to the ++source repository when you run ++.` "cvs commit" ++on the file. ++This is a reminder to you that the file needs to be committed. ++.TP 1i ++\fBR\fP \fIfile\fP ++The file has been \fIremoved\fP from your private copy of the sources, and ++will be removed from the ++source repository when you run ++.` "cvs commit" ++on the file. ++This is a reminder to you that the file needs to be committed. ++.TP 1i ++\fBM\fP \fIfile\fP ++The file is \fImodified\fP in your working directory. ++.` "M" ++can indicate one of two states for a file you're working on: either ++there were no modifications to the same file in the repository, so ++that your file remains as you last saw it; or there were modifications ++in the repository as well as in your copy, but they were ++\fImerged\fP successfully, without conflict, in your working ++directory. ++.TP 1i ++\fBC\fP \fIfile\fP ++A \fIconflict\fP was detected while trying to merge your changes to ++\fIfile\fP with changes from the source repository. \fIfile\fP (the ++copy in your working directory) is now the result of merging ++the two versions; an unmodified copy of your file is also ++in your working directory, with the name `\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP', ++where ++.I version ++is the ++revision that your modified file started from. ++(Note that some systems automatically purge files that begin with ++\& ++.` ".#" ++if they have not been accessed for a few days. ++If you intend to keep a copy of your original file, it is a very good ++idea to rename it.) ++.TP 1i ++\fB?\fP \fIfile\fP ++\fIfile\fP is in your working directory, but does not correspond to ++anything in the source repository, and is not in the list of files ++for \fBcvs\fP to ignore (see the description of the \fB\-I\fP option). ++.PP ++.RS .5i ++.SP ++Use the ++.B \-A ++option to reset any sticky tags, dates, or ++.B \-k ++options. (If you get a working copy of a file by using one of the ++\fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the ++corresponding tag, date, or \fIkflag\fP and continues using it on ++future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these ++specifications, and retrieve the ``head'' version of the file). ++.SP ++The \fB\-j\fP\fIbranch\fP option ++merges the changes made between the ++resulting revision and the revision that it is based on (e.g., if ++the tag refers to a branch, ++.B cvs ++will merge all changes made in ++that branch into your working file). ++.SP ++With two \fB-j\fP options, ++.B cvs ++will merge in the changes between the two respective revisions. ++This can be used to ``remove'' a certain delta from your working file. ++E.g., If the file foo.c is based on ++revision 1.6 and I want to remove the changes made between 1.3 and ++1.5, I might do: ++.SP ++.in +1i ++.ft B ++.nf ++example% cvs update -j1.5 -j1.3 foo.c # note the order... ++.fi ++.ft P ++.in -1i ++.SP ++In addition, each \fB-j\fP option can contain on optional date ++specification which, when used with branches, can limit the chosen ++revision to one within a specific date. ++An optional date is specified by adding a colon (:) to the tag. ++.SP ++.in +1i ++.ft B ++.nf ++-jSymbolic_Tag:Date_Specifier ++.fi ++.ft P ++.in -1i ++.SP ++Use the ++.B \-d ++option to create any directories that exist in the repository if they're ++missing from the working directory. (Normally, update acts only on ++directories and files that were already enrolled in your ++working directory.) This is useful for updating directories ++that were created in the repository since the initial ++\fBcheckout\fP; but it has an unfortunate side effect. If you ++deliberately avoided certain directories in the repository when you ++created your working directory (either through use of a module name or by ++listing explicitly the files and directories you wanted on the ++command line), then updating with ++.B \-d ++will create those directories, which may not be what you want. ++.SP ++Use \fB\-I\fP \fIname\fP to ignore files whose names match \fIname\fP ++(in your working directory) during the update. You can specify ++\fB\-I\fP more than once on the command line to specify several files ++to ignore. By default, ++\fBupdate\fP ignores files whose names match certain patterns; for ++an up to date list of ignored file names, see the Cederqvist manual (as ++described in the SEE ALSO section of this manpage). ++.SP ++Use ++.` "\-I !" ++to avoid ignoring any files at all. ++.SP ++Use the ++.` "\-C" ++option to overwrite locally modified files with clean copies from ++the repository (the modified file is saved in ++`\fB.#\fP\fIfile\fP\fB.\fP\fIrevision\fP', however). ++.SP ++The standard \fBcvs\fP command options \fB\-f\fP, \fB\-k\fP, ++\fB\-l\fP, \fB\-P\fP, \fB\-p\fP, and \fB\-r\fP ++are also available with \fBupdate\fP. ++.RE ++.SH "FILES" ++For more detailed information on ++.B cvs ++supporting files, see ++.BR cvs ( 5 ). ++.LP ++.I ++Files in home directories: ++.TP ++\&.cvsrc ++The ++.B cvs ++initialization file. Lines in this file can be used to specify default ++options for each ++.B cvs ++command. For example the line ++.` "diff \-c" ++will ensure that ++.` "cvs diff" ++is always passed the ++.B \-c ++option in addition to any other options passed on the command line. ++.TP ++\&.cvswrappers ++Specifies wrappers to be used in addition to those specified in the ++CVSROOT/cvswrappers file in the repository. ++.LP ++.I ++Files in working directories: ++.TP ++CVS ++A directory of \fBcvs\fP administrative files. ++.I ++Do not delete. ++.TP ++CVS/Entries ++List and status of files in your working directory. ++.TP ++CVS/Entries.Backup ++A backup of ++.` "CVS/Entries". ++.TP ++CVS/Entries.Static ++Flag: do not add more entries on ++.` "cvs update". ++.TP ++CVS/Root ++Pathname to the repository ( ++.SM CVSROOT ++) location at the time of checkout. This file is used instead ++of the ++.SM CVSROOT ++environment variable if the environment variable is not ++set. A warning message will be issued when the contents of this ++file and the ++.SM CVSROOT ++environment variable differ. The file may be over-ridden by the ++presence of the ++.SM CVS_IGNORE_REMOTE_ROOT ++environment variable. ++.TP ++CVS/Repository ++Pathname to the corresponding directory in the source repository. ++.TP ++CVS/Tag ++Contains the per-directory ``sticky'' tag or date information. ++This file is created/updated when you specify ++.B \-r ++or ++.B \-D ++to the ++.B checkout ++or ++.B update ++commands, and no files are specified. ++.TP ++CVS/Checkin.prog ++Name of program to run on ++.` "cvs commit". ++.TP ++CVS/Update.prog ++Name of program to run on ++.` "cvs update". ++.LP ++.I ++Files in source repositories: ++.TP ++$CVSROOT/CVSROOT ++Directory of global administrative files for repository. ++.TP ++CVSROOT/commitinfo,v ++Records programs for filtering ++.` "cvs commit" ++requests. ++.TP ++CVSROOT/cvswrappers,v ++Records ++.B cvs ++wrapper commands to be used when checking files into and out of the ++repository. Wrappers allow the file or directory to be processed ++on the way in and out of CVS. The intended uses are many, one ++possible use would be to reformat a C file before the file is checked ++in, so all of the code in the repository looks the same. ++.TP ++CVSROOT/editinfo,v ++Records programs for editing/validating ++.` "cvs commit" ++log entries. ++.TP ++CVSROOT/history ++Log file of \fBcvs\fP transactions. ++.TP ++CVSROOT/loginfo,v ++Records programs for piping ++.` "cvs commit" ++log entries. ++.TP ++CVSROOT/modules,v ++Definitions for modules in this repository. ++.TP ++CVSROOT/rcsinfo,v ++Records pathnames to templates used during a ++.` "cvs commit" ++operation. ++.TP ++CVSROOT/taginfo,v ++Records programs for validating/logging ++.` "cvs tag" ++and ++.` "cvs rtag" ++operations. ++.TP ++MODULE/Attic ++Directory for removed source files. ++.TP ++#cvs.lock ++A lock directory created by ++.B cvs ++when doing sensitive changes to the ++source repository. ++.TP ++#cvs.tfl.\fIpid\fP ++Temporary lock file for repository. ++.TP ++#cvs.rfl.\fIpid\fP ++A read lock. ++.TP ++#cvs.wfl.\fIpid\fP ++A write lock. ++.SH "ENVIRONMENT" ++.TP ++.SM CVSROOT ++Should contain the full pathname to the root of the ++.B cvs ++source repository (where the ++.SM RCS ++files are kept). This information must be available to \fBcvs\fP for ++most commands to execute; if ++.SM CVSROOT ++is not set, or if you wish to override it for one invocation, you can ++supply it on the command line: ++.` "cvs \-d \fIcvsroot cvs_command\fP\|.\|.\|." ++You may not need to set ++.SM CVSROOT ++if your \fBcvs\fP binary has the right path compiled in. ++.TP ++.SM CVSREAD ++If this is set, ++.B checkout ++and ++.B update ++will try hard to make the files in your working directory read-only. ++When this is not set, the default behavior is to permit modification ++of your working files. ++.TP ++.SM CVSREADONLYFS ++If this is set, the ++.B \-R ++option is assumed, and ++.B cvs ++operates in read-only repository mode. ++.TP ++.SM RCSBIN ++Specifies the full pathname where to find ++.SM RCS ++programs, such as ++.BR co ( 1 ) ++and ++.BR ci ( 1 ) ++(CVS 1.9 and older). ++.TP ++.SM CVSEDITOR ++Specifies the program to use for recording log messages during ++.BR commit . ++If not set, the ++.SM VISUAL ++and ++.SM EDITOR ++environment variables are tried (in that order). ++If neither is set, a system-dependent default editor (e.g., ++.BR vi ) ++is used. ++.TP ++.SM CVS_CLIENT_PORT ++If this variable is set then ++.B cvs ++will use this port in ++\fIpserver mode\fP ++rather than the default port (cvspserver 2401). ++.TP ++.SM CVS_IGNORE_REMOTE_ROOT ++If this variable is set then ++.B cvs ++will ignore all references to remote repositories in the CVS/Root file. ++.TP ++.SM CVS_OPTIONS ++Specifies a set of default options for ++.B cvs. ++These options are interpreted before the startup file (\fI~/.cvsrc\fP) is read ++and can be overridden by explicit command line parameters. ++.TP ++.SM CVS_RSH ++.B cvs ++uses the contents of this variable to determine the name of the ++remote shell command to use when starting a ++.B cvs ++server. If this variable is not set then ++.` "ssh" ++is used. ++.TP ++.SM CVS_SERVER ++.B cvs ++uses the contents of this variable to determine the name of the ++.B cvs ++server command. If this variable is not set then ++.` "cvs" ++is used. ++.TP ++.SM CVSWRAPPERS ++This variable is used by the ++.` "cvswrappers" ++script to determine the name of the wrapper file, in addition to the ++wrappers defaults contained in the repository ++.SM (CVSROOT/cvswrappers) ++and the user's home directory (~/.cvswrappers). ++.SH "AUTHORS" ++.TP ++Dick Grune ++Original author of the ++.B cvs ++shell script version posted to ++.B comp.sources.unix ++in the volume6 release of December, 1986. ++Credited with much of the ++.B cvs ++conflict resolution algorithms. ++.TP ++Brian Berliner ++Coder and designer of the ++.B cvs ++program itself in April, 1989, based on the original work done by Dick. ++.TP ++Jeff Polk ++Helped Brian with the design of the ++.B cvs ++module and vendor branch support and author of the ++.BR checkin ( 1 ) ++shell script (the ancestor of ++.` "cvs import"). ++.TP ++And many others too numerous to mention here. ++.SH "SEE ALSO" ++The most comprehensive manual for CVS is ++Version Management with CVS by Per Cederqvist et al. Depending on ++your system, you may be able to get it with the ++.B info cvs ++command or it may be available as cvs.ps (postscript), cvs.texinfo ++(texinfo source), or cvs.html. ++.SP ++For CVS updates, more information on documentation, software related ++to CVS, development of CVS, and more, see: ++.in +1i ++.B http://cvshome.org ++.B http://www.loria.fr/~molli/cvs-index.html ++.in -1i ++.SP ++.BR ci ( 1 ), ++.BR co ( 1 ), ++.BR cvs ( 5 ), ++.BR cvsbug ( 8 ), ++.BR diff ( 1 ), ++.BR grep ( 1 ), ++.BR patch ( 1 ), ++.BR rcs ( 1 ), ++.BR rcsdiff ( 1 ), ++.BR rcsmerge ( 1 ), ++.BR rlog ( 1 ). Index: man/cvsbug.8 diff -u src/contrib/cvs/man/cvsbug.8:1.1.1.4 src/contrib/cvs/man/cvsbug.8:1.3 --- src/contrib/cvs/man/cvsbug.8:1.1.1.4 Mon Sep 2 14:50:19 2002 @@ -292,15 +2505,15 @@ free (preload_update_dir); preload_update_dir = oldupdate; Index: src/client.c -diff -u src/contrib/cvs/src/client.c:1.1.1.15 src/contrib/cvs/src/client.c:1.11 ---- src/contrib/cvs/src/client.c:1.1.1.15 Thu Apr 15 10:01:55 2004 -+++ src/client.c Thu Apr 15 10:17:26 2004 +diff -u src/contrib/cvs/src/client.c:1.1.1.16 src/contrib/cvs/src/client.c:1.12 +--- src/contrib/cvs/src/client.c:1.1.1.16 Fri Jun 11 04:05:37 2004 ++++ src/client.c Fri Jun 11 04:12:50 2004 @@ -10,6 +10,10 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ +/* -+ * FreeBSD: src/contrib/cvs/src/client.c,v 1.11 2004/04/15 01:17:26 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/client.c,v 1.12 2004/06/10 19:12:50 peter Exp $ + */ + #ifdef HAVE_CONFIG_H @@ -344,30 +2557,30 @@ if (args->no_contents && supported_request ("Is-modified")) Index: src/commit.c -diff -u src/contrib/cvs/src/commit.c:1.1.1.13 src/contrib/cvs/src/commit.c:1.14 ---- src/contrib/cvs/src/commit.c:1.1.1.13 Thu Apr 15 10:01:55 2004 -+++ src/commit.c Thu Apr 15 10:17:26 2004 +diff -u src/contrib/cvs/src/commit.c:1.1.1.14 src/contrib/cvs/src/commit.c:1.15 +--- src/contrib/cvs/src/commit.c:1.1.1.14 Fri Jun 11 04:05:37 2004 ++++ src/commit.c Fri Jun 11 04:12:50 2004 @@ -12,6 +12,7 @@ * * The call is: cvs commit [options] files... * -+ * FreeBSD: src/contrib/cvs/src/commit.c,v 1.14 2004/04/15 01:17:26 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/commit.c,v 1.15 2004/06/10 19:12:50 peter Exp $ */ #include Index: src/cvs.h -diff -u src/contrib/cvs/src/cvs.h:1.1.1.14 src/contrib/cvs/src/cvs.h:1.19 ---- src/contrib/cvs/src/cvs.h:1.1.1.14 Thu Apr 15 10:01:55 2004 -+++ src/cvs.h Thu Apr 15 10:41:05 2004 +diff -u src/contrib/cvs/src/cvs.h:1.1.1.15 src/contrib/cvs/src/cvs.h:1.20 +--- src/contrib/cvs/src/cvs.h:1.1.1.15 Fri Jun 11 04:05:38 2004 ++++ src/cvs.h Fri Jun 11 04:12:50 2004 @@ -9,6 +9,7 @@ /* * basic information used in all source files * -+ * FreeBSD: src/contrib/cvs/src/cvs.h,v 1.19 2004/04/15 01:41:05 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/cvs.h,v 1.20 2004/06/10 19:12:50 peter Exp $ */ -@@ -190,6 +191,7 @@ +@@ -194,6 +195,7 @@ #define CVSROOTADM_WRITERS "writers" #define CVSROOTADM_PASSWD "passwd" #define CVSROOTADM_CONFIG "config" @@ -375,7 +2588,7 @@ #define CVSNULLREPOS "Emptydir" /* an empty directory */ -@@ -259,6 +261,8 @@ +@@ -263,6 +265,8 @@ #define CVSREAD_ENV "CVSREAD" /* make files read-only */ #define CVSREAD_DFLT 0 /* writable files by default */ @@ -384,7 +2597,7 @@ #define TMPDIR_ENV "TMPDIR" /* Temporary directory */ #define EDITOR1_ENV "CVSEDITOR" /* which editor to use */ -@@ -368,6 +372,7 @@ +@@ -372,6 +376,7 @@ extern int use_editor; extern int cvswrite; extern mode_t cvsumask; @@ -392,7 +2605,7 @@ -@@ -386,7 +391,9 @@ +@@ -390,7 +395,9 @@ extern int trace; /* Show all commands */ extern int noexec; /* Don't modify disk anywhere */ @@ -402,7 +2615,7 @@ extern int top_level_admin; -@@ -494,6 +501,7 @@ +@@ -498,6 +505,7 @@ char *strcat_filename_onto_homedir PROTO ((const char *, const char *)); char *cvs_temp_name PROTO ((void)); FILE *cvs_temp_file PROTO ((char **filename)); @@ -410,7 +2623,7 @@ int numdots PROTO((const char *s)); char *increment_revnum PROTO ((const char *)); -@@ -572,6 +580,7 @@ +@@ -576,6 +584,7 @@ void WriteTag PROTO ((const char *dir, const char *tag, const char *date, int nonbranch, const char *update_dir, const char *repository)); @@ -418,6 +2631,25 @@ void cat_module PROTO((int status)); void check_entries PROTO((char *dir)); void close_module PROTO((DBM * db)); +Index: src/cvsbug.in +diff -u src/contrib/cvs/src/cvsbug.in:1.1.1.3 src/contrib/cvs/src/cvsbug.in:1.2 +--- src/contrib/cvs/src/cvsbug.in:1.1.1.3 Thu Apr 15 10:01:55 2004 ++++ src/cvsbug.in Wed Sep 7 22:39:44 2005 +@@ -109,14 +109,12 @@ + /usr/bin/ypcat passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" | + cut -f5 -d':' | sed -e 's/,.*//' > $TEMP + ORIGINATOR="`cat $TEMP`" +- rm -f $TEMP + fi + fi + + if [ "$ORIGINATOR" = "" ]; then + grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP + ORIGINATOR="`cat $TEMP`" +- rm -f $TEMP + fi + + if [ -n "$ORGANIZATION" ]; then Index: src/diff.c diff -u src/contrib/cvs/src/diff.c:1.1.1.12 src/contrib/cvs/src/diff.c:1.21 --- src/contrib/cvs/src/diff.c:1.1.1.12 Thu Apr 15 10:01:55 2004 @@ -608,12 +2840,10 @@ #include "cvs.h" #include "getline.h" -@@ -633,6 +636,72 @@ - /* put the node into the list */ - addnode (list, p); +@@ -635,6 +638,72 @@ return (p); -+} -+ + } + +static char *root_template; + +static int @@ -678,19 +2908,21 @@ + } + } + free(tmp); - } - ++} ++ /* + * Write out/Clear the CVS/Tag file. + */ Index: src/filesubr.c -diff -u src/contrib/cvs/src/filesubr.c:1.1.1.11 src/contrib/cvs/src/filesubr.c:1.11 ---- src/contrib/cvs/src/filesubr.c:1.1.1.11 Thu Apr 15 10:01:55 2004 -+++ src/filesubr.c Thu Apr 15 10:17:27 2004 +diff -u src/contrib/cvs/src/filesubr.c:1.1.1.12 src/contrib/cvs/src/filesubr.c:1.12 +--- src/contrib/cvs/src/filesubr.c:1.1.1.12 Fri Jun 11 04:05:37 2004 ++++ src/filesubr.c Fri Jun 11 04:12:50 2004 @@ -17,6 +17,10 @@ definitions under operating systems (like, say, Windows NT) with different file system semantics. */ +/* -+ * FreeBSD: src/contrib/cvs/src/filesubr.c,v 1.11 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/filesubr.c,v 1.12 2004/06/10 19:12:50 peter Exp $ + */ + #include @@ -763,31 +2995,64 @@ return 0; /* we only do one directory at a time for read locks! */ -@@ -483,6 +485,11 @@ - +@@ -484,6 +486,11 @@ if (noexec) return 0; -+ + + if (readonlyfs) { + error (0, 0, "write lock failed - read-only repository"); + return (1); + } - ++ /* We only know how to do one list at a time */ if (locklist != (List *) NULL) + { +Index: src/log.c +diff -u src/contrib/cvs/src/log.c:1.1.1.12 src/contrib/cvs/src/log.c:1.2 +--- src/contrib/cvs/src/log.c:1.1.1.12 Fri Jun 11 04:05:37 2004 ++++ src/log.c Tue Jul 6 17:10:38 2004 +@@ -10,6 +10,8 @@ + * Prints the RCS "log" (rlog) information for the specified files. With no + * argument, prints the log information for all the files in the directory + * (recursive by default). ++ * ++ * FreeBSD: src/contrib/cvs/src/log.c,v 1.2 2004/07/06 08:10:38 des Exp $ + */ + + #include "cvs.h" +@@ -1605,8 +1607,8 @@ + &sec); + if (year < 1900) + year += 1900; +- sprintf (buf, "%04d/%02d/%02d %02d:%02d:%02d", year, mon, mday, +- hour, min, sec); ++ sprintf (buf, "%04d%c%02d%c%02d %02d:%02d:%02d", ++ year, datesep, mon, datesep, mday, hour, min, sec); + cvs_output (buf, 0); + + cvs_output ("; author: ", 0); Index: src/login.c -diff -u src/contrib/cvs/src/login.c:1.1.1.9 src/contrib/cvs/src/login.c:1.8 +diff -u src/contrib/cvs/src/login.c:1.1.1.9 src/contrib/cvs/src/login.c:1.9 --- src/contrib/cvs/src/login.c:1.1.1.9 Thu Apr 15 10:01:55 2004 -+++ src/login.c Thu Apr 15 10:17:27 2004 ++++ src/login.c Sat Apr 23 02:58:25 2005 @@ -5,6 +5,8 @@ * specified in the README file that comes with CVS. * * Allow user to log in for an authenticating server. + * -+ * FreeBSD: src/contrib/cvs/src/login.c,v 1.8 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/login.c,v 1.9 2005/04/22 17:58:25 simon Exp $ */ #include "cvs.h" +@@ -114,7 +116,7 @@ + + if (isspace(*(linebuf + 1))) + /* special case since strtoul ignores leading white space */ +- entry_version = 0; ++ q = linebuf + 1; + else + entry_version = strtoul (linebuf + 1, &q, 10); + Index: src/logmsg.c diff -u src/contrib/cvs/src/logmsg.c:1.1.1.10 src/contrib/cvs/src/logmsg.c:1.12 --- src/contrib/cvs/src/logmsg.c:1.1.1.10 Thu Apr 15 10:01:55 2004 @@ -811,14 +3076,14 @@ if (repository != NULL) /* tack templates on if necessary */ Index: src/main.c -diff -u src/contrib/cvs/src/main.c:1.1.1.13 src/contrib/cvs/src/main.c:1.24 +diff -u src/contrib/cvs/src/main.c:1.1.1.13 src/contrib/cvs/src/main.c:1.25 --- src/contrib/cvs/src/main.c:1.1.1.13 Thu Apr 15 10:01:55 2004 -+++ src/main.c Thu Apr 15 10:17:27 2004 ++++ src/main.c Tue Jul 6 17:10:38 2004 @@ -10,10 +10,12 @@ * Credit to Dick Grune, Vrije Universiteit, Amsterdam, for writing * the shell-script CVS system that this is based on. * -+ * FreeBSD: src/contrib/cvs/src/main.c,v 1.24 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/main.c,v 1.25 2004/07/06 08:10:38 des Exp $ */ #include @@ -934,11 +3199,10 @@ } #ifdef CLIENT_SUPPORT -@@ -1165,4 +1202,62 @@ - for (; *cpp; cpp++) +@@ -1166,3 +1203,64 @@ (void) fprintf (stderr, *cpp); error_exit (); -+} + } + +void +parseopts(root) @@ -973,6 +3237,9 @@ + if (q) + *q = '\0'; + ++ if (!strcmp(buf, "iso8601")) { ++ datesep = '-'; ++ } + if (!strncmp(buf, "tag=", 4)) { + char *what; + char *rcs_localid; @@ -996,7 +3263,7 @@ + } + fclose(fp); + } - } ++} Index: src/mkmodules.c diff -u src/contrib/cvs/src/mkmodules.c:1.1.1.12 src/contrib/cvs/src/mkmodules.c:1.13 --- src/contrib/cvs/src/mkmodules.c:1.1.1.12 Thu Apr 15 10:01:55 2004 @@ -1026,11 +3293,10 @@ */ #include "cvs.h" -@@ -349,6 +351,25 @@ - error (0, 0, "unrecognized value '%s' for SystemAuth", p); +@@ -350,6 +352,25 @@ goto error_return; } -+ } + } + else if (strcmp (line, "tag") == 0) { + RCS_setlocalid(p); + } @@ -1049,23 +3315,73 @@ + (void) setrlimit(RLIMIT_DATA, &rl); + } +#endif /* BSD */ - } ++ } else if (strcmp (line, "PreservePermissions") == 0) { + if (strcmp (p, "no") == 0) +Index: src/patch.c +diff -u src/contrib/cvs/src/patch.c:1.1.1.13 src/contrib/cvs/src/patch.c:1.2 +--- src/contrib/cvs/src/patch.c:1.1.1.13 Thu Apr 15 10:01:55 2004 ++++ src/patch.c Sat Apr 23 02:58:25 2005 +@@ -10,6 +10,8 @@ + * Create a Larry Wall format "patch" file between a previous release and the + * current head of a module, or between two releases. Can specify the + * release as either a date or a revision number. ++ * ++ * FreeBSD: src/contrib/cvs/src/patch.c,v 1.2 2005/04/22 17:58:25 simon Exp $ + */ + + #include +@@ -385,6 +387,7 @@ + struct utimbuf t; + char *vers_tag, *vers_head; + char *rcs = NULL; ++ char *rcs_orig = NULL; + RCSNode *rcsfile; + FILE *fp1, *fp2, *fp3; + int ret = 0; +@@ -415,7 +418,7 @@ + if ((rcsfile->flags & VALID) && (rcsfile->flags & INATTIC)) + isattic = 1; + +- rcs = xmalloc (strlen (finfo->file) + sizeof (RCSEXT) + 5); ++ rcs_orig = rcs = xmalloc (strlen (finfo->file) + sizeof (RCSEXT) + 5); + (void) sprintf (rcs, "%s%s", finfo->file, RCSEXT); + + /* if vers_head is NULL, may have been removed from the release */ +@@ -757,8 +760,8 @@ + free (vers_tag); + if (vers_head != NULL) + free (vers_head); +- if (rcs != NULL) +- free (rcs); ++ if (rcs_orig) ++ free (rcs_orig); + return ret; + } + Index: src/rcs.c -diff -u src/contrib/cvs/src/rcs.c:1.1.1.14 src/contrib/cvs/src/rcs.c:1.26 +diff -u src/contrib/cvs/src/rcs.c:1.1.1.14 src/contrib/cvs/src/rcs.c:1.28 --- src/contrib/cvs/src/rcs.c:1.1.1.14 Thu Apr 15 10:01:55 2004 -+++ src/rcs.c Thu Apr 15 10:17:27 2004 ++++ src/rcs.c Sat Apr 23 02:58:25 2005 @@ -6,6 +6,8 @@ * * The routines contained in this file do all the rcs file parsing and * manipulation + * -+ * FreeBSD: src/contrib/cvs/src/rcs.c,v 1.26 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/rcs.c,v 1.28 2005/04/22 17:58:25 simon Exp $ */ #include -@@ -134,6 +136,8 @@ +@@ -24,6 +26,7 @@ + # endif + #endif + ++int datesep = '/'; + int preserve_perms = 0; + + /* The RCS -k options, and a set of enums that must match the array. +@@ -134,6 +137,8 @@ evaluates its arguments multiple times. */ #define STREQ(a, b) (*(char *)(a) == *(char *)(b) && strcmp ((a), (b)) == 0) @@ -1074,7 +3390,7 @@ /* * We don't want to use isspace() from the C library because: * -@@ -2502,13 +2506,25 @@ +@@ -2502,13 +2507,25 @@ char *rev; { int rev_num; @@ -1102,6 +3418,16 @@ { /* see if the physical branch exists */ (void) sprintf (xrev, "%s.%d", rev, rev_num); +@@ -3024,8 +3041,7 @@ + if (retval != NULL) + return (retval); + +- if (!force_tag_match || +- (vers != NULL && RCS_datecmp (vers->date, date) <= 0)) ++ if (vers && (!force_tag_match || RCS_datecmp (vers->date, date) <= 0)) + return xstrdup (vers->version); + else + return NULL; @@ -3481,27 +3497,31 @@ { const char *string; @@ -1159,6 +3485,17 @@ /* Convert an RCS date string into a readable string. This is like the RCS date2str function. */ +@@ -3527,8 +3549,8 @@ + &sec); + if (year < 1900) + year += 1900; +- sprintf (buf, "%04d/%02d/%02d %02d:%02d:%02d", year, mon, mday, +- hour, min, sec); ++ sprintf (buf, "%04d%c%02d%c%02d %02d:%02d:%02d", ++ year, datesep, mon, datesep, mday, hour, min, sec); + return xstrdup (buf); + } + @@ -3689,7 +3711,8 @@ slen = s - srch; for (keyword = keywords; keyword->string != NULL; keyword++) @@ -1205,11 +3542,41 @@ free (date); free_value = 1; } -@@ -8619,4 +8654,106 @@ - (void) sprintf (label, "-L%s\t%s", path, datebuf); +@@ -4103,7 +4138,7 @@ + size_t len; + int free_value = 0; + char *log = NULL; +- size_t loglen; ++ size_t loglen = 0; + Node *vp = NULL; + #ifdef PRESERVE_PERMISSIONS_SUPPORT + uid_t rcs_owner = (uid_t) -1; +@@ -7421,7 +7456,7 @@ + + for (ln = 0; ln < headlines.nlines; ++ln) + { +- char buf[80]; ++ char *buf; + /* Period which separates year from month in date. */ + char *ym; + /* Period which separates month from day in date. */ +@@ -7432,10 +7467,12 @@ + if (prvers == NULL) + prvers = vers; + ++ buf = xmalloc (strlen (prvers->version) + 24); + sprintf (buf, "%-12s (%-8.8s ", + prvers->version, + prvers->author); + cvs_output (buf, 0); ++ free (buf); + + /* Now output the date. */ + ym = strchr (prvers->date, '.'); +@@ -8620,3 +8657,105 @@ } return label; -+} + } + +void +RCS_setlocalid (arg) @@ -1311,21 +3678,21 @@ + CVSname = (*pathstore); + } + return CVSname; - } ++} Index: src/rcs.h -diff -u src/contrib/cvs/src/rcs.h:1.1.1.10 src/contrib/cvs/src/rcs.h:1.10 +diff -u src/contrib/cvs/src/rcs.h:1.1.1.10 src/contrib/cvs/src/rcs.h:1.11 --- src/contrib/cvs/src/rcs.h:1.1.1.10 Thu Apr 15 10:01:55 2004 -+++ src/rcs.h Thu Apr 15 10:17:27 2004 ++++ src/rcs.h Tue Jul 6 17:10:38 2004 @@ -6,6 +6,8 @@ * specified in the README file that comes with the CVS source distribution. * * RCS source control definitions needed by rcs.c and friends + * -+ * FreeBSD: src/contrib/cvs/src/rcs.h,v 1.10 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/rcs.h,v 1.11 2004/07/06 08:10:38 des Exp $ */ /* Strings which indicate a conflict if they occur at the start of a line. */ -@@ -244,6 +246,8 @@ +@@ -244,8 +246,11 @@ void RCS_deltas PROTO ((RCSNode *, FILE *, struct rcsbuffer *, const char *, enum rcs_delta_op, char **, size_t *, char **, size_t *)); @@ -1333,7 +3700,10 @@ +void RCS_setlocalid PROTO ((const char *arg)); char *make_file_label PROTO ((const char *, const char *, RCSNode *)); ++extern int datesep; extern int preserve_perms; + + /* From import.c. */ Index: src/rcscmds.c diff -u src/contrib/cvs/src/rcscmds.c:1.1.1.10 src/contrib/cvs/src/rcscmds.c:1.10 --- src/contrib/cvs/src/rcscmds.c:1.1.1.10 Thu Apr 15 10:01:55 2004 @@ -1360,15 +3730,15 @@ #include "cvs.h" Index: src/server.c -diff -u src/contrib/cvs/src/server.c:1.1.1.15 src/contrib/cvs/src/server.c:1.21 ---- src/contrib/cvs/src/server.c:1.1.1.15 Thu Apr 15 10:01:55 2004 -+++ src/server.c Thu Apr 15 10:17:27 2004 +diff -u src/contrib/cvs/src/server.c:1.1.1.18 src/contrib/cvs/src/server.c:1.24 +--- src/contrib/cvs/src/server.c:1.1.1.18 Fri Jun 11 04:05:38 2004 ++++ src/server.c Fri Jun 11 04:12:50 2004 @@ -8,6 +8,10 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ +/* -+ * FreeBSD: src/contrib/cvs/src/server.c,v 1.21 2004/04/15 01:17:27 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/server.c,v 1.24 2004/06/10 19:12:50 peter Exp $ + */ + #include @@ -1384,7 +3754,7 @@ path = xmalloc (strlen (current_parsed_root->directory) + sizeof (CVSROOTADM) + 2); -@@ -5508,7 +5515,10 @@ +@@ -5602,7 +5609,10 @@ password file. If so, that's enough to authenticate with. If not, we'll check /etc/passwd. */ @@ -1396,16 +3766,39 @@ &host_user); if (rc == 2) +Index: src/tag.c +diff -u src/contrib/cvs/src/tag.c:1.1.1.12 src/contrib/cvs/src/tag.c:1.2 +--- src/contrib/cvs/src/tag.c:1.1.1.12 Thu Apr 15 10:01:55 2004 ++++ src/tag.c Fri Aug 6 02:47:35 2004 +@@ -10,6 +10,8 @@ + * Add or delete a symbolic name to an RCS file, or a collection of RCS files. + * Tag uses the checked out revision in the current directory, rtag uses + * the modules database, if necessary. ++ * ++ * FreeBSD: src/contrib/cvs/src/tag.c,v 1.2 2004/08/05 17:47:35 des Exp $ + */ + + #include "cvs.h" +@@ -1199,6 +1201,9 @@ + || strcmp (name, TAG_HEAD) == 0) + return; + ++ if (readonlyfs) ++ return; ++ + /* FIXME: This routine doesn't seem to do any locking whatsoever + (and it is called from places which don't have locks in place). + If two processes try to write val-tags at the same time, it would Index: src/update.c -diff -u src/contrib/cvs/src/update.c:1.1.1.14 src/contrib/cvs/src/update.c:1.13 ---- src/contrib/cvs/src/update.c:1.1.1.14 Thu Apr 15 10:01:55 2004 -+++ src/update.c Thu Apr 15 10:17:28 2004 +diff -u src/contrib/cvs/src/update.c:1.1.1.15 src/contrib/cvs/src/update.c:1.14 +--- src/contrib/cvs/src/update.c:1.1.1.15 Fri Jun 11 04:05:38 2004 ++++ src/update.c Fri Jun 11 04:12:50 2004 @@ -31,6 +31,8 @@ * versions, these are updated too. If the -d option was specified, new * directories added to the repository are automatically created and updated * as well. + * -+ * FreeBSD: src/contrib/cvs/src/update.c,v 1.13 2004/04/15 01:17:28 peter Exp $ ++ * FreeBSD: src/contrib/cvs/src/update.c,v 1.14 2004/06/10 19:12:50 peter Exp $ */ #include "cvs.h" @@ -1467,7 +3860,7 @@ /* free the space Make_Date allocated if necessary */ if (date != NULL) -@@ -429,7 +436,7 @@ +@@ -431,7 +438,7 @@ int do_update (argc, argv, xoptions, xtag, xdate, xforce, local, xbuild, xaflag, xprune, xpipeout, which, xjoin_rev1, xjoin_rev2, preload_update_dir, @@ -1476,7 +3869,7 @@ int argc; char **argv; char *xoptions; -@@ -445,7 +452,7 @@ +@@ -447,7 +454,7 @@ char *xjoin_rev1; char *xjoin_rev2; char *preload_update_dir; @@ -1485,7 +3878,7 @@ char *repository; { int err = 0; -@@ -460,7 +467,7 @@ +@@ -462,7 +469,7 @@ aflag = xaflag; update_prune_dirs = xprune; pipeout = xpipeout; @@ -1494,7 +3887,7 @@ /* setup the join support */ join_rev1 = xjoin_rev1; -@@ -602,7 +609,7 @@ +@@ -604,7 +611,7 @@ && tag != NULL && finfo->rcs != NULL) { @@ -1503,7 +3896,7 @@ if (rev != NULL && !RCS_nodeisbranch (finfo->rcs, tag)) nonbranch = 1; -@@ -948,7 +955,7 @@ +@@ -950,7 +957,7 @@ via WriteTag. */ 0, 0, @@ -1512,19 +3905,19 @@ rewrite_tag = 1; nonbranch = 0; Subdir_Register (entries, (char *) NULL, dir); -@@ -1005,6 +1012,12 @@ - WriteTag (dir, tag, date, 0, update_dir, repository); - rewrite_tag = 1; +@@ -1009,6 +1016,12 @@ nonbranch = 0; -+ } -+ + } + + /* keep the CVS/Template file current */ + if (pull_template) + { + WriteTemplate (dir, update_dir); - } - ++ } ++ /* initialize the ignore list for this directory */ + ignlist = getlist (); + } Index: src/update.h diff -u src/contrib/cvs/src/update.h:1.1.1.4 src/contrib/cvs/src/update.h:1.3 --- src/contrib/cvs/src/update.h:1.1.1.4 Thu Apr 15 10:01:55 2004 @@ -1547,7 +3940,7 @@ extern int isemptydir PROTO ((const char *dir, int might_not_exist)); Index: src/prepend_args.c diff -u /dev/null src/gnu/usr.bin/cvs/cvs/prepend_args.c:1.3 ---- /dev/null Fri Apr 16 06:29:14 2004 +--- /dev/null Fri Oct 6 12:14:41 2006 +++ src/prepend_args.c Mon Sep 2 15:09:03 2002 @@ -0,0 +1,86 @@ +/* prepend_args.c - utilility programs for manpiulating argv[] @@ -1638,7 +4031,7 @@ +} Index: src/prepend_args.h diff -u /dev/null src/gnu/usr.bin/cvs/cvs/prepend_args.h:1.2 ---- /dev/null Fri Apr 16 06:29:14 2004 +--- /dev/null Fri Oct 6 12:14:41 2006 +++ src/prepend_args.h Mon Sep 2 15:09:03 2002 @@ -0,0 +1,26 @@ +/* prepend_args.h - utilility programs for manpiulating argv[] --- patch-cvs+ipv6 ends here --- >Release-Note: >Audit-Trail: >Unformatted: