# HG changeset patch # User Dirkjan Ochtman # Date 1242309797 -7200 # Node ID 50b6af595e0c70e1ad97125413f5ffaac6abc306 # Parent 4aad982111b646696fae5be57583be788530c0f8 merge: add -S/--show option to review revisions without merging diff -r 4aad982111b6 -r 50b6af595e0c mercurial/commands.py --- a/mercurial/commands.py Thu May 14 15:48:47 2009 +0200 +++ b/mercurial/commands.py Thu May 14 16:03:17 2009 +0200 @@ -2025,7 +2025,7 @@ ui.write(decor[ctx.flags(f)]) ui.write("%s\n" % f) -def merge(ui, repo, node=None, force=None, rev=None): +def merge(ui, repo, node=None, **opts): """merge working directory with another revision The contents of the current working directory is updated with all @@ -2042,10 +2042,10 @@ explicit revision to merge with must be provided. """ - if rev and node: + if opts.get('rev') and node: raise util.Abort(_("please specify just one revision")) if not node: - node = rev + node = opts.get('rev') if not node: branch = repo.changectx(None).branch() @@ -2070,7 +2070,18 @@ raise util.Abort(_('working dir not at a head rev - ' 'use "hg update" or merge with an explicit rev')) node = parent == bheads[0] and bheads[-1] or bheads[0] - return hg.merge(repo, node, force=force) + + if opts.get('show'): + p1 = repo['.'] + p2 = repo[node] + common = p1.ancestor(p2) + roots, heads = [common.node()], [p2.node()] + displayer = cmdutil.show_changeset(ui, repo, opts) + for node in repo.changelog.nodesbetween(roots=roots, heads=heads)[0]: + displayer.show(repo[node]) + return 0 + + return hg.merge(repo, node, force=opts.get('force')) def outgoing(ui, repo, dest=None, **opts): """show changesets not found in destination @@ -3324,7 +3335,8 @@ (merge, [('f', 'force', None, _('force a merge with outstanding changes')), ('r', 'rev', '', _('revision to merge')), - ], + ('S', 'show', None, + _('review revisions to merge (no merge is performed)'))], _('[-f] [[-r] REV]')), "outgoing|out": (outgoing, diff -r 4aad982111b6 -r 50b6af595e0c tests/test-double-merge --- a/tests/test-double-merge Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-double-merge Thu May 14 16:03:17 2009 +0200 @@ -20,6 +20,7 @@ hg ci -m 'change foo' -d "1000000 0" # we get conflicts that shouldn't be there +hg merge -S hg merge --debug echo "-- foo --" diff -r 4aad982111b6 -r 50b6af595e0c tests/test-double-merge.out --- a/tests/test-double-merge.out Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-double-merge.out Thu May 14 16:03:17 2009 +0200 @@ -1,4 +1,14 @@ created new head +changeset: 0:310fd17130da +user: test +date: Mon Jan 12 13:46:40 1970 +0000 +summary: add foo + +changeset: 1:7731dad1c2b9 +user: test +date: Mon Jan 12 13:46:40 1970 +0000 +summary: cp foo bar; change both + resolving manifests overwrite None partial False ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9 diff -r 4aad982111b6 -r 50b6af595e0c tests/test-merge-default --- a/tests/test-merge-default Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-merge-default Thu May 14 16:03:17 2009 +0200 @@ -31,6 +31,7 @@ hg commit -mm1 echo % should succeed - 2 heads +hg merge -S hg merge hg commit -mm2 diff -r 4aad982111b6 -r 50b6af595e0c tests/test-merge-default.out --- a/tests/test-merge-default.out Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-merge-default.out Thu May 14 16:03:17 2009 +0200 @@ -13,6 +13,17 @@ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) % should succeed - 2 heads +changeset: 1:ba677d0156c1 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: b + +changeset: 3:903c264cdf57 +parent: 1:ba677d0156c1 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: d + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) % should fail because at tip diff -r 4aad982111b6 -r 50b6af595e0c tests/test-merge1 --- a/tests/test-merge1 Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-merge1 Thu May 14 16:03:17 2009 +0200 @@ -30,6 +30,7 @@ hg commit -m "commit #2" -d "1000000 0" echo This is file b1 > b echo %% no merges expected +hg merge -S 1 hg merge 1 hg diff --nodates hg status diff -r 4aad982111b6 -r 50b6af595e0c tests/test-merge1.out --- a/tests/test-merge1.out Thu May 14 15:48:47 2009 +0200 +++ b/tests/test-merge1.out Thu May 14 16:03:17 2009 +0200 @@ -1,6 +1,16 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved created new head %% no merges expected +changeset: 0:98e00378acd0 +user: test +date: Mon Jan 12 13:46:40 1970 +0000 +summary: commit #0 + +changeset: 1:4ee19afe4659 +user: test +date: Mon Jan 12 13:46:40 1970 +0000 +summary: commit #1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r d9e5953b9dec b