[cvsnt] BUG: Update with non-existing tag deletes sandbox files

Bo Berglund bo.berglund at telia.com
Tue Nov 18 17:35:32 GMT 2008


On Mon, 17 Nov 2008 12:12:36 +0100, jml at nykredit.dk wrote:

>
>   This bug applies to CVSNT version 2.5.04 build 3236.
>   If a module is checked out or updated, with the -r option, (for
>   example: CVS up -r this-tag-does-not-exist mymodule) and the tag does
>   not exist (maybe because you missplelled it) CVS will report every
>   file in the module as "no longer in the repository" and DELETE the
>   file from the sandbox!
>   Previous releases of CVSNT - correctly - reports the non-existing tag
>   as, well - non-existing: "no such tag this-tag-does-not-exist".
>   Best regards
>   Jørgen Møller Larsen 
>   
Let's see:
You want to update your sandbox to have *only* the files with a
certain tag and these files at the revision of that tag.

If the tag you specify does not exist in any of the files in the
sandbox then of course they will disappear, this is the whole purpose
of tagging; that you can get the exact state of when you set the tag
back and since the files did not have the tag they surely was not part
of the file set when the tag was applied....

Alternate action?
How can the CVSNT server know that you have mis-spelled the tag
string? The only way I can see is to use the CVSROOT/val-tags file
where cvs stores each tag set via a command. Here it can compare what
you typed in with what has actually been registered as a tag in the
val-tags file.
In this situation cvs can *warn* you that the tag does not exist.
But in order to make sure it is not missing a tag that actually exist
*somewhere* in the repository, if the tag is not found in the val-tags
file but before the warning is shown cvs could scan the complete
repository to rebuild the val-tags file...
This is actually what cvsnt did at some point and it was really
annoying because if there are a lot of files in the repository this
could take "ages". I believe it was discontinued at some time.
An alternate approach woul possibly be to only scan the files below
the directory you are asking the update to be done for (recursively).
But it could still be a while before it completes.

Not a simple call, but I think the removal is actually the sensible
thing to do.

-- 

/Bo
(Bo Berglund, developer in Sweden)


More information about the cvsnt mailing list