Possible cases for copy/rename on single files A and B. Lines marked (works) already work in the existing system.

case

local

remote

merge result

1:

change A

copy A->B

get local A change to B

2:

copy A->B

change A

get remote change to A and B

3:

change A

move A->B

get local A change to B, remove A

4:

move A->B

change A

get remote change to B

5:

--

copy A->B

get B (works?)

6:

copy A->B

--

nothing (works?)

7:

--

move A->B

get B (works?)

8:

move A->B

--

nothing (works)

9:

move A->B

move A->B

do merge with ancestor in A

10:

move B->A

move C->A

do merge with no ancestor (works)

11:

move A->B

move A->C

get C, keep B (works)

12:

copy A->B

create B

merge B with no ancestor (works)

13:

create B

copy A->B

merge B with no ancestor (works)

14:

move A->B

create B

merge B with no ancestor (works)

15:

create B

move A->B

merge B no ancestor, remove A (works)

16:

copy A->B

ch A, cr B

merge A, merge B no ancestor (works)

17:

ch A, cr B

copy A->B

merge A, merge B no ancestor (works)

18:

move A->B

ch A, cr B

merge B no ancestor (works)

19:

ch A, cr B

move A->B

merge B no ancestor, remove A (works)

20:

change A

ch A, mv A->B

B=merge(local A, remote B), remove A

21:

ch A, mv A->B

change A

B=merge(remote A, local B )

22:

move A->B

move B->A

get A, keep B (works)

23:

move A->B

move A->C, change C

get C, keep B (works)