[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Tree conflicts - see what happens in the current state

From: Stephen Butler <sbutler_at_elego.de>
Date: Wed, 08 Oct 2008 14:33:24 +0200

Quoting Julian Foad <julianfoad_at_btopenworld.com>:

> On Tue, 2008-10-07 at 22:49 +0100, Julian Foad wrote:
>> On Mon, 2008-10-06 at 13:43 +0200, Stephen Butler wrote:
>> > On the svn side, we'll need the update/merge/etc. commands to skip tree
>> > conflict victims. I'm afraid that will break a lot of other tests that
>> > we've discussed already, the ones that create tree conflicts. But I'm no
>> > stranger to patching tests.
>> >
>> > Does this sound like a reasonable interim goal?
>> Yes, that's perhaps the main coding task we need to do now.
> Here's what I think we need to do.
> After placing a directory into conflict in dir_open(), all edits in the
> victim sub-tree must be inhibited until the corresponding dir_close().
> All of the normal editor call-backs can be called by the edit driver
> within this victim sub-tree, so they all must recognise that the edit
> drive is in this state and skip their normal work. In dir_close(), if
> closing _this_ victim dir (rather than one of its sub-dirs), that's when
> we get out of this "skipping" state.
> Under edit drive rules, there can only be one such victim sub-tree being
> processed (skipped) at any time, so there only needs to be one flag
> saying "we're currently processing within a victim sub-tree", and one
> way to identify which directory is the root of the sub-tree being
> skipped. There does not need to be a list or tree of such flags.
> A way to implement this, I think, is with a flag in the main edit baton
> saying "we're currently skipping", and a flag in the directory baton
> saying "this is the root of the sub-tree being skipped". All edit
> functions check the former, and the close_dir() function resets both
> flags when it finds the latter set.

Sounds good. Maybe a similar approach will solve the "double delete"
problem during merge, where the client sends redundant delete requests
while walking a tree that's just been deleted on the server.


Stephen Butler | Software Developer
elego Software Solutions GmbH
Gustav-Meyer-Allee 25 | 13355 Berlin | Germany
fon: +49 30 2345 8696 | mobile: +49 163 25 45 015
fax: +49 30 2345 8695 | http://www.elegosoft.com
Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin
Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-08 14:33:38 CEST

This is an archived mail posted to the Subversion Dev mailing list.