You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Greg Stein <gs...@gmail.com> on 2013/06/26 02:39:05 UTC

Ev2 change ordering (was: svn commit: r1235773 ...)

[not trimming]

On Tue, Jun 25, 2013 at 8:27 PM, Julian Foad <ju...@btopenworld.com> wrote:
> Daniel Shahaf wrote:
>
>> On Wed, Jun 26, 2013 at 01:39:45AM +0300, Daniel Shahaf wrote:
>>>  gstein@apache.org wrote on Wed, Jan 25, 2012 at 14:45:02 -0000:
>>>> + * <h3>Timing and State</h3>
>>>> + * The calls made by the driver to alter the state in the receiver
>>>> + * are based on the receiver's *current* state, which includes all
>>>> + * prior changes made during the edit.
>>>
>>>  Should we change this to say:
>>>
>>>   + * <h3>Timing and State</h3>
>>>   + * The calls made by the driver to alter the state in the receiver are
>>>   + * based on the receiver's *initial* state, which excludes all prior
>>>   + * changes made during the edit.
>>>
>>>  ?
>>>
>>>  I've reviewed the IRC logs referred to in the log msg [1], as well as
>>>  today's, and I don't see a good reason to stick with the "refers to
>>>  current state"; and I do see a good reason to use "refers to initial
>>>  state": that's closer to the final copyfrom (or moved-from) info.
>>>  I also find "refers to the initial state" more intuitive.
>
> Hi Daniel.  I could begin to address your question, but discussion of Ev2 move design is such a big and tricky topic (witness the several hours on IRC today) that I would humbly request you start a thread with 'Ev2' in the subject line so we can all track it.  Your question here doesn't seem to be one that merely concerns r1235773 and can be answered with 'yes' and a follow-up commit.
>
>> There was some more discussion on IRC today.
>>
>> It involved the following case:
>> svn mv A B; svn mv B/C D; svn ci;
>>
>> which could be represented in Ev2 as:
>>
>> move(A, B); move(B/C, D);
>>
>> or as:
>>
>> move(A/C, D); move(B, D);
>
> I assume the copy-source refers to the current state rather than the initial state in these two options, but either way that second option doesn't make sense, since there is no node 'B' available to be moved.

It was intended to be:

  move(A, B); move(B/C, D)
or
  move(A/C, D); move(A, B)

The two are the same if you assume current-state. The second also
works if you assume initial-state.

Cheers,
-g