On Fri, Oct 10, 2014 at 6:08 PM, Julian Foad <julianfoad_at_btopenworld.com> wrote:
> Lieven Govaerts wrote:
>>> ra_serf makes a series of valid requests (200 OK) before finally
>>> asking the server for REPLAY of r0. In this case the server is
>>> googlecode.com. In response to the invalid REPLAY it gave a 500 Server
>>> Error response. I will attach a pcap.
>>
>> Googlecode returns the 500 Internal Error, svn.apache.org will happily
>> return the content of r0.
>> IMO googlecode is doing the wrong thing here, there's nothing special
>> about r0 (it's empty, but still a valid revision).
>
> Hi Lieven. I disagree with that point. There are two different meanings of "revision": a
> snapshot, and a change between one snapshot and the next. r0 is a valid snapshot, but it is not a valid *change*. A "replay" request sounds to me like a request to tell us what changed between snapshot (X - 1) and snapshot X. (Although it would be *possible* to define that a replay request for r0 should respond that the difference between revision (-1) and revision (0) is a valid, empty difference, in my opinion it is not logical to do so.)
>
There's another way of looking at things: r0 is the change that brings
the repository in its initial state. It's automatically created by
'svnadmin create', but it exists as change, it can have revprops
(which can relate to the snapshot r0 and to the change r0).
I say that the fact that that initial state is empty is an
implementation detail, and thus (theoretically) can change in the
future. For instance, suppose that it would have been handy to set an
initial svn:mergeinfo property on new repositories, would you have
said: ah no we can't do that because r0 is supposed to be empty?
Regardless of its definition, nowhere in the documentation is stated
that you can't replay r0, so I maintain that googlecode is doing the
wrong thing here.
> - Julian
Lieven
Received on 2014-10-10 20:33:37 CEST