Date: Wed, 9 Aug 2000 08:54:58 -0700 (PDT) From: John Polstra <jdp@polstra.com> To: hackers@freebsd.org Cc: archie@whistle.com Subject: Re: CVS question Message-ID: <200008091554.IAA53597@vashon.polstra.com> In-Reply-To: <200008071906.MAA12811@bubba.whistle.com> References: <200008071906.MAA12811@bubba.whistle.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <200008071906.MAA12811@bubba.whistle.com>, Archie Cobbs <archie@whistle.com> 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 jdp@polstra.com John D. Polstra & Co., Inc. Seattle, Washington USA "Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200008091554.IAA53597>