[PATCH 3 of 4 V2] destutil: allow to disable the "on head check" in destmerge

Martin von Zweigbergk martinvonz at google.com
Mon Feb 15 00:22:43 EST 2016


On Sun, Feb 14, 2016 at 7:38 AM, Pierre-Yves David
<pierre-yves.david at ens-lyon.org> wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1454972295 0
> #      Mon Feb 08 22:58:15 2016 +0000
> # Node ID e025ec586bdf3111bb1ca85672c7cab3b407cf46
> # Parent  6b38d0c01aeca0d3c2a2bbf3a0eadd04e37803e8
> # EXP-Topic destination
> # Available At http://hg.netv6.net/marmoute-wip/mercurial/
> #              hg pull http://hg.netv6.net/marmoute-wip/mercurial/ -r e025ec586bdf
> destutil: allow to disable the "on head check" in destmerge
>
> 'hg merge' refuses to pick a default destination if the working copy is not on
> a head. This is a very sensible default for 'hg merge' but 'hg rebase' should
> work in this situation. So we introduce a way to disable this check. It will
> soon be used by rebase.
>
> diff --git a/mercurial/destutil.py b/mercurial/destutil.py
> --- a/mercurial/destutil.py
> +++ b/mercurial/destutil.py
> @@ -214,11 +214,11 @@ def _destmergebook(repo, action='merge',
>          msg, hint = msgdestmerge['nootherbookmarks'][action]
>          raise error.Abort(msg, hint=hint)
>      assert node is not None
>      return node
>
> -def _destmergebranch(repo, action='merge', sourceset=None):
> +def _destmergebranch(repo, action='merge', sourceset=None, onheadcheck=True):
>      """find merge destination based on branch heads"""
>      node = None
>
>      if sourceset is None:
>          sourceset = [repo[repo.dirstate.p1()].rev()]
> @@ -233,11 +233,11 @@ def _destmergebranch(repo, action='merge
>                  msg, hint = msgdestmerge['multiplebranchessourceset'][action]
>                  raise error.Abort(msg, hint=hint)
>              branch = ctx.branch()
>
>      bheads = repo.branchheads(branch)
> -    if not repo.revs('%ld and %ln', sourceset, bheads):
> +    if onheadcheck and not repo.revs('%ld and %ln', sourceset, bheads):
>          # Case A: working copy if not on a head. (merge only)

Just a question (i.e., not implying you should change anything): Do
you foresee onheadcheck=True being decoupled from action='merge' in
the future?

>          #
>          # This is probably a user mistake We bailout pointing at 'hg update'
>          if len(repo.heads()) <= 1:
>              msg, hint = msgdestmerge['nootherheadsbehind'][action]
> @@ -273,21 +273,22 @@ def _destmergebranch(repo, action='merge
>      else:
>          node = nbhs[0]
>      assert node is not None
>      return node
>
> -def destmerge(repo, action='merge', sourceset=None):
> +def destmerge(repo, action='merge', sourceset=None, onheadcheck=True):
>      """return the default destination for a merge
>
>      (or raise exception about why it can't pick one)
>
>      :action: the action being performed, controls emitted error message
>      """
>      if repo._activebookmark:
>          node = _destmergebook(repo, action=action, sourceset=sourceset)
>      else:
> -        node = _destmergebranch(repo, action=action, sourceset=sourceset)
> +        node = _destmergebranch(repo, action=action, sourceset=sourceset,
> +                                onheadcheck=onheadcheck)
>      return repo[node].rev()
>
>  histeditdefaultrevset = 'reverse(only(.) and not public() and not ::merge())'
>
>  def desthistedit(ui, repo):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list