hgext/narrow/narrowwirepeer.py
author Manuel Jacob <me@manueljacob.de>
Wed, 11 Mar 2020 05:41:02 +0100
changeset 44510 aa0e1341457b
parent 43554 9f70512ae2cf
child 45682 d2e1dcd4490d
permissions -rw-r--r--
tests: check availability of pyflakes by trying to import pyflakes module Since e397c6d74652, we use the pyflakes module instead of the pyflakes executable. As was pointed out during the review, the hghave check can be rewritten to try to import the pyflakes module instead of spawning a new subprocess.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     1
# narrowwirepeer.py - passes narrow spec with unbundle command
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
#
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     3
# Copyright 2017 Google, Inc.
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     4
#
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     7
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     8
from __future__ import absolute_import
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
     9
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    10
from mercurial import (
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    11
    bundle2,
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    12
    error,
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    13
    extensions,
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    14
    hg,
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    15
    narrowspec,
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    16
    pycompat,
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    17
    wireprototypes,
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    18
    wireprotov1peer,
39540
c90514043eaa narrow: add narrow and ellipses as server capabilities
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 36384
diff changeset
    19
    wireprotov1server,
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    20
)
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    21
42432
c767e655ffda narrow: use narrow_widen wireproto command to widen in case of ellipses
Pulkit Goyal <7895pulkit@gmail.com>
parents: 40344
diff changeset
    22
from . import narrowbundle2
c767e655ffda narrow: use narrow_widen wireproto command to widen in case of ellipses
Pulkit Goyal <7895pulkit@gmail.com>
parents: 40344
diff changeset
    23
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    24
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    25
def uisetup():
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    26
    wireprotov1peer.wirepeer.narrow_widen = peernarrowwiden
39540
c90514043eaa narrow: add narrow and ellipses as server capabilities
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 36384
diff changeset
    27
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    28
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    29
def reposetup(repo):
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    30
    def wirereposetup(ui, peer):
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    31
        def wrapped(orig, cmd, *args, **kwargs):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    32
            if cmd == b'unbundle':
