I've finally got to the bottom of the last thing preventing me doing a
completely clean conversion.

The same label was used three times, in three different
subdirectories. The problem is in the sanity checker, which doesn't
update its internal tree during the copy if the target directory
already exists (because of an earlier labelling of a child project).
When the third label happens the sanity checker thinks some parent
directories don't exist when they actually do so it adds them,
breaking the svnadmin load which knows that the directories really do
exist. If that description made no sense, read the test case at the
end of this e-mail.

I've also attached a patch, as before.

Richard.

-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
**** make-broken-db.bat

setlocal
set SSDIR=c:\vss\test\db
ss create -YAdmin -I- $/one
ss create -YAdmin -I- $/one/two
ss create -YAdmin -I- $/one/three
ss create -YAdmin -I- $/one/three/four
sleep 2
ss label -YAdmin -Lmy_label -I- $/one/two
sleep 2
ss label -YAdmin -Lmy_label -I- $/one
sleep 2
ss label -YAdmin -Lmy_label -I- $/one/three/four
endlocal

-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
**** SanityChecker.pm.r337.patch

Index: script/Vss2Svn/Dumpfile/SanityChecker.pm
===================================================================
--- script/Vss2Svn/Dumpfile/SanityChecker.pm    (revision 337)
+++ script/Vss2Svn/Dumpfile/SanityChecker.pm    (working copy)
@@ -369,6 +369,7 @@

     if(defined($ref->{$item})) {
         # item already exists; can't add it
+        $ref->{$item} = $newref if defined($newref);
         return 0;
     }

_______________________________________________
vss2svn-users mailing list
Project homepage:
http://www.pumacode.org/projects/vss2svn/
Subscribe/Unsubscribe/Admin:
http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists.pumacode.org
Mailing list web interface (with searchable archives):
http://dir.gmane.org/gmane.comp.version-control.subversion.vss2svn.user

Reply via email to