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

Re: about fixing add_file()...

From: Neels J Hofmeyr <neels_at_elego.de>
Date: Wed, 30 Jun 2010 13:17:43 +0200

On 2010-06-30 12:45, Julian Foad wrote:
> I (Julian Foad) wrote:
>> On Tue, 2010-06-29, Neels J Hofmeyr wrote:
>>> Hi Julian,
>>>
>>> I heard you were changing things about update editor's add_file() copyfrom
>>> args. The thing is I have taken the liberty to look at add-vs-add tree
>>> conflicts and have a pretty nice improvement on that aalmost ready.
>>>
>>> Now I fear that our patches will clash and am curious. Can I see your patch?
>>> here is mine (there's still some amount of clutter around in it, don't be
>>> distracted by it -- update_editor.c is the point).
>>>
>>> Because the patch is quite unintelligible I've also attached my current
>>> update_editor.c.
>>
>> Hi Neels. Here is my patch. It's quite simple. I'll have a look at
>> yours and comment if necessary, but right now I'll say please just go
>> ahead with yours and I'll fit in around it.

Great, thanks.
I think we're not clashing that much, anyway.

>
> Rats... my patch doesn't appear to do anything useful: the two
> externals-tests failures I thought it caused were due to another local
> change, and when I test it again it doesn't fix the errors I thought it
> fixed.

I really don't like how the externals go through that same code path. I can
still remotely understand why update, switch and checkout all use
add_file(), but externals are quite different.

There are similarities of externals-adding with the usual update: the phase
that downloads the base content.

But the check if there is a versioned node / obstructing object already at a
given path to be added at, being the typical job of add_file(), is for
externals not done in add_file() but in
switch_file_external()/switch_dir_external(). In consequence, the way
switch_*_external() expect add_file() to work means that add_file() must
somehow detect whether it has been invoked to download an external and, if
so, has to switch off its usual conflict detection, else each external being
downloaded conflicts with the "fake" external-node already created in the wc
db before add_file(). That's rather meh.

waiting for the hero that shall fix externals,
~Neels

Received on 2010-06-30 13:18:51 CEST

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