Subject: Re: CVS REPOSITORY IS BROKEN (Re: cvs checkout with tag)
To: Izumi Tsutsui <firstname.lastname@example.org>
From: Frederick Bruckman <email@example.com>
Date: 01/29/2002 10:07:15
On Wed, 30 Jan 2002, Izumi Tsutsui wrote:
> In my tree, there are still some files in basesrc/usr.sbin/sendmail:
> Accroding to cvsweb, the latest revisions of these files are
> not removed in the logs though all of these files are in Attic.
I can reproduce the problem. Once you check out with "-rHEAD -D
somewhen", even "update -A" doesn't delete the files.
The problem is that the "-D" option is insane...
There's only room, in the entry for a particular file in "CVS/Entries",
for *one* tag, be it a branch tag, a static tag, a particular revision,
a date tag, or no tag. The branch tags and static tags all associate
with a particular revision, so there's no opportunity for confusion. The
"no tag" corresponds to the latest version on the trunk, so no confusion
there, either. That leaves "-D"...
It's not even clear what the date tag *means* on a branched repository.
You might reasonably expect it to mean the latest commit before that
date on any branch, though that would be mostly useless, but it doesn't
even do that -- what it does, instead, is allow other tags to modify the
interpretation of the date at checkout time, even though there's no way
to store that state in the checked out tree. The date tag should
therefore be avoided, especially for checkouts. "cvs diff -D date", on
the other hand, is harmless, though not always useful.