Dirk wrote:
Hello Tom,

I have the same problem, and I was looking for a fix a long time also. Possibly there is an easy fix, if you look here (1). This is the full path name lookup code. It will recurse down all parents until we reach the root node and then we assign the root folder name "/". Possibly it is sufficient to set this to "/trunk/".

That might cause problems for labels, e.g. you might end up with /trunk/labels.


Later (2), when the Labels are handled, we have a little problem. Now the label directory is /Labels/ but all pathes are encoded as /trunk/... So we will end up with /Labels/label/trunk/... Not perfect either, but a possible solution...

Better than the current situation.

We could naturally remove the "label base" from the path, with the "label base" beeing the directory where we assigned the label. But this would brake "Label promotion". How would we handle a situation, when a label is assigned to some path. Later the same label is assigned to a file within the path. In the current situation the labels directory is a hierarchical mirror of the trunk. It is not depending on the place where you assigned the label. It will always mirror the complete structure.

I will give it a try.

Best regards
Dirk


[1] http://www.pumacode.org/projects/vss2svn/browser/trunk/script/Vss2Svn/ActionHandler.pm#L717 [2] http://www.pumacode.org/projects/vss2svn/browser/trunk/script/Vss2Svn/Dumpfile.pm#L548

I found a fix that was very simple, but clearly just a hack:

Index: script/Vss2Svn/Dumpfile/Node.pm
===================================================================
--- script/Vss2Svn/Dumpfile/Node.pm     (revision 272)
+++ script/Vss2Svn/Dumpfile/Node.pm     (working copy)
@@ -78,6 +78,9 @@
             if ($header =~ m/-path$/) {
                 $value =~ s:^/::;
                 $value =~ s:/$::;
+                if ($value !~ m/^labels/) {
+                    $value = "trunk/$value";
+                }
             }

             $headers .= "$header: $value\n";

Before you run it, set your clock back in time to prior to the creation of your VSS repository, create the SVN repository, and then manually create the trunk directory (and the labels one too, if you like). Then run the modified script. With this approach, you end up with exactly the desired structure, and it seemed to work perfectly on a large, 5 years running VSS repository, though I haven't tested it extensively. If and or when we move to SVN, I'll have to do some proper testing to confirm that the labels match (we don't use label promotion or pinning - the hoops VSS makes you jump through to handle branching is one of the reasons we want to move away from it - we've been avoiding all branching, to the detriment of our software process).

Tom

_______________________________________________
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