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

Re: Ev2 using move-away and move-here

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 14 Aug 2013 15:43:06 +0100 (BST)

Philip Martin wrote:

> Julian Foad <julianfoad_at_btopenworld.com> writes:
>> Example 3: Swapping two directory levels
>>
>>   |                    |
>>   +--A      --\ /-->    +--A
>>       |        X          |
>>       +--B  --/ \-->      +--B
>>
>>   1. alter-dir A (children={}) ### Needed?
>>
>>   2. mv-away A/B (id=”original A/B”)
>>
>>   3. alter-dir / (children={A})
>>
>>   4. mv-away A (id=”original A”)
>>
>>   5. mv-here A (id=”original A/B”)
>>
>>   6. alter-dir A (children={B}) ### Second alter-dir on same path, if
>> (1) was needed.
>>
>>   7. mv-here A/B (id=”original A”)
>
> That's inconsistent: for A alter-dir is before mv-away while for A/B
> alter-dir is after mv-away.

In what I wrote here, alter-dir(/) is before mv-away(A), and there are two calls to alter-dir(A), in steps 1 and 6, before and after mv-away(A/B).  But anyway, yes, it's messed up, and your suggestion below is neater.

> A more consistent set of steps would be:
>
>     1. alter-dir A/B (children={A})
>
>     2. alter-dir A (children={})
>
>     3. mv-away A/B (id="original A/B")
>
>     4. mv-away A (id="original A")
>
>     5. mv-here A (id="original A/B")
>
>     6. mv-here A/B (id="original A")

Yes, that's nicer.  Yes, you can probably drop the alter-dir(/) like you have done, on the basis that the list of child names in (/) does not change even though their identities do change.  That's an under-specified part of the rules.

> Not sure whether 1 and 2 have any particular order.  In the working copy
> receiver the alter-dir for A/B causes A to be added as incomplete in
> A/B; it becomes complete at step 6.  I'm not sure whether the alter-dir
> for A that deletes a child causes anything to be marked.
>
>> There are two potential problems here:
>>
>>   * We make an edit within subtree A (the “move-away A/B”) before moving A
>>
>>   * The “alter-dir A” is performed twice
>
> In this case there is no need to perform alter-dir on A twice.

Right, good.

> As you pointed out when a copy replaces a mv-away it is still necessary
> to alter-dir two different nodes at the same path:
>
>     1. alter-dir A (children={...})
>     2. mv-away A (id=...)
>     3. copy A (src=...)
>     4. alter-dir A (children={...})

Well, that depends.  There may be no need to issue the alter-dir on the original 'A' at this stage, we could wait until it arrives at its final path (move-here B (id="original A"), then alter-dir B).

- Julian
Received on 2013-08-14 16:44:01 CEST

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