Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Automatic diff as part of commit; lint not applicable. - Unit
Automatic diff as part of commit; unit tests not applicable.
| Automatic diff as part of commit; lint not applicable. |
| Automatic diff as part of commit; unit tests not applicable. |
| Path | Packages | |||
|---|---|---|---|---|
| M | mercurial/copies.py (29 lines) | |||
| M | tests/test-copy-move-merge.t (5 lines) | |||
| M | tests/test-double-merge.t (3 lines) | |||
| M | tests/test-graft.t (14 lines) | |||
| M | tests/test-issue672.t (9 lines) | |||
| M | tests/test-merge-criss-cross.t (3 lines) | |||
| M | tests/test-rename-dir-merge.t (10 lines) | |||
| M | tests/test-rename-merge1.t (16 lines) | |||
| M | tests/test-rename-merge2.t (81 lines) |
| Status | Author | Revision | |
|---|---|---|---|
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz | ||
| Closed | martinvonz |
| u2 = sorted(addedinm2 - addedinm1) | u2 = sorted(addedinm2 - addedinm1) | ||||
| header = b" unmatched files in %s" | header = b" unmatched files in %s" | ||||
| if u1: | if u1: | ||||
| repo.ui.debug(b"%s:\n %s\n" % (header % b'local', b"\n ".join(u1))) | repo.ui.debug(b"%s:\n %s\n" % (header % b'local', b"\n ".join(u1))) | ||||
| if u2: | if u2: | ||||
| repo.ui.debug(b"%s:\n %s\n" % (header % b'other', b"\n ".join(u2))) | repo.ui.debug(b"%s:\n %s\n" % (header % b'other', b"\n ".join(u2))) | ||||
| fullcopy = copies1.copy() | |||||
| fullcopy.update(copies2) | |||||
| if repo.ui.debugflag: | if repo.ui.debugflag: | ||||
| renamedeleteset = set() | renamedeleteset = set() | ||||
| divergeset = set() | divergeset = set() | ||||
| for dsts in diverge.values(): | for dsts in diverge.values(): | ||||
| divergeset.update(dsts) | divergeset.update(dsts) | ||||
| for dsts in renamedelete1.values(): | for dsts in renamedelete1.values(): | ||||
| renamedeleteset.update(dsts) | renamedeleteset.update(dsts) | ||||
| for dsts in renamedelete2.values(): | for dsts in renamedelete2.values(): | ||||
| renamedeleteset.update(dsts) | renamedeleteset.update(dsts) | ||||
| repo.ui.debug( | repo.ui.debug( | ||||
| b" all copies found (* = to merge, ! = divergent, " | b" all copies found (* = to merge, ! = divergent, " | ||||
| b"% = renamed and deleted):\n" | b"% = renamed and deleted):\n" | ||||
| ) | ) | ||||
| for f in sorted(fullcopy): | for side, copies in (("local", copies1), ("remote", copies2)): | ||||
| if not copies: | |||||
| continue | |||||
| repo.ui.debug(b" on %s side:\n" % side) | |||||
| for f in sorted(copies): | |||||
| note = b"" | note = b"" | ||||
| if f in copy1 or f in copy2: | if f in copy1 or f in copy2: | ||||
| note += b"*" | note += b"*" | ||||
| if f in divergeset: | if f in divergeset: | ||||
| note += b"!" | note += b"!" | ||||
| if f in renamedeleteset: | if f in renamedeleteset: | ||||
| note += b"%" | note += b"%" | ||||
| repo.ui.debug( | repo.ui.debug( | ||||
| b" src: '%s' -> dst: '%s' %s\n" % (fullcopy[f], f, note) | b" src: '%s' -> dst: '%s' %s\n" % (copies[f], f, note) | ||||
| ) | ) | ||||
| del renamedeleteset | del renamedeleteset | ||||
| del divergeset | del divergeset | ||||
| repo.ui.debug(b" checking for directory renames\n") | repo.ui.debug(b" checking for directory renames\n") | ||||
| dirmove1, movewithdir2 = _dir_renames(repo, c1, copy1, copies1, u2) | dirmove1, movewithdir2 = _dir_renames(repo, c1, copy1, copies1, u2) | ||||
| dirmove2, movewithdir1 = _dir_renames(repo, c2, copy2, copies2, u1) | dirmove2, movewithdir1 = _dir_renames(repo, c2, copy2, copies2, u1) | ||||
| $ hg ci -qAm "other" | $ hg ci -qAm "other" | ||||
| $ hg merge --debug | $ hg merge --debug | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| c | c | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| src: 'a' -> dst: 'c' * | src: 'a' -> dst: 'c' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6 | ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving a for resolve of c | preserving a for resolve of c | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: cp foo bar; change both | summary: cp foo bar; change both | ||||
| $ hg merge --debug | $ hg merge --debug | ||||
| unmatched files in other: | unmatched files in other: | ||||
| bar | bar | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'foo' -> dst: 'bar' * | src: 'foo' -> dst: 'bar' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104 | ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104 | ||||
| preserving foo for resolve of bar | preserving foo for resolve of bar | ||||
| preserving foo for resolve of foo | preserving foo for resolve of foo | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| bar: remote copied from foo -> m (premerge) | bar: remote copied from foo -> m (premerge) | ||||
| $ HGEDITOR=cat hg graft 1 5 'merge()' 2 --debug | $ HGEDITOR=cat hg graft 1 5 'merge()' 2 --debug | ||||
| skipping ungraftable merge revision 6 | skipping ungraftable merge revision 6 | ||||
| scanning for duplicate grafts | scanning for duplicate grafts | ||||
| skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | ||||
| grafting 1:5d205f8b35b6 "1" | grafting 1:5d205f8b35b6 "1" | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: True, partial: False | branchmerge: True, force: True, partial: False | ||||
| ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6 | ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| picked tool ':merge' for b (binary False symlink False changedelete False) | picked tool ':merge' for b (binary False symlink False changedelete False) | ||||
| merging b and a to b | merging b and a to b | ||||
| my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622 | my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622 | ||||
| premerge successful | premerge successful | ||||
| committing files: | committing files: | ||||
| b | b | ||||
| committing manifest | committing manifest | ||||
| committing changelog | committing changelog | ||||
| updating the branch cache | updating the branch cache | ||||
| grafting 5:97f8bfe72746 "5" | grafting 5:97f8bfe72746 "5" | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'c' -> dst: 'b' | src: 'c' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: True, partial: False | branchmerge: True, force: True, partial: False | ||||
| ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 | ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 | ||||
| e: remote is newer -> g | e: remote is newer -> g | ||||
| getting e | getting e | ||||
| committing files: | committing files: | ||||
| e | e | ||||
| committing manifest | committing manifest | ||||
| committing changelog | committing changelog | ||||
| updating the branch cache | updating the branch cache | ||||
| $ HGEDITOR=cat hg graft 4 3 --log --debug | $ HGEDITOR=cat hg graft 4 3 --log --debug | ||||
| scanning for duplicate grafts | scanning for duplicate grafts | ||||
| grafting 4:9c233e8e184d "4" | grafting 4:9c233e8e184d "4" | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'c' -> dst: 'b' | src: 'c' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: True, partial: False | branchmerge: True, force: True, partial: False | ||||
| ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d | ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d | ||||
| preserving e for resolve of e | preserving e for resolve of e | ||||
| d: remote is newer -> g | d: remote is newer -> g | ||||
| getting d | getting d | ||||
| e: versions differ -> m (premerge) | e: versions differ -> m (premerge) | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: 2 | summary: 2 | ||||
| ... grafts of grafts unfortunately can't | ... grafts of grafts unfortunately can't | ||||
| $ hg graft -q 13 --debug | $ hg graft -q 13 --debug | ||||
| scanning for duplicate grafts | scanning for duplicate grafts | ||||
| grafting 13:7a4785234d87 "2" | grafting 13:7a4785234d87 "2" | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | |||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: True, partial: False | branchmerge: True, force: True, partial: False | ||||
| ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87 | ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87 | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| note: graft of 13:7a4785234d87 created no changes to commit | note: graft of 13:7a4785234d87 created no changes to commit | ||||
| $ hg log -r 'destination(13)' | $ hg log -r 'destination(13)' | ||||
| All copies of a cset | All copies of a cset | ||||
| $ echo unrelated >> 2 | $ echo unrelated >> 2 | ||||
| $ hg ci -m unrelated1 # 2 | $ hg ci -m unrelated1 # 2 | ||||
| created new head | created new head | ||||
| $ hg merge --debug 1 | $ hg merge --debug 1 | ||||
| unmatched files in other: | unmatched files in other: | ||||
| 1a | 1a | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: '1' -> dst: '1a' | src: '1' -> dst: '1a' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a | ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a | ||||
| 1: other deleted -> r | 1: other deleted -> r | ||||
| removing 1 | removing 1 | ||||
| 1a: remote created -> g | 1a: remote created -> g | ||||
| getting 1a | getting 1a | ||||
| $ hg co -C 3 | $ hg co -C 3 | ||||
| 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
| $ hg merge -y --debug 4 | $ hg merge -y --debug 4 | ||||
| unmatched files in local: | unmatched files in local: | ||||
| 1a | 1a | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: '1' -> dst: '1a' * | src: '1' -> dst: '1a' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: c64f439569a9, local: f4a9cff3cd0b+, remote: 746e9549ea96 | ancestor: c64f439569a9, local: f4a9cff3cd0b+, remote: 746e9549ea96 | ||||
| preserving 1a for resolve of 1a | preserving 1a for resolve of 1a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| 1a: local copied/moved from 1 -> m (premerge) | 1a: local copied/moved from 1 -> m (premerge) | ||||
| picked tool ':merge' for 1a (binary False symlink False changedelete False) | picked tool ':merge' for 1a (binary False symlink False changedelete False) | ||||
| merging 1a and 1 to 1a | merging 1a and 1 to 1a | ||||
| my 1a@f4a9cff3cd0b+ other 1@746e9549ea96 ancestor 1@c64f439569a9 | my 1a@f4a9cff3cd0b+ other 1@746e9549ea96 ancestor 1@c64f439569a9 | ||||
| premerge successful | premerge successful | ||||
| 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| $ hg co -C 4 | $ hg co -C 4 | ||||
| 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
| $ hg merge -y --debug 3 | $ hg merge -y --debug 3 | ||||
| unmatched files in other: | unmatched files in other: | ||||
| 1a | 1a | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: '1' -> dst: '1a' * | src: '1' -> dst: '1a' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: c64f439569a9, local: 746e9549ea96+, remote: f4a9cff3cd0b | ancestor: c64f439569a9, local: 746e9549ea96+, remote: f4a9cff3cd0b | ||||
| preserving 1 for resolve of 1a | preserving 1 for resolve of 1a | ||||
| removing 1 | removing 1 | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| 1a: remote moved from 1 -> m (premerge) | 1a: remote moved from 1 -> m (premerge) | ||||
| picked tool ':merge' for 1a (binary False symlink False changedelete False) | picked tool ':merge' for 1a (binary False symlink False changedelete False) | ||||
| merging 1 and 1a to 1a | merging 1 and 1a to 1a | ||||
| my 1a@746e9549ea96+ other 1a@f4a9cff3cd0b ancestor 1@c64f439569a9 | my 1a@746e9549ea96+ other 1a@f4a9cff3cd0b ancestor 1@c64f439569a9 | ||||
| premerge successful | premerge successful | ||||
| 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 11b5b303e36c, local: c0ef19750a22+, remote: 6ca01f7342b9 | ancestor: 11b5b303e36c, local: c0ef19750a22+, remote: 6ca01f7342b9 | ||||
| d2/b: remote created -> g | d2/b: remote created -> g | ||||
| calculating bids for ancestor 154e6000f54e | calculating bids for ancestor 154e6000f54e | ||||
| unmatched files in other: | unmatched files in other: | ||||
| d2/b | d2/b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'd1/b' -> dst: 'd2/b' | src: 'd1/b' -> dst: 'd2/b' | ||||
| checking for directory renames | checking for directory renames | ||||
| discovered dir src: 'd1/' -> dst: 'd2/' | discovered dir src: 'd1/' -> dst: 'd2/' | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 154e6000f54e, local: c0ef19750a22+, remote: 6ca01f7342b9 | ancestor: 154e6000f54e, local: c0ef19750a22+, remote: 6ca01f7342b9 | ||||
| d1/a: other deleted -> r | d1/a: other deleted -> r | ||||
| d1/b: other deleted -> r | d1/b: other deleted -> r | ||||
| d2/b: remote created -> g | d2/b: remote created -> g | ||||
| $ hg merge --debug 1 | $ hg merge --debug 1 | ||||
| unmatched files in local: | unmatched files in local: | ||||
| a/c | a/c | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b/a | b/a | ||||
| b/b | b/b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a/a' -> dst: 'b/a' | src: 'a/a' -> dst: 'b/a' | ||||
| src: 'a/b' -> dst: 'b/b' | src: 'a/b' -> dst: 'b/b' | ||||
| checking for directory renames | checking for directory renames | ||||
| discovered dir src: 'a/' -> dst: 'b/' | discovered dir src: 'a/' -> dst: 'b/' | ||||
| pending file src: 'a/c' -> dst: 'b/c' | pending file src: 'a/c' -> dst: 'b/c' | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 | ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 | ||||
| a/a: other deleted -> r | a/a: other deleted -> r | ||||
| removing a/a | removing a/a | ||||
| 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
| $ hg merge --debug 2 | $ hg merge --debug 2 | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b/a | b/a | ||||
| b/b | b/b | ||||
| unmatched files in other: | unmatched files in other: | ||||
| a/c | a/c | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a/a' -> dst: 'b/a' | src: 'a/a' -> dst: 'b/a' | ||||
| src: 'a/b' -> dst: 'b/b' | src: 'a/b' -> dst: 'b/b' | ||||
| checking for directory renames | checking for directory renames | ||||
| discovered dir src: 'a/' -> dst: 'b/' | discovered dir src: 'a/' -> dst: 'b/' | ||||
| pending file src: 'a/c' -> dst: 'b/c' | pending file src: 'a/c' -> dst: 'b/c' | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb | ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b/c: local directory rename - get from a/c -> dg | b/c: local directory rename - get from a/c -> dg | ||||
| $ hg merge -y --debug | $ hg merge -y --debug | ||||
| unmatched files in local: | unmatched files in local: | ||||
| c2 | c2 | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| b2 | b2 | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a2' -> dst: 'c2' ! | |||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| src: 'a2' -> dst: 'b2' ! | src: 'a2' -> dst: 'b2' ! | ||||
| src: 'a2' -> dst: 'c2' ! | |||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c | ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c | ||||
| note: possible conflict - a2 was renamed multiple times to: | note: possible conflict - a2 was renamed multiple times to: | ||||
| b2 | b2 | ||||
| c2 | c2 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
| $ hg rm file | $ hg rm file | ||||
| $ hg commit -m "deleted file" | $ hg commit -m "deleted file" | ||||
| created new head | created new head | ||||
| $ hg merge --debug | $ hg merge --debug | ||||
| unmatched files in other: | unmatched files in other: | ||||
| newfile | newfile | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'file' -> dst: 'newfile' % | src: 'file' -> dst: 'newfile' % | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0 | ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0 | ||||
| note: possible conflict - file was deleted and renamed to: | note: possible conflict - file was deleted and renamed to: | ||||
| newfile | newfile | ||||
| newfile: remote created -> g | newfile: remote created -> g | ||||
| getting newfile | getting newfile | ||||
| $ hg ci -qm 'modify x, rename y to z' | $ hg ci -qm 'modify x, rename y to z' | ||||
| # We should probably tell the user about the conflicting rename sources. | # We should probably tell the user about the conflicting rename sources. | ||||
| # Depending on which side they pick, we should take that rename and get | # Depending on which side they pick, we should take that rename and get | ||||
| # the changes to the source from the other side. The unchanged file should | # the changes to the source from the other side. The unchanged file should | ||||
| # remain. | # remain. | ||||
| # we should not get the prompts about modify/delete conflicts | # we should not get the prompts about modify/delete conflicts | ||||
| $ hg merge --debug 1 -t :merge3 | $ hg merge --debug 1 -t :merge3 | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'y' -> dst: 'z' | |||||
| on remote side: | |||||
| src: 'x' -> dst: 'z' | src: 'x' -> dst: 'z' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508 | ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508 | ||||
| preserving x for resolve of x | preserving x for resolve of x | ||||
| preserving z for resolve of z | preserving z for resolve of z | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| x: prompt changed/deleted -> m (premerge) | x: prompt changed/deleted -> m (premerge) | ||||
| $ tm "up a " "nc a b" " " "1 get local a to b" | $ tm "up a " "nc a b" " " "1 get local a to b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a R:nc a b W: - 1 get local a to b | test L:up a R:nc a b W: - 1 get local a to b | ||||
| -------------- | -------------- | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: remote copied from a -> m (premerge) | b: remote copied from a -> m (premerge) | ||||
| $ tm "nc a b" "up a " " " "2 get rem change to a and b" | $ tm "nc a b" "up a " " " "2 get rem change to a and b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up a W: - 2 get rem change to a and b | test L:nc a b R:up a W: - 2 get rem change to a and b | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| $ tm "up a " "nm a b" " " "3 get local a change to b, remove a" | $ tm "up a " "nm a b" " " "3 get local a change to b, remove a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a R:nm a b W: - 3 get local a change to b, remove a | test L:up a R:nm a b W: - 3 get local a change to b, remove a | ||||
| -------------- | -------------- | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a | ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| $ tm "nm a b" "up a " " " "4 get remote change to b" | $ tm "nm a b" "up a " " " "4 get remote change to b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nm a b R:up a W: - 4 get remote change to b | test L:nm a b R:up a W: - 4 get remote change to b | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| $ tm " " "nc a b" " " "5 get b" | $ tm " " "nc a b" " " "5 get b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L: R:nc a b W: - 5 get b | test L: R:nc a b W: - 5 get b | ||||
| -------------- | -------------- | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| b: remote created -> g | b: remote created -> g | ||||
| getting b | getting b | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| $ tm "nc a b" " " " " "6 nothing" | $ tm "nc a b" " " " " "6 nothing" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R: W: - 6 nothing | test L:nc a b R: W: - 6 nothing | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| $ tm " " "nm a b" " " "7 get b" | $ tm " " "nm a b" " " "7 get b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L: R:nm a b W: - 7 get b | test L: R:nm a b W: - 7 get b | ||||
| -------------- | -------------- | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a | ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| b: remote created -> g | b: remote created -> g | ||||
| $ tm "nm a b" " " " " "8 nothing" | $ tm "nm a b" " " " " "8 nothing" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nm a b R: W: - 8 nothing | test L:nm a b R: W: - 8 nothing | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336 | ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| -------------- | -------------- | ||||
| $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:um a b R:um a b W: - 9 do merge with ancestor in a | test L:um a b R:um a b W: - 9 do merge with ancestor in a | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | |||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both renamed from a -> m (premerge) | b: both renamed from a -> m (premerge) | ||||
| -------------- | -------------- | ||||
| test L:nm a b R:nm a c W: - 11 get c, keep b | test L:nm a b R:nm a c W: - 11 get c, keep b | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| unmatched files in other: | unmatched files in other: | ||||
| c | c | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' ! | src: 'a' -> dst: 'b' ! | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'c' ! | src: 'a' -> dst: 'c' ! | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e | ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e | ||||
| note: possible conflict - a was renamed multiple times to: | note: possible conflict - a was renamed multiple times to: | ||||
| b | b | ||||
| c | c | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up b " " " "12 merge b no ancestor" | $ tm "nc a b" "up b " " " "12 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up b W: - 12 merge b no ancestor | test L:nc a b R:up b W: - 12 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| -------------- | -------------- | ||||
| $ tm "up b " "nm a b" " " "13 merge b no ancestor" | $ tm "up b " "nm a b" " " "13 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up b R:nm a b W: - 13 merge b no ancestor | test L:up b R:nm a b W: - 13 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up a b" " " "14 merge b no ancestor" | $ tm "nc a b" "up a b" " " "14 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up a b W: - 14 merge b no ancestor | test L:nc a b R:up a b W: - 14 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| -------------- | -------------- | ||||
| $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" | $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up b R:nm a b W: - 15 merge b no ancestor, remove a | test L:up b R:nm a b W: - 15 merge b no ancestor, remove a | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| -------------- | -------------- | ||||
| $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| -------------- | -------------- | ||||
| $ tm "nm a b" "up a b" " " "18 merge b no ancestor" | $ tm "nm a b" "up a b" " " "18 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nm a b R:up a b W: - 18 merge b no ancestor | test L:nm a b R:up a b W: - 18 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a | ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| a: prompt deleted/changed -> m (premerge) | a: prompt deleted/changed -> m (premerge) | ||||
| -------------- | -------------- | ||||
| $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" | $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a | test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a | ||||
| -------------- | -------------- | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a | ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a | ||||
| preserving a for resolve of a | preserving a for resolve of a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| $ tm "up a " "um a b" " " "20 merge a and b to b, remove a" | $ tm "up a " "um a b" " " "20 merge a and b to b, remove a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a R:um a b W: - 20 merge a and b to b, remove a | test L:up a R:um a b W: - 20 merge a and b to b, remove a | ||||
| -------------- | -------------- | ||||
| unmatched files in other: | unmatched files in other: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on remote side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493 | ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| $ tm "um a b" "up a " " " "21 merge a and b to b" | $ tm "um a b" "up a " " " "21 merge a and b to b" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:um a b R:up a W: - 21 merge a and b to b | test L:um a b R:up a W: - 21 merge a and b to b | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| -------------- | -------------- | ||||
| test L:nm a b R:up a c W: - 23 get c, keep b | test L:nm a b R:up a c W: - 23 get c, keep b | ||||
| -------------- | -------------- | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| unmatched files in other: | unmatched files in other: | ||||
| c | c | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f | ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| c: remote created -> g | c: remote created -> g | ||||
| getting c | getting c | ||||
| unmatched files in local: | unmatched files in local: | ||||
| 5/g | 5/g | ||||
| 6/g | 6/g | ||||
| unmatched files in other: | unmatched files in other: | ||||
| 3/g | 3/g | ||||
| 4/g | 4/g | ||||
| 7/f | 7/f | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| on local side: | |||||
| src: '1/f' -> dst: '1/g' * | src: '1/f' -> dst: '1/g' * | ||||
| src: '3/f' -> dst: '3/g' * | |||||
| src: '4/f' -> dst: '4/g' * | |||||
| src: '5/f' -> dst: '5/g' * | src: '5/f' -> dst: '5/g' * | ||||
| src: '6/f' -> dst: '6/g' * | src: '6/f' -> dst: '6/g' * | ||||
| on remote side: | |||||
| src: '1/f' -> dst: '1/g' * | |||||
| src: '3/f' -> dst: '3/g' * | |||||
| src: '4/f' -> dst: '4/g' * | |||||
| checking for directory renames | checking for directory renames | ||||
| $ hg mani | $ hg mani | ||||
| 0/f | 0/f | ||||
| 1/g | 1/g | ||||
| 2/f | 2/f | ||||
| 3/f | 3/f | ||||
| 4/f | 4/f | ||||
| 5/f | 5/f | ||||