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

Re: Issue #3209: merge into missing

From: Stephen Butler <sbutler_at_elego.de>
Date: Thu, 19 Feb 2009 15:17:54 +0100

Quoting Stefan Sperling <stsp_at_elego.de>:

> On Mon, Feb 16, 2009 at 05:05:27PM +0100, Stephen Butler wrote:
>> Quoting Stephen Butler <sbutler_at_elego.de>:
>>
>>> The status of 1.6-blocker #3209 (see r35877):
>>
>> The good news: this isn't really a blocker. The current inconsistency
>> in tree conflict detection is a bug, but the working copy is left in
>> a usable state.
>>
>> The bad news: the bug might not be fixable in the current design of
>> the client.
>>
>> Background: the merge code runs in a second set of callbacks (in
>> libsvn_wc/repos_diff.c) on top of the usual delta editor callbacks.
>>
>> The current state: within a repos_diff callback, we can't tell
>> whether a nonexistent dir is really nonexistent, or just missing.
>> The former is a tree conflict, the latter should not be a TC.
>>
>> The repos_diff callbacks do a great job of filtering out the info
>> we really need for tree conflict detection! :-\ But that's been
>> discussed at length last year. In r33989, Neels & co. added a
>> tree_conflicted boolean arg to all the relevant callbacks, so that
>> all of the tree conflict detection can be done in
>> libsvn_client/merge.c, where it's easy to follow. This lets us
>> avoid raising a tree conflict inside a TC victim tree, but it's
>> not enough to tell whether an item is really nonexistent or is
>> just missing.
>
> Would passing an enum instead of a boolean help here?

I think so. We could maintain the "deep" tree status in repos_diff.c
and pass an svn_wc_notify_state_t to the merge callbacks instead of
the boolean. I'll give it a try.

These callbacks are private. So I don't need to rev an API, right?

>
> Is this related to the problem of needing to "reimplement diff"
> in order to handle use case 5 for directories properly?

No, this is for use case 4 "local delete, incoming edit", where we'd
like to distinguish between locally deleted and locally missing.

Steve

-- 
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
Received on 2009-02-19 15:18:12 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.