Hello,
I am having very good success in migrating a 310 MiB VSS database that has a
number of 'destroyed' items and incorrect timestamps to svn, but only with the
following patch to DumpFile.pm. The symptom that prompted me to make this
change was a "file not found" error from svnadmin load when it encountered an
entry in the dumpfile that was attempting to copy to a subdirectory in the
orphaned directory whose parent directories had not yet been created. I
haven't fully investigated the exact sequence of events that leads to this
condition, since the intuitively simple (perhaps naive) patch below seems to
have been quite successful for me. The gist of the change is this: if the
parent path of the target path of a move operation does not exist, then create
it (code largely copied from the add handler).
I am still working on a thorough review of the results of the conversion, but
so far a number of diffs of projects at head and at a few labels are coming up
clean.
Index: script/Vss2Svn/Dumpfile.pm
===================================================================
--- script/Vss2Svn/Dumpfile.pm (revision 309)
+++ script/Vss2Svn/Dumpfile.pm (working copy)
@@ -408,6 +408,21 @@
return 0;
}
+### HACK
+ my $success = $self->{repository}->exists_parent ($itempath);
+ if(!defined($success)) {
+ $self->add_error("Path consistency failure while trying to move "
+ . "item '$oldpath' to '$itempath' at revision
$data->{revision_id}; skipping");
+ return 0;
+ }
+ elsif ($success == 0) {
+ $self->add_error("Parent path missing while trying to move "
+ . "item '$oldpath' to '$itempath' at revision
$data->{revision_id}: adding missing "
+ . "parents");
+ $self->_create_svn_path ($nodes, $itempath);
+ }
+### ENDHACK
+
my $node = Vss2Svn::Dumpfile::Node->new();
$node->set_initial_props($itempath, $data);
$node->{action} = 'add';
Regards,
Patrick
_______________________________________________
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