[EMAIL PROTECTED] wrote:

Dirk & All,

I came up with, and coded a solution for this problem. The patch is supplied below, if anyone is interested.

To summarise, this is to fix the "svnadmin load" problem where it emits the following error:

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

svnadmin: File not found: transaction '20678-1', path 'orphaned/_YEDAAAAA/S01/InstallShield/WebGate/Setup Files/Uncompressed Files/Language Independent/OS Independent/setup.bmp'

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The main problem stemmed from the following query in the BUILDACTIONHIST phase:

    my $sql = 'SELECT * FROM PhysicalAction ORDER BY timestamp ASC, '
            . 'itemtype ASC, priority ASC, sortkey ASC, action_id ASC';

If 2 or more projects were added at the exact same time, then depending on their physical VSS name, they may be returned by this query in the wrong order (i.e. ADDing a subproject before its parent project has been ADDed).

To fix this, I decided to extend the use of "parentdata" in the PhysicalAction table, and instead treat it like a project "depth" attribute. During the MERGEPARENTDATA phase, all of the parent records are updated with their project path depth as an integer, such that the depth increases the further a project/file gets from the root project.

The query is then changed to:

    my $sql = 'SELECT * FROM PhysicalAction ORDER BY timestamp ASC, '
. 'itemtype ASC, priority ASC, parentdata ASC, sortkey ASC, action_id ASC';

The solution ensures that subprojects will have a parentdata value greater than that of their parent project, and therefore be returned by this query after their parent project.

This fixed the problem for me. If anyone can think of a better solution, go for it. Delving into this problem has made me truly realise how badly designed VSS is !

A disclaimer - PERL is not my forte, so if there is a cleverer way of doing it, I'd be happy for people to edit my efforts :-)

Dave


Hi Dave, sorry it took so long to get back to you... as with the previous patch, I don't have time to test this (and it's not an error I personally ran into) but it looks logical at first glance so I went ahead and committed in r313; if it breaks anyone else's conversion hopefully we'll hear about it!

However, I notice that you are not doing anything with the return value of &GetPathDepth() on line 546... it seems maybe that you at first used a return value then later decided to store it in the database instead?

thanks,
toby

toby

_______________________________________________
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