We could change that for Ev2 but how are you going to change Subversion
1.0-1.7?

Can I borrow your time-machine? ;-)

Md5 is not unique enough to pick a base.

Bert Huijben (Cell phone)
From: Hyrum K Wright
Sent: 4-2-2012 7:46
To: Julian Foad
Cc: Subversion Development
Subject: Re: Why do we check the base checksum so often?
On Sat, Feb 4, 2012 at 9:36 AM, Julian Foad <julianf...@btopenworld.com> wrote:
> Hyrum K Wright wrote:
>
>> The Ev2 shims get in the way of how text deltas are transmitted, by
>> reconstituting the full text, and then just streaming that to the
>> receiver via svn_txdelta_send_stream().  I've got a patch which
>> actually starts reporting the base checksum---which with the shims
>> will always be the "empty" checksum---and it turns out that such a
>> patch breaks the World.
>>
>> The reason for this breakage is that there are several places in both
>> the FS and the WC that we check the delta editor's reported base
>> checksum against some other value we have on hand which we *think*
>> should be the base.  Until now, these checks have always passed, since
>> there was an implicit understanding about what the delta editor would
>> use as its base.
>>
>> However, I think that these checks are wrong.  They rely upon an
>> implementation detail ("is the delta editor sending a text delta
>> against the base we think it ought to?") rather than the result ("did
>> we end up with the content we expected to end up with?")
>
> When we (the WC update code for example) receive a text delta, we apply it to 
> a text base that we already have, in order to create a new text.  We need to 
> be applying it against the correct base text otherwise the result would be 
> nonsense (or the attempt to process the delta against the wrong base text 
> would fail).  The sender/driver doesn't tell us explicitly what base text we 
> should apply the delta to, but it does tell us the checksum so we can confirm 
> we're using the right one.
>

I understand this principle, but I don't think that's what the API
is/should be doing.  The apply_textdelta callback is essentially
saying "apply this delta against the base with this checksum".  In the
current regime, we know a priori what that base "should" be, so we
make sure that apply_textdelta spits that information back to us.

But I don't think that's always a valid assumption.  If the delta
editor chose some other base to use (in this case, the empty stream),
and indicated that through the apply_textdelta() base checksum
parameter, a receiver should be happy to accomodate that request.
"Why should I use the base you told me to use, when I can use this one
more efficiently?"

-Hyrum



-- 

uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/

Reply via email to