[cvsnt] cvs rename bugs
Mark Levedahl
noone at nospam.net
Thu Aug 24 03:13:34 BST 2006
Using 2.5.03, Build 2382, I've found two bugs in cvs rename that
required manual hacking of the repository for recovery:
Problem 1: given subdirs a, b, and file a/foo
cvs rename a/foo b/foo is accepted with no complaint, but results in
the rename happening in dir a but not in dir b. The file essentially
disappears. Recovery requires reverting the last revision in
.directory_history,v for directory a, which requires hacking the repository.
Note that:
cd a; cvs rename foo ../b/foo works as advertised. E.g., a file can be
moved from one directory to another, but only when executed from the
current directory of the file.
Problem 2: as above, but renames have happened on a branch in directory
b but not on HEAD. Therefore, .directory_history has status DEAD in b.
cvs rename foo ../b/foo; cd ../b; cvs commit
results in an error in attempting to update .directory_history,
apparently because it does not actually exist on HEAD.
The fix I found is to cause .directory_history to exist but be empty on
HEAD:
in the repository for dir b:
mv .directory_history,v dfoo,v
in the sandbox directory b:
touch dfoo
cvs add dfoo
cvs commit dfoo
Then back in the repository:
mv dfoo,v .directory_history,v
Also, there is an annoyance: the documentation indicates after a move,
cvs commit should be run from the parent directory. I find cvs commit
must be run from within each directory where a rename action has
occurred to actually do anything. When run from a parent directory, cvs
commit does nothing.
Mark
More information about the cvsnt
mailing list