36140
b60c577b6e03 narrowwirepeer: add TODO about how we add wireproto args to unbundle :(
Augie Fackler <augie@google.com>
parents: 36139
diff changeset
    33
                # TODO: don't blindly add include/exclude wireproto
b60c577b6e03 narrowwirepeer: add TODO about how we add wireproto args to unbundle :(
Augie Fackler <augie@google.com>
parents: 36139
diff changeset
    34
                # arguments to unbundle.
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    35
                include, exclude = repo.narrowpats
43551
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43249
diff changeset
    36
                kwargs["includepats"] = b','.join(include)
313e3a279828 cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents: 43249
diff changeset
    37
                kwargs["excludepats"] = b','.join(exclude)
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    38
            return orig(cmd, *args, **kwargs)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    39
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    40
        extensions.wrapfunction(peer, b'_calltwowaystream', wrapped)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    41
36117
a2a6e724d61a narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff changeset
    42
    hg.wirepeersetupfuncs.append(wirereposetup)
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    43
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    44
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    45
@wireprotov1server.wireprotocommand(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    46
    b'narrow_widen',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    47
    b'oldincludes oldexcludes'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    48
    b' newincludes newexcludes'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    49
    b' commonheads cgversion'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    50
    b' known ellipses',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    51
    permission=b'pull',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    52
)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    53
def narrow_widen(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    54
    repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    55
    proto,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    56
    oldincludes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    57
    oldexcludes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    58
    newincludes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    59
    newexcludes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    60
    commonheads,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    61
    cgversion,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    62
    known,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    63
    ellipses,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    64
):
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    65
    """wireprotocol command to send data when a narrow clone is widen. We will
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    66
    be sending a changegroup here.
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    67
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    68
    The current set of arguments which are required:
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    69
    oldincludes: the old includes of the narrow copy
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    70
    oldexcludes: the old excludes of the narrow copy
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    71
    newincludes: the new includes of the narrow copy
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    72
    newexcludes: the new excludes of the narrow copy
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    73
    commonheads: list of heads which are common between the server and client
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    74
    cgversion(maybe): the changegroup version to produce
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    75
    known: list of nodes which are known on the client (used in ellipses cases)
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    76
    ellipses: whether to send ellipses data or not
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    77
    """
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    78
40148
74558635dad5 narrow: don't compress the bundle2 when sending 'error:abort'
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 40076
diff changeset
    79
    preferuncompressed = False
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    80
    try:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    81
42948
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    82
        def splitpaths(data):
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    83
            # work around ''.split(',') => ['']
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    84
            return data.split(b',') if data else []
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
    85
42948
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    86
        oldincludes = splitpaths(oldincludes)
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    87
        newincludes = splitpaths(newincludes)
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    88
        oldexcludes = splitpaths(oldexcludes)
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
    89
        newexcludes = splitpaths(newexcludes)
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    90
        # validate the patterns
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    91
        narrowspec.validatepatterns(set(oldincludes))
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    92
        narrowspec.validatepatterns(set(newincludes))
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    93
        narrowspec.validatepatterns(set(oldexcludes))
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    94
        narrowspec.validatepatterns(set(newexcludes))
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    95
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    96
        common = wireprototypes.decodelist(commonheads)
42432
c767e655ffda narrow: use narrow_widen wireproto command to widen in case of ellipses
Pulkit Goyal <7895pulkit@gmail.com>
parents: 40344
diff changeset
    97
        known = wireprototypes.decodelist(known)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    98
        if ellipses == b'0':
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
    99
            ellipses = False
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   100
        else:
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   101
            ellipses = bool(ellipses)
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   102
        cgversion = cgversion
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   103
42434
a97b12f726e4 narrow: pass the bundle to bundle2.widen_bundle() instead of generating there
Pulkit Goyal <7895pulkit@gmail.com>
parents: 42432
diff changeset
   104
        bundler = bundle2.bundle20(repo.ui)
43249
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   105
        newmatch = narrowspec.match(
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   106
            repo.root, include=newincludes, exclude=newexcludes
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   107
        )
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   108
        oldmatch = narrowspec.match(
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   109
            repo.root, include=oldincludes, exclude=oldexcludes
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   110
        )
42432
c767e655ffda narrow: use narrow_widen wireproto command to widen in case of ellipses
Pulkit Goyal <7895pulkit@gmail.com>
parents: 40344
diff changeset
   111
        if not ellipses:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   112
            bundle2.widen_bundle(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   113
                bundler,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   114
                repo,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   115
                oldmatch,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   116
                newmatch,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   117
                common,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   118
                known,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   119
                cgversion,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   120
                ellipses,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   121
            )
42432
c767e655ffda narrow: use narrow_widen wireproto command to widen in case of ellipses
Pulkit Goyal <7895pulkit@gmail.com>
parents: 40344
diff changeset
   122
        else:
43242
561f9bc4b4c5 widening: duplicate generateellipsesbundle2() for widening
Martin von Zweigbergk <martinvonz@google.com>
parents: 43077
diff changeset
   123
            narrowbundle2.generate_ellipses_bundle2_for_widening(
43249
63d440bef72a widening: pass in matchers instead of patterns
Martin von Zweigbergk <martinvonz@google.com>
parents: 43247
diff changeset
   124
                bundler, repo, oldmatch, newmatch, cgversion, common, known,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   125
            )
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   126
    except error.Abort as exc:
40072
e8132a8897da narrow: start returning bundle2 from widen_bundle()
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 40071
diff changeset
   127
        bundler = bundle2.bundle20(repo.ui)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   128
        manargs = [(b'message', pycompat.bytestr(exc))]
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   129
        advargs = []
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   130
        if exc.hint is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   131
            advargs.append((b'hint', exc.hint))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   132
        bundler.addpart(bundle2.bundlepart(b'error:abort', manargs, advargs))
40148
74558635dad5 narrow: don't compress the bundle2 when sending 'error:abort'
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 40076
diff changeset
   133
        preferuncompressed = True
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   134
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   135
    chunks = bundler.getchunks()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   136
    return wireprototypes.streamres(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   137
        gen=chunks, prefer_uncompressed=preferuncompressed
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   138
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42948
diff changeset
   139
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   140
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   141
def peernarrowwiden(remote, **kwargs):
43554
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43551
diff changeset
   142
    for ch in ('commonheads', 'known'):
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   143
        kwargs[ch] = wireprototypes.encodelist(kwargs[ch])
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   144
43554
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43551
diff changeset
   145
    for ch in ('oldincludes', 'newincludes', 'oldexcludes', 'newexcludes'):
42948
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
   146
        kwargs[ch] = b','.join(kwargs[ch])
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42434
diff changeset
   147
43554
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43551
diff changeset
   148
    kwargs['ellipses'] = b'%i' % bool(kwargs['ellipses'])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   149
    f = remote._callcompressable(b'narrow_widen', **kwargs)
40071
8feae5b989bc narrow: the first version of narrow_widen wireprotocol command
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39939
diff changeset
   150
    return bundle2.getunbundler(remote.ui, f)