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

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Feb 15 05:34:59 EST 2016



On 02/15/2016 05:22 AM, Martin von Zweigbergk wrote:
> 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?

Maybe, first potential usage would be through the revset. On a more 
general approach we have been bitten by coupling a bit too much this 
past month so I decided to be safe.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list