I am experiencing a problem using the -D option of cvs update, and while I think I understand the problem I am looking for some feedback on possible solutions and whether this could be considered a bug in CVS. Basically, the problem is that in the presence of vendor branches, a "cvs update -D <date>" does not reproduce the same revision that a "cvs checkout" command would have done on the specified date. The reason sems to be that the vendor branch is "magic" so that "cvs checkout" automatically goes to the vendor branch if the head of the trunk is at revision 1.1; but this magic is lost when the -D option is used. This seems to make the -D option rather useless in the presence of vendor branches. Some background: I am using CVS 1.10.5 from the WinCVS 1.06 distribution. I run on Windows 2000 using a :local: repository on a network drive, but I believe my problem is independent of the access mode used for the repository. I recently migrated a large source tree to CVS that was not version-controlled before. The migration took place over a two-week period in which I did regular "cvs import"'s from the non-version-controlled tree as well as my own changes in CVS. This worked fine, and after the migration (on Nov 30) we have a tree with some revisions from before the migration on the vendor branch and with revisions from after the migration on the main trunk. For example (lots of output deleted) $ cvs status ldfoniks.cpp RCS file: s:\cvsroot/SRCFo/liv/ldfoniks/ldfoniks.cpp,v Working file: ldfoniks.cpp head: 1.31 branch: locks: strict ... total revisions: 34; selected revisions: 34 description: ... ---------------------------- revision 1.2 date: 2000/12/01 15:49:32; author: Mork; state: Exp; lines: +490 -123 no message ---------------------------- revision 1.1 date: 2000/11/15 07:38:02; author: Kristian; state: Exp; branches: 1.1.1; Initial revision ---------------------------- revision 1.1.1.3 date: 2000/11/30 06:49:51; author: Kristian; state: Exp; lines: +216 -17 Import of Digitalis sources. ---------------------------- ... ---------------------------- revision 1.1.1.1 date: 2000/11/15 07:38:02; author: Kristian; state: Exp; lines: +0 -0 Initial import of Foniks sources. ============================================================================= The problem appears when I want to checkout or update a previous revision by date, where the date requested is prior to revision 1.2. For example: $ cvs update -D "11/30/2000 20:00" ldfoniks.cpp $ cvs status ldfoniks.cpp =================================================================== File: ldfoniks.cpp Status: Up-to-date Working revision: 1.1 Wed Jan 03 10:02:18 2001 Repository revision: 1.1 s:\cvsroot/SRCFo/liv/ldfoniks/ldfoniks.cpp,v Sticky Tag: (none) Sticky Date: 2000.11.30.19.00.00 Sticky Options: (none) Clearly, revision 1.1 (which is the same as 1.1.1.1) is not the latest revision as of "11/30/2000 20:00", revision 1.1.1.3 is. Shouldn't the -D option look in the vendor branch before selecting revision 1.1 (like checkout and update do without the -D option)? If not, I think a workaround would be to find all files with a head revision of 1.1 and force a commit of an identical revision 1.2. This should make all -D options with a later date work as I expect. But maybe there is a better workaround? - Kristian. _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs
