Hello, I didn't see a bug submission form on http://www.cvshome.org so hopefully it's OK to report a bug here. Apologies if this is inappropriate or already known/old news. The problem is described in the email dialogue below. In short, CVS expects that an imported file will have identical dates set on revisions 1.1 and 1.1.1.1, but apparently in actuality it doesn't guarantee this at import time. Thanks, -Archie P.S. Please CC: me as I'm not on this email list ----- Forwarded message from John Polstra ----- >From [EMAIL PROTECTED] Wed Aug 9 08:56:52 2000 Delivered-To: [EMAIL PROTECTED] From: John Polstra <[EMAIL PROTECTED]> Date: Wed, 9 Aug 2000 08:54:58 -0700 (PDT) Message-Id: <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: Re: CVS question In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> Organization: Polstra & Co., Seattle, WA Sender: [EMAIL PROTECTED] X-Loop: FreeBSD.ORG Precedence: bulk Content-Length: 2611 In article <[EMAIL PROTECTED]>, Archie Cobbs <[EMAIL PROTECTED]> wrote: > Consider this source file: > > http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/xntpd/lib/Attic/ranny.c > > Question: what version should this command checkout? > > $ cvs co -D 'January 18, 1999 0:00' freebsd/src/usr.sbin/xntpd/lib/ranny.c > > Perhaps version 1.1.1.2 would be correct, but instead you get 1.1. CVS is really screwy in this area. I remember I had to add some special cases to CVSup long ago to try to mimic CVS's behavior in odd cases. > It seems CVS is being inconsistent: > > - If you had done a 'head' checkout on that date you would have > gotten 1.1.1.2 That makes sense, because on that date the file had not yet left the vendor branch, and its default branch attribute still pointed to the vendor branch. > - If you later do a 'head' checkout, and specify that date, you get 1.1 CVS has a heuristic that does the wrong thing for this particular file. The code is around line 3252 of src/contrib/cvs/src/rcs.c in the function RCS_getdate(): if (! STREQ (cur_rev, "1.1")) return (xstrdup (cur_rev)); /* This is 1.1; if the date of 1.1 is not the same as that for the 1.1.1.1 version, then return 1.1. This happens when the first version of a file is created by a regular cvs add and commit, and there is a subsequent cvs import of the same file. */ p = findnode (rcs->versions, "1.1.1.1"); if (p) { vers = (RCSVers *) p->data; if (RCS_datecmp (vers->date, date) != 0) return xstrdup ("1.1"); } It compares the dates on the theory that an import will set identical dates in revisions 1.1 and 1.1.1.1. But in the file you mentioned, they are off by 1 second. So CVS doesn't recognize it as an import. revision 1.1 date: 1993/12/21 18:36:22; author: wollman; state: Exp; revision 1.1.1.1 date: 1993/12/21 18:36:23; author: wollman; state: Exp; lines: +0 -0 Probably the import straddled the seconds boundary. I hope current versions of CVS force the dates to be the same on an import. I haven't checked to see whether that's the case or not. John -- John Polstra [EMAIL PROTECTED] John D. Polstra & Co., Inc. Seattle, Washington USA "Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message ----- End of forwarded message from John Polstra ----- ___________________________________________________________________________ Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com