Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 44454:2f290136b7d6
merge: make hg.merge() take a context instead of a node
Many callers already have a repo, so we might as well pass
that. `merge.update()` will look up the context object later. This
patch is part of making it so we pass around the context object all
the way down instead.
I also removed the `repo` argument since it can be retrieved from the
context.
Differential Revision: https://phab.mercurial-scm.org/D7999
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 24 Jan 2020 15:28:37 -0800 |
parents | 1e508097f570 |
children | 5a5aee8ba980 |
comparison
equal
deleted
inserted
replaced
44453:f82d2d4e71db | 44454:2f290136b7d6 |
---|---|
874 ui.status( | 874 ui.status( |
875 _(b'merging with changeset %s\n') % nice(repo.changelog.tip()) | 875 _(b'merging with changeset %s\n') % nice(repo.changelog.tip()) |
876 ) | 876 ) |
877 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} | 877 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} |
878 with ui.configoverride(overrides, b'backout'): | 878 with ui.configoverride(overrides, b'backout'): |
879 return hg.merge(repo, hex(repo.changelog.tip())) | 879 return hg.merge(repo[b'tip']) |
880 return 0 | 880 return 0 |
881 | 881 |
882 | 882 |
883 @command( | 883 @command( |
884 b'bisect', | 884 b'bisect', |
4876 raise error.Abort(_(b"please specify just one revision")) | 4876 raise error.Abort(_(b"please specify just one revision")) |
4877 if not node: | 4877 if not node: |
4878 node = opts.get(b'rev') | 4878 node = opts.get(b'rev') |
4879 | 4879 |
4880 if node: | 4880 if node: |
4881 node = scmutil.revsingle(repo, node).node() | 4881 ctx = scmutil.revsingle(repo, node) |
4882 else: | 4882 else: |
4883 if ui.configbool(b'commands', b'merge.require-rev'): | 4883 if ui.configbool(b'commands', b'merge.require-rev'): |
4884 raise error.Abort( | 4884 raise error.Abort( |
4885 _( | 4885 _( |
4886 b'configuration requires specifying revision to merge ' | 4886 b'configuration requires specifying revision to merge ' |
4887 b'with' | 4887 b'with' |
4888 ) | 4888 ) |
4889 ) | 4889 ) |
4890 node = repo[destutil.destmerge(repo)].node() | 4890 ctx = repo[destutil.destmerge(repo)] |
4891 | 4891 |
4892 if node is None: | 4892 if ctx.node() is None: |
4893 raise error.Abort(_(b'merging with the working copy has no effect')) | 4893 raise error.Abort(_(b'merging with the working copy has no effect')) |
4894 | 4894 |
4895 if opts.get(b'preview'): | 4895 if opts.get(b'preview'): |
4896 # find nodes that are ancestors of p2 but not of p1 | 4896 # find nodes that are ancestors of p2 but not of p1 |
4897 p1 = repo[b'.'].node() | 4897 p1 = repo[b'.'].node() |
4898 p2 = node | 4898 p2 = ctx.node() |
4899 nodes = repo.changelog.findmissing(common=[p1], heads=[p2]) | 4899 nodes = repo.changelog.findmissing(common=[p1], heads=[p2]) |
4900 | 4900 |
4901 displayer = logcmdutil.changesetdisplayer(ui, repo, opts) | 4901 displayer = logcmdutil.changesetdisplayer(ui, repo, opts) |
4902 for node in nodes: | 4902 for node in nodes: |
4903 displayer.show(repo[node]) | 4903 displayer.show(repo[node]) |
4907 # ui.forcemerge is an internal variable, do not document | 4907 # ui.forcemerge is an internal variable, do not document |
4908 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} | 4908 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} |
4909 with ui.configoverride(overrides, b'merge'): | 4909 with ui.configoverride(overrides, b'merge'): |
4910 force = opts.get(b'force') | 4910 force = opts.get(b'force') |
4911 labels = [b'working copy', b'merge rev'] | 4911 labels = [b'working copy', b'merge rev'] |
4912 return hg.merge(repo, node, force=force, labels=labels) | 4912 return hg.merge(ctx, force=force, labels=labels) |
4913 | 4913 |
4914 | 4914 |
4915 statemod.addunfinished( | 4915 statemod.addunfinished( |
4916 b'merge', | 4916 b'merge', |
4917 fname=None, | 4917 fname=None, |