Dirk wrote:

> D:\test>svn ci -mtest
> Replacing      test\test1.txt
>

Upps, ok. But isn't this a special case that a delete/add is treated as
one action replace? Would be interesting how this comes out in the
dumpfile. Because we can not easily do such a "join".

As below, a rather complicated no-op, but it does have separate 'delete' and 'add' nodes.


Revision-number: 7304
Prop-content-length: 102
Content-length: 102

K 7
svn:log
V 4
test
K 10
svn:author
V 4
SLee
K 8
svn:date
V 27
2007-02-07T19:26:55.627998Z
PROPS-END

Node-path: orphaned/test/test1.txt
Node-kind: file
Node-action: delete

Node-path: orphaned/test/test1.txt
Node-kind: file
Node-action: add
Node-copyfrom-rev: 7303
Node-copyfrom-path: orphaned/test/test1.txt




* Dumped revision 7304.



I'd been looking at attacking this from the other side, and got promising looking results by inserting a "delete" when it tried to re-label something, but something made it lose track of its internal state. svnadmin load was happy with a dumpfile that gave the following output on import ...

...
<<< Started new transaction, based on original revision 1645
    * deleting path : labels/Release 1.0.0.6/Plugins/Flyte ... done.
    * adding path : labels/Release 1.0.0.6/Plugins/Flyte ...COPIED... done.
    * deleting path : labels/Release 1.0.0.6/Plugins/Flyte ... done.
    * adding path : labels/Release 1.0.0.6/Plugins/Flyte ...COPIED... done.

------- Committed revision 1645 >>>
...

... but vss2svn seems to have messed up its internal state and the next checkin within the *source* folder got changed to an add, as though it thought $/Plugins/xxx had been deleted.

I also noted that (as with the example above) there seem to be legitimate cases where something gets labelled that has already been labelled. In this case, $/Plugins had been labelled, and then each subproject $/Plugins/xxx was seperately labelled. In other cases, files might be labelled after their parent project.

I'd done my attempted change by adding
       if ($self->{repository}->exists ($labelpath)) {
           $self->add_error("Attempt to re-label item '$labelpath' at "
               . "revision $data->{revision_id}, deleting first");

           my $node = Vss2Svn::Dumpfile::Node->new();
           $node->set_initial_props($labelpath, $data);
           $node->{action} = 'delete';
           $node->{hideprops} = 1;

           push @$nodes, $node;
       }

just before
       $self->_create_svn_path ($nodes, $labelpath);

in DumpFile.pm's _label_handler function.

I don't entirely understand how that makes it lose track of the *original* path...

--
Stephen Lee <[EMAIL PROTECTED]>
Software Engineer, Vision Group - Pro-Measure Leader
Wilcox Associates Inc. (U.K.)

_______________________________________________
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