mercurial/commands.py
changeset 50838 b4425b5bd80e
parent 50837 2c78ebaf4c2a
child 50839 55a9ea786291
equal deleted inserted replaced
50837:2c78ebaf4c2a 50838:b4425b5bd80e
  4912     all changes.
  4912     all changes.
  4913 
  4913 
  4914     Returns 0 on success, 1 if there are unresolved files.
  4914     Returns 0 on success, 1 if there are unresolved files.
  4915     """
  4915     """
  4916 
  4916 
  4917     opts = pycompat.byteskwargs(opts)
  4917     abort = opts.get('abort')
  4918     abort = opts.get(b'abort')
       
  4919     if abort and repo.dirstate.p2() == repo.nullid:
  4918     if abort and repo.dirstate.p2() == repo.nullid:
  4920         cmdutil.wrongtooltocontinue(repo, _(b'merge'))
  4919         cmdutil.wrongtooltocontinue(repo, _(b'merge'))
  4921     cmdutil.check_incompatible_arguments(opts, b'abort', [b'rev', b'preview'])
  4920     cmdutil.check_incompatible_arguments(opts, 'abort', ['rev', 'preview'])
  4922     if abort:
  4921     if abort:
  4923         state = cmdutil.getunfinishedstate(repo)
  4922         state = cmdutil.getunfinishedstate(repo)
  4924         if state and state._opname != b'merge':
  4923         if state and state._opname != b'merge':
  4925             raise error.StateError(
  4924             raise error.StateError(
  4926                 _(b'cannot abort merge with %s in progress') % (state._opname),
  4925                 _(b'cannot abort merge with %s in progress') % (state._opname),
  4928             )
  4927             )
  4929         if node:
  4928         if node:
  4930             raise error.InputError(_(b"cannot specify a node with --abort"))
  4929             raise error.InputError(_(b"cannot specify a node with --abort"))
  4931         return hg.abortmerge(repo.ui, repo)
  4930         return hg.abortmerge(repo.ui, repo)
  4932 
  4931 
  4933     if opts.get(b'rev') and node:
  4932     if opts.get('rev') and node:
  4934         raise error.InputError(_(b"please specify just one revision"))
  4933         raise error.InputError(_(b"please specify just one revision"))
  4935     if not node:
  4934     if not node:
  4936         node = opts.get(b'rev')
  4935         node = opts.get('rev')
  4937 
  4936 
  4938     if node:
  4937     if node:
  4939         ctx = logcmdutil.revsingle(repo, node)
  4938         ctx = logcmdutil.revsingle(repo, node)
  4940     else:
  4939     else:
  4941         if ui.configbool(b'commands', b'merge.require-rev'):
  4940         if ui.configbool(b'commands', b'merge.require-rev'):
  4950     if ctx.node() is None:
  4949     if ctx.node() is None:
  4951         raise error.InputError(
  4950         raise error.InputError(
  4952             _(b'merging with the working copy has no effect')
  4951             _(b'merging with the working copy has no effect')
  4953         )
  4952         )
  4954 
  4953 
  4955     if opts.get(b'preview'):
  4954     if opts.get('preview'):
  4956         # find nodes that are ancestors of p2 but not of p1
  4955         # find nodes that are ancestors of p2 but not of p1
  4957         p1 = repo[b'.'].node()
  4956         p1 = repo[b'.'].node()
  4958         p2 = ctx.node()
  4957         p2 = ctx.node()
  4959         nodes = repo.changelog.findmissing(common=[p1], heads=[p2])
  4958         nodes = repo.changelog.findmissing(common=[p1], heads=[p2])
  4960 
  4959 
  4961         displayer = logcmdutil.changesetdisplayer(ui, repo, opts)
  4960         displayer = logcmdutil.changesetdisplayer(
       
  4961             ui, repo, pycompat.byteskwargs(opts)
       
  4962         )
  4962         for node in nodes:
  4963         for node in nodes:
  4963             displayer.show(repo[node])
  4964             displayer.show(repo[node])
  4964         displayer.close()
  4965         displayer.close()
  4965         return 0
  4966         return 0
  4966 
  4967 
  4967     # ui.forcemerge is an internal variable, do not document
  4968     # ui.forcemerge is an internal variable, do not document
  4968     overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')}
  4969     overrides = {(b'ui', b'forcemerge'): opts.get('tool', b'')}
  4969     with ui.configoverride(overrides, b'merge'):
  4970     with ui.configoverride(overrides, b'merge'):
  4970         force = opts.get(b'force')
  4971         force = opts.get('force')
  4971         labels = [b'working copy', b'merge rev', b'common ancestor']
  4972         labels = [b'working copy', b'merge rev', b'common ancestor']
  4972         return hg.merge(ctx, force=force, labels=labels)
  4973         return hg.merge(ctx, force=force, labels=labels)
  4973 
  4974 
  4974 
  4975 
  4975 statemod.addunfinished(
  4976 statemod.addunfinished(