Philip Martin wrote on Tue, Apr 08, 2014 at 20:12:26 +0100:
> Daniel Shahaf <d...@daniel.shahaf.name> writes:
> 
> > Philip Martin wrote on Wed, Mar 19, 2014 at 13:17:08 +0000:
> >> We have:
> >> 
> >>   - the documented protocol
> >> 
> >>       (? want-iprops:boolean )
> >> 
> >>   - the released server implementation of the protocol
> >> 
> >>       ? want-iprops:boolean
> >> 
> >>   - the released behaviour
> >> 
> >>       properties always sent
> >> 
> >>   - the trunk behaviour
> >> 
> >>       properties only sent when want-iprops is true
> >> 
> >> A third party client could already be using want-iprops with a 1.8
> >> server to get inherited props, even with the broken behaviour.
> >
> > Not our problem.  We have no obligation to support third parties who
> > reimplement our protocol.  We also have no obligation to make the server
> > accept constructions that no released client ever generated.
> 
> So the ra_svn protocol is a private API.  Is this a position we have
> taken in the past?  I'm not opposed to it but I wasn't aware that it was
> our position.
> 

I believe so but don't have a ready reference for it.  Perhaps someone
else can weight in on this.

> > If I understand correctly, you're saying that no *released* client[1]
> > ever sent a want-iprops boolean on get-file and get-dir;
> 
> Correct.
> 
> > so we have zero
> > obligation to support a want-iprops parameter there, period.  (To clarify,
> > we have no obligation to support either "?B" or "(?B)" or "?(?B)".)
> >
> > We may choose to support the form that the 1.8.0-1.8.9 server code
> > accepts (that is, "?B"), or we may choose to declare that a bug in
> > 1.8.0-1.8.9.
> 
> Does anyone have any opinions about which one we should choose?
> 

I propose that we use the "?B" variant but require the boolean to be
false whenever provided.  Passing "true" would be an error.

That's basically a win-win situation: we gain the ability to apply the
patch without the burden of having to support or document a
"get-iprops=true" codepath that no released client uses.

This solution presumes that we are free to retroactively change
libsvn_ra_svn/protocol, i.e., that it is a private API (as you say above).

Daniel

Reply via email to