info-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

cvs update -D and vendor branch


From: Kristian Nielsen
Subject: cvs update -D and vendor branch
Date: 03 Jan 2001 11:29:06 +0100
User-agent: Gnus/5.0807 (Gnus v5.8.7) Emacs/20.7

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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]