# HG changeset patch # User Mads Kiilerich # Date 1398125425 -7200 # Node ID cb15835456cb2b89a42c9c489188cb198764e0af # Parent 26b84128c54d5608ae2db97c98ec401855bd8169 merge: change debug logging - test output changes but no real changes Preparing for action list split-up, making sure the final change don't have any test changes. The patch moves debug statements around without really changing anything. Arguably, it temporarily makes the code worse. The only justification is that it makes it easier to review the test changes ... and in the end the big change will not change test output at all. The changes to test output are due to changes in the ordering of debug output. That is mainly because we now do the debug logging for files when we actually process them. Files are also processed in a slightly different but still correct order. It is now primarily ordered by action type, secondarily by filename. The patch introduces some redundancy. Some of it will be removed again, some of it will in the end help code readability and efficiency. It is possible that we later on could introduce a "process this action list and do some logging and progress reporting and apply this function". The "preserving X for resolve" debug statements will only have single space indentation. It will no longer have a leading single space indented "f: msg -> m" message. Having this message double indented would thus no longer make sense. The bid actions will temporarily be sorted using a custom sort key that happens to match the sort order the simplified code will have in the end. diff -r 26b84128c54d -r cb15835456cb mercurial/merge.py --- a/mercurial/merge.py Thu May 15 02:14:59 2014 +0200 +++ b/mercurial/merge.py Tue Apr 22 02:10:25 2014 +0200 @@ -591,9 +591,9 @@ wwrite = repo.wwrite audit = repo.wopener.audit i = 0 - for arg in args: - f = arg[0] - if arg[1] == 'r': + for f, m, args, msg in args: + repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) + if m == 'r': if verbose: repo.ui.note(_("removing %s\n") % f) audit(f) @@ -605,7 +605,7 @@ else: if verbose: repo.ui.note(_("getting %s\n") % f) - wwrite(f, fctx(f).data(), arg[2][0]) + wwrite(f, fctx(f).data(), args[0]) if i == 100: yield i, f i = 0 @@ -632,12 +632,11 @@ # prescan for merges for a in actions: f, m, args, msg = a - repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) if m == "m": # merge f1, f2, fa, move, anc = args if f == '.hgsubstate': # merged internally continue - repo.ui.debug(" preserving %s for resolve of %s\n" % (f1, f)) + repo.ui.debug(" preserving %s for resolve of %s\n" % (f1, f)) fcl = wctx[f1] fco = mctx[f2] actx = repo[anc] @@ -667,7 +666,7 @@ updated = len(updateactions) removeactions = [a for a in workeractions if a[1] == 'r'] removed = len(removeactions) - actions = [a for a in actions if a[1] not in 'grk'] + actions = [a for a in actions if a[1] not in 'gr'] hgsub = [a[1] for a in workeractions if a[0] == '.hgsubstate'] if hgsub and hgsub[0] == 'r': @@ -691,10 +690,30 @@ if hgsub and hgsub[0] == 'g': subrepo.submerge(repo, wctx, mctx, wctx, overwrite) - for i, a in enumerate(actions): - f, m, args, msg = a - progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files) - if m == "m": # merge + for f, m, args, msg in actions: + + # forget (manifest only, just log it) (must come first) + if m == "f": + repo.ui.debug(" %s: %s -> f\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) + + # re-add (manifest only, just log it) + elif m == "a": + repo.ui.debug(" %s: %s -> a\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) + + # keep (noop, just log it) + elif m == "k": + repo.ui.debug(" %s: %s -> k\n" % (f, msg)) + # no progress + + # merge + elif m == "m": + repo.ui.debug(" %s: %s -> m\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) f1, f2, fa, move, anc = args if f == '.hgsubstate': # subrepo states need updating subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), @@ -709,35 +728,61 @@ updated += 1 else: merged += 1 - elif m == "dm": # directory rename, move local + + # directory rename, move local + elif m == "dm": + repo.ui.debug(" %s: %s -> dm\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) f0, flags = args repo.ui.note(_("moving %s to %s\n") % (f0, f)) audit(f) repo.wwrite(f, wctx.filectx(f0).data(), flags) util.unlinkpath(repo.wjoin(f0)) updated += 1 - elif m == "dg": # local directory rename, get + + # local directory rename, get + elif m == "dg": + repo.ui.debug(" %s: %s -> dg\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) f0, flags = args repo.ui.note(_("getting %s to %s\n") % (f0, f)) repo.wwrite(f, mctx.filectx(f0).data(), flags) updated += 1 - elif m == "dr": # divergent renames + + # divergent renames + elif m == "dr": + repo.ui.debug(" %s: %s -> dr\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) fl, = args repo.ui.warn(_("note: possible conflict - %s was renamed " "multiple times to:\n") % f) for nf in fl: repo.ui.warn(" %s\n" % nf) - elif m == "rd": # rename and delete + + # rename and delete + elif m == "rd": + repo.ui.debug(" %s: %s -> rd\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) fl, = args repo.ui.warn(_("note: possible conflict - %s was deleted " "and renamed to:\n") % f) for nf in fl: repo.ui.warn(" %s\n" % nf) - elif m == "e": # exec + + # exec + elif m == "e": + repo.ui.debug(" %s: %s -> e\n" % (f, msg)) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) flags, = args audit(f) util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags) updated += 1 + ms.commit() progress(_updating, None, total=numupdates, unit=_files) @@ -764,7 +809,7 @@ actions = manifestmerge(repo, wctx, mctx, ancestor, branchmerge, force, partial, acceptremote, followcopies) - for a in sorted(actions): + for a in sorted(actions, key=lambda a: (a[1], a)): f, m, args, msg = a repo.ui.debug(' %s: %s -> %s\n' % (f, msg, m)) if f in fbids: @@ -849,28 +894,41 @@ def recordupdates(repo, actions, branchmerge): "record merge actions to the dirstate" - for a in actions: - f, m, args, msg = a - if m == "r": # remove (must come first) + for f, m, args, msg in actions: + + # remove (must come first) + if m == "r": # remove if branchmerge: repo.dirstate.remove(f) else: repo.dirstate.drop(f) - elif m == "f": # forget (must come first) + + # forget (must come first) + elif m == "f": repo.dirstate.drop(f) - elif m == "a": # re-add + + # re-add + elif m == "a": if not branchmerge: repo.dirstate.add(f) - elif m == "e": # exec change + + # exec change + elif m == "e": repo.dirstate.normallookup(f) - elif m == "k": # keep + + # keep + elif m == "k": pass - elif m == "g": # get + + # get + elif m == "g": if branchmerge: repo.dirstate.otherparent(f) else: repo.dirstate.normal(f) - elif m == "m": # merge + + # merge + elif m == "m": f1, f2, fa, move, anc = args if branchmerge: # We've done a branch merge, mark this file as merged @@ -893,7 +951,9 @@ repo.dirstate.normallookup(f) if move: repo.dirstate.drop(f1) - elif m == "dm": # directory rename, move local + + # directory rename, move local + elif m == "dm": f0, flag = args if f0 not in repo.dirstate: # untracked file moved @@ -905,7 +965,9 @@ else: repo.dirstate.normal(f) repo.dirstate.drop(f0) - elif m == "dg": # directory rename, get + + # directory rename, get + elif m == "dg": f0, flag = args if branchmerge: repo.dirstate.add(f) diff -r 26b84128c54d -r cb15835456cb tests/test-copy-move-merge.t --- a/tests/test-copy-move-merge.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-copy-move-merge.t Tue Apr 22 02:10:25 2014 +0200 @@ -31,16 +31,16 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6 + preserving a for resolve of b + preserving a for resolve of c + removing a b: remote moved from a -> m - preserving a for resolve of b - c: remote moved from a -> m - preserving a for resolve of c - removing a updating: b 1/2 files (50.00%) picked tool 'internal:merge' for b (binary False symlink False) merging a and b to b my b@add3f11052fa+ other b@17c05bb7fcb6 ancestor a@b8bf91eeebbc premerge successful + c: remote moved from a -> m updating: c 2/2 files (100.00%) picked tool 'internal:merge' for c (binary False symlink False) merging a and c to c diff -r 26b84128c54d -r cb15835456cb tests/test-double-merge.t --- a/tests/test-double-merge.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-double-merge.t Tue Apr 22 02:10:25 2014 +0200 @@ -35,15 +35,15 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104 + preserving foo for resolve of bar + preserving foo for resolve of foo bar: remote copied from foo -> m - preserving foo for resolve of bar - foo: versions differ -> m - preserving foo for resolve of foo updating: bar 1/2 files (50.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging foo and bar to bar my bar@6a0df1dad128+ other bar@484bf6903104 ancestor foo@e6dc8efe11cc premerge successful + foo: versions differ -> m updating: foo 2/2 files (100.00%) picked tool 'internal:merge' for foo (binary False symlink False) merging foo diff -r 26b84128c54d -r cb15835456cb tests/test-graft.t --- a/tests/test-graft.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-graft.t Tue Apr 22 02:10:25 2014 +0200 @@ -137,8 +137,8 @@ resolving manifests branchmerge: True, force: True, partial: False ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6 + preserving b for resolve of b b: local copied/moved from a -> m - preserving b for resolve of b updating: b 1/1 files (100.00%) picked tool 'internal:merge' for b (binary False symlink False) merging b and a to b @@ -151,21 +151,21 @@ branchmerge: True, force: True, partial: False ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 e: remote is newer -> g - b: keep -> k getting e updating: e 1/1 files (100.00%) + b: keep -> k e grafting revision 4 searching for copies back to rev 1 resolving manifests branchmerge: True, force: True, partial: False ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d + preserving e for resolve of e d: remote is newer -> g + getting d + updating: d 1/2 files (50.00%) b: keep -> k e: versions differ -> m - preserving e for resolve of e - getting d - updating: d 1/2 files (50.00%) updating: e 2/2 files (100.00%) picked tool 'internal:merge' for e (binary False symlink False) merging e diff -r 26b84128c54d -r cb15835456cb tests/test-issue672.t --- a/tests/test-issue672.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-issue672.t Tue Apr 22 02:10:25 2014 +0200 @@ -35,12 +35,12 @@ branchmerge: True, force: False, partial: False ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a 1: other deleted -> r - 1a: remote created -> g - 2: keep -> k removing 1 updating: 1 1/2 files (50.00%) + 1a: remote created -> g getting 1a updating: 1a 2/2 files (100.00%) + 2: keep -> k 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -66,8 +66,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: c64f439569a9, local: e327dca35ac8+, remote: 746e9549ea96 + preserving 1a for resolve of 1a 1a: local copied/moved from 1 -> m - preserving 1a for resolve of 1a updating: 1a 1/1 files (100.00%) picked tool 'internal:merge' for 1a (binary False symlink False) merging 1a and 1 to 1a @@ -89,9 +89,9 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: c64f439569a9, local: 746e9549ea96+, remote: e327dca35ac8 + preserving 1 for resolve of 1a + removing 1 1a: remote moved from 1 -> m - preserving 1 for resolve of 1a - removing 1 updating: 1a 1/1 files (100.00%) picked tool 'internal:merge' for 1a (binary False symlink False) merging 1 and 1a to 1a diff -r 26b84128c54d -r cb15835456cb tests/test-merge-commit.t --- a/tests/test-merge-commit.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-merge-commit.t Tue Apr 22 02:10:25 2014 +0200 @@ -71,8 +71,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 0555950ead28 + preserving bar for resolve of bar bar: versions differ -> m - preserving bar for resolve of bar updating: bar 1/1 files (100.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging bar @@ -158,8 +158,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 3ffa6b9e35f0 + preserving bar for resolve of bar bar: versions differ -> m - preserving bar for resolve of bar updating: bar 1/1 files (100.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging bar diff -r 26b84128c54d -r cb15835456cb tests/test-merge-criss-cross.t --- a/tests/test-merge-criss-cross.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-merge-criss-cross.t Tue Apr 22 02:10:25 2014 +0200 @@ -81,11 +81,11 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922 + preserving f2 for resolve of f2 f1: remote is newer -> g - f2: versions differ -> m - preserving f2 for resolve of f2 getting f1 updating: f1 1/2 files (50.00%) + f2: versions differ -> m updating: f2 2/2 files (100.00%) picked tool 'internal:dump' for f2 (binary False symlink False) merging f2 @@ -143,8 +143,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922 + f2: keep -> k f1: versions differ -> m - f2: keep -> k auction for merging merge bids f1: picking 'get' action @@ -152,9 +152,9 @@ end of auction f1: remote is newer -> g - f2: keep -> k getting f1 updating: f1 1/1 files (100.00%) + f2: keep -> k 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -188,8 +188,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 40663881a6dd, local: adfe50279922+, remote: 3b08d01b0ab5 + f2: remote is newer -> g f1: versions differ -> m - f2: remote is newer -> g auction for merging merge bids f1: picking 'keep' action @@ -197,9 +197,9 @@ end of auction f2: remote is newer -> g - f1: keep -> k getting f2 updating: f2 1/1 files (100.00%) + f1: keep -> k 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -254,8 +254,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922 + f2: keep -> k f1: versions differ -> m - f2: keep -> k auction for merging merge bids f1: picking 'get' action @@ -263,9 +263,9 @@ end of auction f1: remote is newer -> g - f2: keep -> k getting f1 updating: f1 1/1 files (100.00%) + f2: keep -> k 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r 26b84128c54d -r cb15835456cb tests/test-merge-types.t --- a/tests/test-merge-types.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-merge-types.t Tue Apr 22 02:10:25 2014 +0200 @@ -34,8 +34,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c + preserving a for resolve of a a: versions differ -> m - preserving a for resolve of a updating: a 1/1 files (100.00%) picked tool 'internal:merge' for a (binary False symlink True) merging a @@ -68,8 +68,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f + preserving a for resolve of a a: versions differ -> m - preserving a for resolve of a updating: a 1/1 files (100.00%) picked tool 'internal:merge' for a (binary False symlink True) merging a @@ -102,8 +102,8 @@ resolving manifests branchmerge: False, force: False, partial: False ancestor: c334dc3be0da, local: c334dc3be0da+, remote: 521a1e40188f + preserving a for resolve of a a: versions differ -> m - preserving a for resolve of a updating: a 1/1 files (100.00%) (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re) picked tool 'internal:prompt' for a (binary False symlink True) diff -r 26b84128c54d -r cb15835456cb tests/test-merge7.t --- a/tests/test-merge7.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-merge7.t Tue Apr 22 02:10:25 2014 +0200 @@ -84,8 +84,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 96b70246a118, local: 50c3a7e29886+, remote: 40d11a4173a8 + preserving test.txt for resolve of test.txt test.txt: versions differ -> m - preserving test.txt for resolve of test.txt updating: test.txt 1/1 files (100.00%) picked tool 'internal:merge' for test.txt (binary False symlink False) merging test.txt diff -r 26b84128c54d -r cb15835456cb tests/test-rebase-conflicts.t --- a/tests/test-rebase-conflicts.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-rebase-conflicts.t Tue Apr 22 02:10:25 2014 +0200 @@ -220,9 +220,9 @@ branchmerge: False, force: True, partial: False ancestor: d79e2059b5c0+, local: d79e2059b5c0+, remote: 4bc80088dc6b f2.txt: other deleted -> r - f1.txt: remote created -> g removing f2.txt updating: f2.txt 1/2 files (50.00%) + f1.txt: remote created -> g getting f1.txt updating: f1.txt 2/2 files (100.00%) merge against 9:e31216eec445 @@ -255,9 +255,9 @@ branchmerge: False, force: False, partial: False ancestor: 2a7f09cac94c, local: 2a7f09cac94c+, remote: d79e2059b5c0 f1.txt: other deleted -> r - f2.txt: remote created -> g removing f1.txt updating: f1.txt 1/2 files (50.00%) + f2.txt: remote created -> g getting f2.txt updating: f2.txt 2/2 files (100.00%) 3 changesets found diff -r 26b84128c54d -r cb15835456cb tests/test-rename-dir-merge.t --- a/tests/test-rename-dir-merge.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-rename-dir-merge.t Tue Apr 22 02:10:25 2014 +0200 @@ -40,16 +40,16 @@ branchmerge: True, force: False, partial: False ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 a/a: other deleted -> r + removing a/a a/b: other deleted -> r - b/a: remote created -> g - b/b: remote created -> g - b/c: remote directory rename - move from a/c -> dm - removing a/a removing a/b updating: a/b 2/5 files (40.00%) + b/a: remote created -> g getting b/a + b/b: remote created -> g getting b/b updating: b/b 4/5 files (80.00%) + b/c: remote directory rename - move from a/c -> dm updating: b/c 5/5 files (100.00%) moving a/c to b/c (glob) 3 files updated, 0 files merged, 2 files removed, 0 files unresolved diff -r 26b84128c54d -r cb15835456cb tests/test-rename-merge1.t --- a/tests/test-rename-merge1.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-rename-merge1.t Tue Apr 22 02:10:25 2014 +0200 @@ -36,18 +36,18 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c + preserving a for resolve of b + removing a b2: remote created -> g - b: remote moved from a -> m - preserving a for resolve of b - a2: divergent renames -> dr - removing a getting b2 updating: b2 1/3 files (33.33%) + b: remote moved from a -> m updating: b 2/3 files (66.67%) picked tool 'internal:merge' for b (binary False symlink False) merging a and b to b my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c premerge successful + a2: divergent renames -> dr updating: a2 3/3 files (100.00%) note: possible conflict - a2 was renamed multiple times to: c2 @@ -182,9 +182,9 @@ branchmerge: True, force: False, partial: False ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0 newfile: remote created -> g - file: rename and delete -> rd getting newfile updating: newfile 1/2 files (50.00%) + file: rename and delete -> rd updating: file 2/2 files (100.00%) note: possible conflict - file was deleted and renamed to: newfile diff -r 26b84128c54d -r cb15835456cb tests/test-rename-merge2.t --- a/tests/test-rename-merge2.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-rename-merge2.t Tue Apr 22 02:10:25 2014 +0200 @@ -86,16 +86,16 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24 + preserving a for resolve of b + preserving rev for resolve of rev a: keep -> k b: remote copied from a -> m - preserving a for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 premerge successful + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -122,18 +122,18 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71 + preserving b for resolve of b + preserving rev for resolve of rev a: remote is newer -> g - b: local copied/moved from a -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev getting a updating: a 1/3 files (33.33%) + b: local copied/moved from a -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 premerge successful + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -160,16 +160,16 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a + preserving a for resolve of b + preserving rev for resolve of rev + removing a b: remote moved from a -> m - preserving a for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev - removing a updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 premerge successful + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -195,15 +195,15 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71 + preserving b for resolve of b + preserving rev for resolve of rev b: local copied/moved from a -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 premerge successful + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -229,11 +229,11 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24 + preserving rev for resolve of rev b: remote created -> g - rev: versions differ -> m - preserving rev for resolve of rev getting b updating: b 1/2 files (50.00%) + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -259,8 +259,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336 + preserving rev for resolve of rev rev: versions differ -> m - preserving rev for resolve of rev updating: rev 1/1 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -286,14 +286,14 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a + preserving rev for resolve of rev a: other deleted -> r - b: remote created -> g - rev: versions differ -> m - preserving rev for resolve of rev removing a updating: a 1/3 files (33.33%) + b: remote created -> g getting b updating: b 2/3 files (66.67%) + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -318,8 +318,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336 + preserving rev for resolve of rev rev: versions differ -> m - preserving rev for resolve of rev updating: rev 1/1 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -341,14 +341,14 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 + preserving b for resolve of b + preserving rev for resolve of rev b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -379,16 +379,16 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e + preserving rev for resolve of rev c: remote created -> g - rev: versions differ -> m - preserving rev for resolve of rev - a: divergent renames -> dr getting c updating: c 1/3 files (33.33%) + rev: versions differ -> m updating: rev 2/3 files (66.67%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 + a: divergent renames -> dr updating: a 3/3 files (100.00%) note: possible conflict - a was renamed multiple times to: b @@ -411,14 +411,14 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 + preserving b for resolve of b + preserving rev for resolve of rev b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -441,17 +441,17 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a + preserving b for resolve of b + preserving rev for resolve of rev a: other deleted -> r - b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev removing a updating: a 1/3 files (33.33%) + b: versions differ -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -473,17 +473,17 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a + preserving b for resolve of b + preserving rev for resolve of rev a: remote is newer -> g - b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev getting a updating: a 1/3 files (33.33%) + b: versions differ -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -506,17 +506,17 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a + preserving b for resolve of b + preserving rev for resolve of rev a: other deleted -> r - b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev removing a updating: a 1/3 files (33.33%) + b: versions differ -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -538,17 +538,17 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a + preserving b for resolve of b + preserving rev for resolve of rev a: remote is newer -> g - b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev getting a updating: a 1/3 files (33.33%) + b: versions differ -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -571,15 +571,15 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 + preserving b for resolve of b + preserving rev for resolve of rev a: keep -> k b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -604,17 +604,17 @@ ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a remote changed a which local deleted use (c)hanged version or leave (d)eleted? c + preserving b for resolve of b + preserving rev for resolve of rev a: prompt recreating -> g - b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev getting a updating: a 1/3 files (33.33%) + b: versions differ -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -639,16 +639,16 @@ ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a local changed a which remote deleted use (c)hanged version or (d)elete? c + preserving b for resolve of b + preserving rev for resolve of rev a: prompt keep -> a + updating: a 1/3 files (33.33%) b: versions differ -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev - updating: a 1/3 files (33.33%) updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -674,15 +674,15 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493 + preserving a for resolve of b + preserving rev for resolve of rev + removing a b: remote moved from a -> m - preserving a for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev - removing a updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -708,14 +708,14 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71 + preserving b for resolve of b + preserving rev for resolve of rev b: local copied/moved from a -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 + rev: versions differ -> m updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -746,18 +746,18 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f + preserving b for resolve of b + preserving rev for resolve of rev c: remote created -> g - b: local copied/moved from a -> m - preserving b for resolve of b - rev: versions differ -> m - preserving rev for resolve of rev getting c updating: c 1/3 files (33.33%) + b: local copied/moved from a -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 premerge successful + rev: versions differ -> m updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev @@ -836,28 +836,18 @@ ancestor: e6cb3cf11019, local: ec44bf929ab5+, remote: c62e34d0b898 remote changed 8/f which local deleted use (c)hanged version or leave (d)eleted? c + preserving 0/f for resolve of 0/f + preserving 1/g for resolve of 1/g + preserving 2/f for resolve of 2/f + preserving 3/f for resolve of 3/f + preserving 3/f for resolve of 3/g + preserving 4/f for resolve of 4/g + preserving 5/f for resolve of 5/f + preserving 5/g for resolve of 5/g + preserving 6/g for resolve of 6/g + preserving 7/f for resolve of 7/f + removing 4/f 8/f: prompt recreating -> g - 0/f: versions differ -> m - preserving 0/f for resolve of 0/f - 1/g: versions differ -> m - preserving 1/g for resolve of 1/g - 2/f: versions differ -> m - preserving 2/f for resolve of 2/f - 3/f: versions differ -> m - preserving 3/f for resolve of 3/f - 3/g: remote copied from 3/f -> m - preserving 3/f for resolve of 3/g - 4/g: remote moved from 4/f -> m - preserving 4/f for resolve of 4/g - 5/f: versions differ -> m - preserving 5/f for resolve of 5/f - 5/g: local copied/moved from 5/f -> m - preserving 5/g for resolve of 5/g - 6/g: local copied/moved from 6/f -> m - preserving 6/g for resolve of 6/g - 7/f: remote differs from untracked local -> m - preserving 7/f for resolve of 7/f - removing 4/f getting 8/f $ hg mani 0/f diff -r 26b84128c54d -r cb15835456cb tests/test-subrepo.t --- a/tests/test-subrepo.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-subrepo.t Tue Apr 22 02:10:25 2014 +0200 @@ -281,8 +281,8 @@ resolving manifests branchmerge: True, force: False, partial: False ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198 + preserving t for resolve of t t: versions differ -> m - preserving t for resolve of t updating: t 1/1 files (100.00%) picked tool 'internal:merge' for t (binary False symlink False) merging t diff -r 26b84128c54d -r cb15835456cb tests/test-up-local-change.t --- a/tests/test-up-local-change.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-up-local-change.t Tue Apr 22 02:10:25 2014 +0200 @@ -46,11 +46,11 @@ resolving manifests branchmerge: False, force: False, partial: False ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb + preserving a for resolve of a b: remote created -> g - a: versions differ -> m - preserving a for resolve of a getting b updating: b 1/2 files (50.00%) + a: versions differ -> m updating: a 2/2 files (100.00%) picked tool 'true' for a (binary False symlink False) merging a @@ -67,11 +67,11 @@ resolving manifests branchmerge: False, force: False, partial: False ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a + preserving a for resolve of a b: other deleted -> r - a: versions differ -> m - preserving a for resolve of a removing b updating: b 1/2 files (50.00%) + a: versions differ -> m updating: a 2/2 files (100.00%) picked tool 'true' for a (binary False symlink False) merging a @@ -100,11 +100,11 @@ resolving manifests branchmerge: False, force: False, partial: False ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb + preserving a for resolve of a b: remote created -> g - a: versions differ -> m - preserving a for resolve of a getting b updating: b 1/2 files (50.00%) + a: versions differ -> m updating: a 2/2 files (100.00%) picked tool 'true' for a (binary False symlink False) merging a @@ -181,14 +181,14 @@ resolving manifests branchmerge: True, force: True, partial: False ancestor: c19d34741b0a, local: 1e71731e6fbb+, remote: 83c51d0caff4 + preserving a for resolve of a + preserving b for resolve of b a: versions differ -> m - preserving a for resolve of a - b: versions differ -> m - preserving b for resolve of b updating: a 1/2 files (50.00%) picked tool 'true' for a (binary False symlink False) merging a my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a + b: versions differ -> m updating: b 2/2 files (100.00%) picked tool 'true' for b (binary False symlink False) merging b diff -r 26b84128c54d -r cb15835456cb tests/test-update-reverse.t --- a/tests/test-update-reverse.t Thu May 15 02:14:59 2014 +0200 +++ b/tests/test-update-reverse.t Tue Apr 22 02:10:25 2014 +0200 @@ -69,11 +69,11 @@ branchmerge: False, force: True, partial: False ancestor: 91ebc10ed028+, local: 91ebc10ed028+, remote: 71a760306caf side1: other deleted -> r + removing side1 side2: other deleted -> r - main: remote created -> g - removing side1 removing side2 updating: side2 2/3 files (66.67%) + main: remote created -> g getting main updating: main 3/3 files (100.00%) 1 files updated, 0 files merged, 2 files removed, 0 files unresolved