[PATCH FIX-default] pushrace: avoid crash on bare push when using concurrent push mode

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Jun 29 10:03:15 EDT 2017



On 06/29/2017 04:01 PM, Yuya Nishihara wrote:
> On Wed, 28 Jun 2017 18:21:41 +0200, Pierre-Yves David wrote:
>> # HG changeset patch
>> # User Pierre-Yves David <pierre-yves.david at octobus.net>
>> # Date 1498664485 -7200
>> #      Wed Jun 28 17:41:25 2017 +0200
>> # Node ID c6954352fa654efd0627e2024100f7bc59f5028f
>> # Parent  6fdc1518983ed9ed94f83f803bb787adaf92c11b
>> # EXP-Topic pushrace
>> # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
>> #              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r c6954352fa65
>> pushrace: avoid crash on bare push when using concurrent push mode
>>
>> If the remote is empty, we do now bother computing head changes and the
>> 'pushbranchmap' attribute stays at None.
>>
>> We now handle and tests this case.
>>
>> diff --git a/mercurial/exchange.py b/mercurial/exchange.py
>> --- a/mercurial/exchange.py
>> +++ b/mercurial/exchange.py
>> @@ -730,9 +730,10 @@ def _pushb2ctxcheckheads(pushop, bundler
>>       # * if we don't push anything, there are nothing to check.
>>       if not pushop.force and pushop.outgoing.missingheads:
>>           allowunrelated = 'related' in bundler.capabilities.get('checkheads', ())
>> -        if not allowunrelated:
>> +        emptyremote = pushop.pushbranchmap is None
>> +        if not allowunrelated or emptyremote:
>>               bundler.newpart('check:heads', data=iter(pushop.remoteheads))
>> -        else:
>> +        elif pushop.pushbranchmap is not None:
> 
> Perhaps this can be just "else:" ?

A right, that should be 'else:' can you fix it in flight?

Cheers,

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list