Stephen Lee schrieb:
If a commit occurs in project2 before the file is shared back, then this needs more intelligent commit handling... I think at the "No more active itempath to commit ..." error it should really be creating an orphan based on the last known revision and the new copy of the file (which would then leave the "current revision" and its checkin history in a similar situation to what we would have if the file had originally been created in project2 and then shared to project1).

This is indeed a problem and was part of a discussion in prior mailing also. The problem here is, that we can not "introduce" virtual actions into the flow of events. E.g. in the ActionHandler we detect the deletion of the item and we delete it. Later we detect a checkin, but we don't have an active item path anymore, so we first have to copy the deleted item into the orphaned cache. This would introduce a new Action which is currently not possible. The other possibilitiy is to never delete items, but to move them always into a "_deleted" folder, but this would clutter the workspace. So you have to choose between pest and cholera.


I also had a further think, and with a "more intelligent" commit handler like this, the following additional changes could be made, so that an item exists in orphaned only if it does not exist elsewhere.
a) SHARE of an orphaned item can become a MOVE instead.
OK.
b) BRANCH would not need to immediately create the new orphan but merely record where the current revision is.
Could be difficult.
c) file MOVE from an unknown location can become a SHARE (which if the item is orphaned will turn back into a MOVE again)
Ähm, how do we know where to move/share from, if the "source path" is unknown?
d) file MOVE to an unknown location can become a DELETE (modified commit handler will recover this into orphaned if needed)
OK.
e) dir MOVE to/from an unknown location can become a MOVE to/from orphaned
The same problem here: what is the move source if it is unknown?


Ref the branch handler... ideally, when (say) BAAAAAAA is branched at revision 3 to create GAAAAAAA, the internal state tracking GAAAAAAA's parent paths would inherit BAAAAAAA's up to revision 3. Then if GAAAAAAA is shared elsewhere and then branched or pinned to revision 1 or 2, it knows where to get this...

This is indeed a problem and I think this could be solved by deep copying the branch source. I will have a look at this.

Dirk

_______________________________________________
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