Differences between revisions 3 and 4
Revision 3 as of 2006-09-25 22:01:06
Size: 2181
Editor: mpm
Comment:
Revision 4 as of 2006-10-18 17:50:17
Size: 2181
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
||6  || copy A->B || -- || nothing (works?) || ||6: || copy A->B || -- || nothing (works?) ||
Line 11: Line 11:
||8  || move A->B || -- || nothing (works) || ||8: || move A->B || -- || nothing (works) ||
Line 13: Line 13:
||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) ||
||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) ||
Line 16: Line 16:
||13  || create B || copy A->B || merge B with no ancestor (works) || ||13: || create B || copy A->B || merge B with no ancestor (works) ||
Line 18: Line 18:
||15  || create B || move A->B || merge B no ancestor, remove A (works) || ||15: || create B || move A->B || merge B no ancestor, remove A (works) ||

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)

  • 1-4, 20, 21 need copy search for manifests
  • 2 and 3 half-work
  • 9 needs rename-aware filectx.ancestor()
  • 16-19 could also be done with two merges

CopyMergeCases (last edited 2011-03-23 14:18:54 by mpm)