This is a resurrection of a thread from 6 months ago, for which I now
have more information. The basic background was:
>> I'm getting a crash during conversion when GetPathDepth recurses
>> itself forever (Perl exhausts its address space then segfaults). It
>> appears to be caused by a pair of physicalaction rows which refer to
>> each other
I've now put some effort into this and have created the following
(which are all at the bottom of this e-mail):
1. A minimal testcase, in the form of a batch file which should be run
on a brand new, totally empty sourcesafe database and which will
create something which crashes vss2svn (r336).
2. The entire contents of the PhysicalAction table resulting from the
above database, as it exists upon entry to MergeParentData().
3. A patch against vss2svn.pl r336 which makes the problem go away.
I'm reluctant to use the word 'fixes' because I don't understand
enough about what the parentdata column is used for to be at all sure
that I've done the right thing. I have, however, confirmed that the
resultant svn repository has the correct history for my testcase.
I'd be very appreciative if somebody knowledgable could review this
patch. It does still throw the warning "ERROR -- Multiple child recs
for parent MOVE rec '7' at vss2svn.pl line 740", but I believe this to
be harmless because the timestamp check shortly thereafter sorts it
all out correctly.
Richard.
-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
**** make-broken-db.bat
setlocal
set SSDIR=c:\vss\broken
ss create -YAdmin -I- $/first
sleep 2
ss create -YAdmin -I- $/first/second
sleep 2
ss create -YAdmin -I- $/third
sleep 2
ss move -YAdmin $/first/second $/third/second
sleep 2
ss move -YAdmin $/third/second $/first/second
sleep 2
ss move -YAdmin $/third $/first/second/third
endlocal
-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
**** vss_data.physicalaction.txt
[I changed my mind and added this as an attachment instead so that the
line breaks don't get mangled and because it's not important that it
be archived.]
-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
**** vss2svn.pl.r336.patch
Index: vss2svn.pl
===================================================================
--- vss2svn.pl (revision 336)
+++ vss2svn.pl (working copy)
@@ -599,10 +599,11 @@
parentdata > 0
AND physname = ?
AND actiontype = ?
+ AND timestamp <= ?
EOSQL
my $sth = $gCfg{dbh}->prepare($sql);
- $sth->execute( @{ $row }{qw(parentphys actiontype)} );
+ $sth->execute( @{ $row }{qw(parentphys actiontype timestamp)} );
$parents = $sth->fetchall_arrayref( {} );
$maxParentDepth = 0;
action_id physname version parentphys actiontype itemname
itemtype timestamp author is_binary info priority sortkey
parentdata label comment
---------- ---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ----------
0 AAAAAAAA 1 ADD / 1
1204934932 Admin 0 1 AAAAAAAA 0
1 BAAAAAAA AAAAAAAA ADD first/ 1
1204934935 Admin 0 1 AAAAAAAB 1
2 DAAAAAAA AAAAAAAA ADD third/ 1
1204934939 Admin 0 1 AAAAAAAD 1
3 DAAAAAAA AAAAAAAA MOVE_TO third/ 1
1204934946 Admin 0 5 AAAAAAAD 1
4 BAAAAAAA 1 ADD first/ 1
1204934935 Admin 0 1 AAAAAAAB 0
5 CAAAAAAA BAAAAAAA ADD second/ 1
1204934937 Admin 0 1 AAAAAAAC 1
6 CAAAAAAA BAAAAAAA MOVE_TO second/ 1
1204934942 Admin 0 5 AAAAAAAC 1
7 CAAAAAAA BAAAAAAA MOVE_FROM second/ 1
1204934944 Admin 0 5 AAAAAAAC 1
8 CAAAAAAA 1 ADD second/ 1
1204934937 Admin 0 1 AAAAAAAC 0
9 DAAAAAAA CAAAAAAA MOVE_FROM third/ 1
1204934946 Admin 0 5 AAAAAAAD 1
10 DAAAAAAA 1 ADD third/ 1
1204934939 Admin 0 1 AAAAAAAD 0
11 CAAAAAAA DAAAAAAA MOVE_FROM second/ 1
1204934942 Admin 0 5 AAAAAAAC 1
12 CAAAAAAA DAAAAAAA MOVE_TO second/ 1
1204934944 Admin 0 5 AAAAAAAC 1
_______________________________________________
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