Greg Stein <[email protected]> writes:
> On Fri, Sep 6, 2013 at 1:47 PM, Philip Martin
>> Two people at least. I have shown how Ev2 with a split move could
>> handle the case
>>
>> A/B/C to A
>> A/B to A/B
>> A to A/B/C
>>
>> What is your alternative?
How does you suggestion work? Start with
NODES local_relpath revision status repos_path
A 6 normal A
A/B 6 normal A/B
A/B/C 6 normal A/B/C
> move(A/B/C@original, A, replace=R)
What does the receiver do? I suppose it could implement the replace and
move the replaced nodes to some temporary table:
NODES local_relpath revision status repos_path
A 6 normal A/B/C
and
TEMP A 6 normal A
A/B 6 normal A/B
A/B/C 6 not-present A/B/C
but note the repos_path for the new A in NODES. We can't simply change
it to:
NODES local_relpath revision status repos_path
A 6 normal A
as that row would be invalid: wrong properties, no A@6 in the
repository. Let's leave it as A/B/C.
> move(A/B@original, A/B)
Then it moves the relevant rows out of the temporary table:
NODES local_relpath revision status repos_path
A 6 normal A/B/C
A/B 6 normal A/B
A/B/C not-present A/B/C
and
TEMP A 6 normal A
So now A/B in NODES is switched relative to A. It's not even our
standard switch because A in the working copy is A/B/C in the repository
and the repository node has no child B.
> move(A@original, A/B/C)
Move the final row out of the temporary table
NODES local_relpath revision status repos_path
A 6 normal A/B/C
A/B 6 normal A/B
A/B/C 6 normal A
So now we have two of these strange switches.
> Not sure of the intent with children (ie. what is retained under A/B/C).
What children? Every node gets moved.
Now we need the alter calls, these can fix up the switches:
alter_dir(A, children=B)
NODES local_relpath revision status repos_path
A 8 normal A
A/B 6 normal A/B
A/B/C 6 normal A
alter_dir(A/B, children=C)
NODES local_relpath revision status repos_path
A 8 normal A
A/B 8 normal A/B
A/B/C 6 normal A
alter_dir(A/B/C, children=)
NODES local_relpath revision status repos_path
A 8 normal A
A/B 8 normal A/B
A/B/C 8 normal A/B/C
Is that the plan? NODES goes through those intermediate states with
switched nodes?
--
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*