author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
Sat, 11 Mar 2017 12:15:08 -0800 | |
changeset 2088 | 9f7ce656bfdf |
parent 2084 | b1f029dcf573 |
child 2117 | e9d5f54765a2 |
permissions | -rw-r--r-- |
2053
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
1 |
# Code dedicated to the exchange of obsolescence markers |
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
2 |
# |
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
3 |
# Copyright 2017 Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
4 |
# |
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
f3765c4a352a
exchange: rename the module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
1414
4198e2fad6ba
evolve: add an help topic about evolution
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1413
diff
changeset
|
7 |
|
2044
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
8 |
from __future__ import absolute_import |
2032
dd7e092a854a
flake8: update the code sources to fixes a horde of pyflake warnings
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2024
diff
changeset
|
9 |
|
1678 | 10 |
try: |
11 |
import StringIO as io |
|
12 |
StringIO = io.StringIO |
|
13 |
except ImportError: |
|
14 |
import io |
|
15 |
StringIO = io.StringIO |
|
2032
dd7e092a854a
flake8: update the code sources to fixes a horde of pyflake warnings
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2024
diff
changeset
|
16 |
|
2044
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
17 |
import errno |
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
18 |
import socket |
617
469befc27b26
detect incompatibility with future mercurial 2.5
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
616
diff
changeset
|
19 |
|
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
20 |
from mercurial import ( |
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
21 |
error, |
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
22 |
exchange, |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
23 |
extensions, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
24 |
httppeer, |
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
25 |
localrepo, |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
26 |
lock as lockmod, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
27 |
node, |
2044
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
28 |
obsolete, |
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
29 |
util, |
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
30 |
wireproto, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
31 |
) |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
32 |
from mercurial.hgweb import hgweb_mod |
81
5cec25ce019c
Basic kill command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
33 |
from mercurial.i18n import _ |
491
6989d8fe4ed2
merge evolve and obsolete
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
490
diff
changeset
|
34 |
|
2041
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
35 |
from . import ( |
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
36 |
exthelper, |
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
37 |
serveronly, |
2047
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2044
diff
changeset
|
38 |
utility, |
2054
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2053
diff
changeset
|
39 |
obsdiscovery, |
2041
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
40 |
) |
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
41 |
|
2044
d31ad31e456b
exchange: move code related to exchange into a 'evolve.exchange' submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2043
diff
changeset
|
42 |
eh = exthelper.exthelper() |
2047
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2044
diff
changeset
|
43 |
obsexcmsg = utility.obsexcmsg |
2054
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2053
diff
changeset
|
44 |
obsexcprg = utility.obsexcprg |
816
03587920dfd9
evolve: add relevant marker exchange machinery
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
811
diff
changeset
|
45 |
|
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
46 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
47 |
_bestformat = max(obsolete.formats.keys()) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
48 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
49 |
##################################################### |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
50 |
### Support for subset specification in getbundle ### |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
51 |
##################################################### |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
52 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
53 |
# Adds support for the 'evo_obscommon' argument to getbundle This argument use |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
54 |
# the data recovered from the discovery to request only a subpart of the |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
55 |
# obsolete subtree. |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
56 |
|
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
57 |
@eh.uisetup |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
58 |
def addgetbundleargs(self): |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
59 |
wireproto.gboptsmap['evo_obscommon'] = 'nodes' |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
60 |
wireproto.gboptsmap['evo_missing_nodes'] = 'nodes' |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
61 |
|
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
62 |
@eh.wrapfunction(exchange, '_pullbundle2extraprepare') |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
63 |
def _addobscommontob2pull(orig, pullop, kwargs): |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
64 |
ret = orig(pullop, kwargs) |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
65 |
ui = pullop.repo.ui |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
66 |
if ('obsmarkers' in kwargs and |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
67 |
pullop.remote.capable('_evoext_getbundle_obscommon')): |
2076
5c6d05c34ba4
obsdiscovery: organize the code by category
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2075
diff
changeset
|
68 |
boundaries = obsdiscovery.buildpullobsmarkersboundaries(pullop) |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
69 |
if 'common' in boundaries: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
70 |
common = boundaries['common'] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
71 |
if common != pullop.common: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
72 |
obsexcmsg(ui, 'request obsmarkers for some common nodes\n') |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
73 |
if common != [node.nullid]: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
74 |
kwargs['evo_obscommon'] = common |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
75 |
elif 'missing' in boundaries: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
76 |
missing = boundaries['missing'] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
77 |
if missing: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
78 |
obsexcmsg(ui, 'request obsmarkers for %d common nodes\n' |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
79 |
% len(missing)) |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
80 |
kwargs['evo_missing_nodes'] = missing |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
81 |
return ret |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
82 |
|
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
83 |
def _getbundleobsmarkerpart(orig, bundler, repo, source, **kwargs): |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
84 |
if not (set(['evo_obscommon', 'evo_missing_nodes']) & set(kwargs)): |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
85 |
return orig(bundler, repo, source, **kwargs) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
86 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
87 |
if kwargs.get('obsmarkers', False): |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
88 |
heads = kwargs.get('heads') |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
89 |
if 'evo_obscommon' in kwargs: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
90 |
if heads is None: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
91 |
heads = repo.heads() |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
92 |
obscommon = kwargs.get('evo_obscommon', ()) |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
93 |
assert obscommon |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
94 |
obsset = repo.unfiltered().set('::%ln - ::%ln', heads, obscommon) |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
95 |
subset = [c.node() for c in obsset] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
96 |
else: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
97 |
common = kwargs.get('common') |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
98 |
subset = [c.node() for c in repo.unfiltered().set('only(%ln, %ln)', heads, common)] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
99 |
subset += kwargs['evo_missing_nodes'] |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
100 |
markers = repo.obsstore.relevantmarkers(subset) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
101 |
exchange.buildobsmarkerspart(bundler, markers) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
102 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
103 |
# manual wrap up in extsetup because of the wireproto.commands mapping |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
104 |
def _obscommon_capabilities(orig, repo, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
105 |
"""wrapper to advertise new capability""" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
106 |
caps = orig(repo, proto) |
2075
a7c0685ba6d9
evolution: drop the old __temporary__.advertiseobsolete option
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2063
diff
changeset
|
107 |
if obsolete.isenabled(repo, obsolete.exchangeopt): |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
108 |
caps = caps.split() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
109 |
caps.append('_evoext_getbundle_obscommon') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
110 |
caps.sort() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
111 |
caps = ' '.join(caps) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
112 |
return caps |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
113 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
114 |
@eh.extsetup |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
115 |
def extsetup_obscommon(ui): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
116 |
wireproto.gboptsmap['evo_obscommon'] = 'nodes' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
117 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
118 |
# wrap module content |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
119 |
origfunc = exchange.getbundle2partsmapping['obsmarkers'] |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
120 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
121 |
def newfunc(*args, **kwargs): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
122 |
return _getbundleobsmarkerpart(origfunc, *args, **kwargs) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
123 |
exchange.getbundle2partsmapping['obsmarkers'] = newfunc |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
124 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
125 |
extensions.wrapfunction(wireproto, 'capabilities', _obscommon_capabilities) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
126 |
# wrap command content |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
127 |
oldcap, args = wireproto.commands['capabilities'] |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
128 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
129 |
def newcap(repo, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
130 |
return _obscommon_capabilities(oldcap, repo, proto) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
131 |
wireproto.commands['capabilities'] = (newcap, args) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
132 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
133 |
def _pushobsmarkers(repo, data): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
134 |
tr = lock = None |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
135 |
try: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
136 |
lock = repo.lock() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
137 |
tr = repo.transaction('pushkey: obsolete markers') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
138 |
new = repo.obsstore.mergemarkers(tr, data) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
139 |
if new is not None: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
140 |
obsexcmsg(repo.ui, "%i obsolescence markers added\n" % new, True) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
141 |
tr.close() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
142 |
finally: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
143 |
lockmod.release(tr, lock) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
144 |
repo.hook('evolve_pushobsmarkers') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
145 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
146 |
def srv_pushobsmarkers(repo, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
147 |
"""wireprotocol command""" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
148 |
fp = StringIO() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
149 |
proto.redirect() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
150 |
proto.getfile(fp) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
151 |
data = fp.getvalue() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
152 |
fp.close() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
153 |
_pushobsmarkers(repo, data) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
154 |
return wireproto.pushres(0) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
155 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
156 |
def _getobsmarkersstream(repo, heads=None, common=None): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
157 |
"""Get a binary stream for all markers relevant to `::<heads> - ::<common>` |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
158 |
""" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
159 |
revset = '' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
160 |
args = [] |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
161 |
repo = repo.unfiltered() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
162 |
if heads is None: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
163 |
revset = 'all()' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
164 |
elif heads: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
165 |
revset += "(::%ln)" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
166 |
args.append(heads) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
167 |
else: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
168 |
assert False, 'pulling no heads?' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
169 |
if common: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
170 |
revset += ' - (::%ln)' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
171 |
args.append(common) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
172 |
nodes = [c.node() for c in repo.set(revset, *args)] |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
173 |
markers = repo.obsstore.relevantmarkers(nodes) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
174 |
obsdata = StringIO() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
175 |
for chunk in obsolete.encodemarkers(markers, True): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
176 |
obsdata.write(chunk) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
177 |
obsdata.seek(0) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
178 |
return obsdata |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
179 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
180 |
# The wireproto.streamres API changed, handling chunking and compression |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
181 |
# directly. Handle either case. |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
182 |
if util.safehasattr(wireproto.abstractserverproto, 'groupchunks'): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
183 |
# We need to handle chunking and compression directly |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
184 |
def streamres(d, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
185 |
return wireproto.streamres(proto.groupchunks(d)) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
186 |
else: |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
187 |
# Leave chunking and compression to streamres |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
188 |
def streamres(d, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
189 |
return wireproto.streamres(reader=d, v1compressible=True) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
190 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
191 |
def srv_pullobsmarkers(repo, proto, others): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
192 |
"""serves a binary stream of markers. |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
193 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
194 |
Serves relevant to changeset between heads and common. The stream is prefix |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
195 |
by a -string- representation of an integer. This integer is the size of the |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
196 |
stream.""" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
197 |
opts = wireproto.options('', ['heads', 'common'], others) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
198 |
for k, v in opts.iteritems(): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
199 |
if k in ('heads', 'common'): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
200 |
opts[k] = wireproto.decodelist(v) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
201 |
obsdata = _getobsmarkersstream(repo, **opts) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
202 |
finaldata = StringIO() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
203 |
obsdata = obsdata.getvalue() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
204 |
finaldata.write('%20i' % len(obsdata)) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
205 |
finaldata.write(obsdata) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
206 |
finaldata.seek(0) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
207 |
return streamres(finaldata, proto) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
208 |
|
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
209 |
############################################### |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
210 |
### Support for old legacy exchange methods ### |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
211 |
############################################### |
817
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
212 |
|
854
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
213 |
class pushobsmarkerStringIO(StringIO): |
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
214 |
"""hacky string io for progress""" |
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
215 |
|
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
216 |
@util.propertycache |
879
85b3d54516a7
exchange: expose length of pushed markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
877
diff
changeset
|
217 |
def length(self): |
854
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
218 |
return len(self.getvalue()) |
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
219 |
|
1080
41d2555141ea
evolve: allow read() from the magic StringIO
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1079
diff
changeset
|
220 |
def read(self, size=None): |
1624
081605c2e9b6
evolve: mark progress units for translation
Anton Shestakov <av6@dwimlabs.net>
parents:
1623
diff
changeset
|
221 |
obsexcprg(self.ui, self.tell(), unit=_("bytes"), total=self.length) |
854
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
222 |
return StringIO.read(self, size) |
86b826399dfd
exchange: add progress bar when pushing using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
853
diff
changeset
|
223 |
|
961
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
224 |
def __iter__(self): |
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
225 |
d = self.read(4096) |
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
226 |
while d: |
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
227 |
yield d |
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
228 |
d = self.read(4096) |
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
229 |
|
2057
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
230 |
# compat-code: _pushobsolete |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
231 |
# |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
232 |
# the _pushobsolete function is a core function used to exchange |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
233 |
# obsmarker with repository that does not support bundle2 |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
234 |
|
817
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
235 |
@eh.wrapfunction(exchange, '_pushobsolete') |
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
236 |
def _pushobsolete(orig, pushop): |
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
237 |
"""utility function to push obsolete markers to a remote""" |
2056
b96ca1b51e04
push: exit obsexchange early if disabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2055
diff
changeset
|
238 |
if not obsolete.isenabled(pushop.repo, obsolete.exchangeopt): |
b96ca1b51e04
push: exit obsexchange early if disabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2055
diff
changeset
|
239 |
return |
2055
ce3d68029ed7
compat: drop special code handling change in push/pull op API
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2054
diff
changeset
|
240 |
if 'obsmarkers' in pushop.stepsdone: |
ce3d68029ed7
compat: drop special code handling change in push/pull op API
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2054
diff
changeset
|
241 |
return |
ce3d68029ed7
compat: drop special code handling change in push/pull op API
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2054
diff
changeset
|
242 |
pushop.stepsdone.add('obsmarkers') |
1832
41b531dab3ad
compat: drop support for ancestral pushop object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1831
diff
changeset
|
243 |
if pushop.cgresult == 0: |
1077
cdfc19f25478
obsexc: push nothing if push fail
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1076
diff
changeset
|
244 |
return |
817
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
245 |
pushop.ui.debug('try to push obsolete markers to remote\n') |
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
246 |
repo = pushop.repo |
c2bf0eb727f1
exchange: only push the set of marker relevant to want we push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
816
diff
changeset
|
247 |
remote = pushop.remote |
2056
b96ca1b51e04
push: exit obsexchange early if disabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2055
diff
changeset
|
248 |
if (repo.obsstore and 'obsolete' in remote.listkeys('namespaces')): |
1078
5717d023da63
obsexc: use the common discovery
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1077
diff
changeset
|
249 |
markers = pushop.outobsmarkers |
864
401da1b38cca
discovery: implement a discovery process and use it for push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
863
diff
changeset
|
250 |
if not markers: |
1033
908273755215
evolve: move OBSEXC message in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1032
diff
changeset
|
251 |
obsexcmsg(repo.ui, "no marker to push\n") |
864
401da1b38cca
discovery: implement a discovery process and use it for push
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
863
diff
changeset
|
252 |
elif remote.capable('_evoext_pushobsmarkers_0'): |
2057
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
253 |
msg = ('the remote repository use years old versions of Mercurial' |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
254 |
' and evolve\npushing obsmarker using legacy method\n') |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
255 |
repo.ui.warn(msg) |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
256 |
repo.ui.warn('(please upgrade your server)\n') |
961
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
257 |
obsdata = pushobsmarkerStringIO() |
1091
236a8e81551e
compat: use in-core encodemarkers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1090
diff
changeset
|
258 |
for chunk in obsolete.encodemarkers(markers, True): |
236a8e81551e
compat: use in-core encodemarkers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1090
diff
changeset
|
259 |
obsdata.write(chunk) |
957
2cde59f3cb5d
evolve: add a push pass using bundle2
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
956
diff
changeset
|
260 |
obsdata.seek(0) |
961
8de88b323fb6
evolve: install progress support for the bundle2 push path
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
960
diff
changeset
|
261 |
obsdata.ui = repo.ui |
1037
bddee73b361e
evolve: add "absolescence" in front of markers in the message
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1036
diff
changeset
|
262 |
obsexcmsg(repo.ui, "pushing %i obsolescence markers (%i bytes)\n" |
1036
70de12b7721a
evolve: re-introduce the "pushing 42 markers…" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
263 |
% (len(markers), len(obsdata.getvalue())), |
70de12b7721a
evolve: re-introduce the "pushing 42 markers…" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
264 |
True) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
265 |
remote.evoext_pushobsmarkers_0(obsdata) |
1034
5fd28e46e8f5
evolve: move OBSEXC progress in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1033
diff
changeset
|
266 |
obsexcprg(repo.ui, None) |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
267 |
|
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
268 |
else: |
2057
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
269 |
# XXX core could be able do the same things but without the debug |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
270 |
# and progress output. |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
271 |
msg = ('the remote repository usea years old version of Mercurial' |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
272 |
' and not evolve extension\n') |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
273 |
repo.ui.warn(msg) |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
274 |
msg = 'pushing obsmarker using and extremely slow legacy method\n' |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
275 |
repo.ui.warn(msg) |
4c195eb4d2c5
push: add extra warning about pushing to old server
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2056
diff
changeset
|
276 |
repo.ui.warn('(please upgrade your server and enable evolve.serveronly on it)\n') |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
277 |
rslts = [] |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
278 |
remotedata = obsolete._pushkeyescape(markers).items() |
1547
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
279 |
totalbytes = sum(len(d) for k, d in remotedata) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
280 |
sentbytes = 0 |
1547
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
281 |
obsexcmsg(repo.ui, "pushing %i obsolescence markers in %i " |
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
282 |
"pushkey payload (%i bytes)\n" |
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
283 |
% (len(markers), len(remotedata), totalbytes), |
1036
70de12b7721a
evolve: re-introduce the "pushing 42 markers…" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
284 |
True) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
285 |
for key, data in remotedata: |
1624
081605c2e9b6
evolve: mark progress units for translation
Anton Shestakov <av6@dwimlabs.net>
parents:
1623
diff
changeset
|
286 |
obsexcprg(repo.ui, sentbytes, item=key, unit=_("bytes"), |
1034
5fd28e46e8f5
evolve: move OBSEXC progress in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1033
diff
changeset
|
287 |
total=totalbytes) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
288 |
rslts.append(remote.pushkey('obsolete', key, '', data)) |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
289 |
sentbytes += len(data) |
1624
081605c2e9b6
evolve: mark progress units for translation
Anton Shestakov <av6@dwimlabs.net>
parents:
1623
diff
changeset
|
290 |
obsexcprg(repo.ui, sentbytes, item=key, unit=_("bytes"), |
1034
5fd28e46e8f5
evolve: move OBSEXC progress in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1033
diff
changeset
|
291 |
total=totalbytes) |
5fd28e46e8f5
evolve: move OBSEXC progress in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1033
diff
changeset
|
292 |
obsexcprg(repo.ui, None) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
293 |
if [r for r in rslts if not r]: |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
294 |
msg = _('failed to push some obsolete markers!\n') |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
295 |
repo.ui.warn(msg) |
1033
908273755215
evolve: move OBSEXC message in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1032
diff
changeset
|
296 |
obsexcmsg(repo.ui, "DONE\n") |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
297 |
|
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
298 |
# Supporting legacy way to push obsmarker so that old client can still push |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
299 |
# them somewhat efficiently |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
300 |
|
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
301 |
@eh.addattr(wireproto.wirepeer, 'evoext_pushobsmarkers_0') |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
302 |
def client_pushobsmarkers(self, obsfile): |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
303 |
"""wireprotocol peer method""" |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
304 |
self.requirecap('_evoext_pushobsmarkers_0', |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
305 |
_('push obsolete markers faster')) |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
306 |
ret, output = self._callpush('evoext_pushobsmarkers_0', obsfile) |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
307 |
for l in output.splitlines(True): |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
308 |
self.ui.status(_('remote: '), l) |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
309 |
return ret |
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
310 |
|
880
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
311 |
@eh.addattr(httppeer.httppeer, 'evoext_pushobsmarkers_0') |
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
312 |
def httpclient_pushobsmarkers(self, obsfile): |
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
313 |
"""httpprotocol peer method |
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
314 |
(Cannot simply use _callpush as http is doing some special handling)""" |
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
315 |
self.requirecap('_evoext_pushobsmarkers_0', |
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
316 |
_('push obsolete markers faster')) |
1209
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
317 |
try: |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
318 |
r = self._call('evoext_pushobsmarkers_0', data=obsfile) |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
319 |
vals = r.split('\n', 1) |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
320 |
if len(vals) < 2: |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
321 |
raise error.ResponseError(_("unexpected response:"), r) |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
322 |
|
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
323 |
for l in vals[1].splitlines(True): |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
324 |
if l.strip(): |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
325 |
self.ui.status(_('remote: '), l) |
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
326 |
return vals[0] |
1547
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
327 |
except socket.error as err: |
1209
fa35aeb64d32
evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
1206
diff
changeset
|
328 |
if err.args[0] in (errno.ECONNRESET, errno.EPIPE): |
1547
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
329 |
raise error.Abort(_('push failed: %s') % err.args[1]) |
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
330 |
raise error.Abort(err.args[1]) |
880
7fe06f32d1ad
exchange: fix push markers over wire protocol for http peer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
879
diff
changeset
|
331 |
|
1081
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
332 |
@eh.wrapfunction(localrepo.localrepository, '_restrictcapabilities') |
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
333 |
def local_pushobsmarker_capabilities(orig, repo, caps): |
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
334 |
caps = orig(repo, caps) |
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
335 |
caps.add('_evoext_pushobsmarkers_0') |
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
336 |
return caps |
dddb8a70437c
obsexc: add support for evoext_pushobsmarkers_0 on localpeer
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1080
diff
changeset
|
337 |
|
1314
d13d97363521
evolve: refactoring of code related to pushing obs markers
Laurent Charignon <lcharignon@fb.com>
parents:
1313
diff
changeset
|
338 |
@eh.addattr(localrepo.localpeer, 'evoext_pushobsmarkers_0') |
d13d97363521
evolve: refactoring of code related to pushing obs markers
Laurent Charignon <lcharignon@fb.com>
parents:
1313
diff
changeset
|
339 |
def local_pushobsmarkers(peer, obsfile): |
d13d97363521
evolve: refactoring of code related to pushing obs markers
Laurent Charignon <lcharignon@fb.com>
parents:
1313
diff
changeset
|
340 |
data = obsfile.read() |
1838
6942750831bb
serveronly: deduplicate code with the main evolve extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1836
diff
changeset
|
341 |
serveronly._pushobsmarkers(peer._repo, data) |
821
202376586cf6
exchange: introduce a wireprotocol command to push markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
820
diff
changeset
|
342 |
|
2059
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
343 |
# compat-code: _pullobsolete |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
344 |
# |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
345 |
# the _pullobsolete function is a core function used to exchange |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
346 |
# obsmarker with repository that does not support bundle2 |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
347 |
|
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
348 |
@eh.wrapfunction(exchange, '_pullobsolete') |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
349 |
def _pullobsolete(orig, pullop): |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
350 |
if not obsolete.isenabled(pullop.repo, obsolete.exchangeopt): |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
351 |
return None |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
352 |
if 'obsmarkers' in pullop.stepsdone: |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
353 |
return None |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
354 |
wirepull = pullop.remote.capable('_evoext_pullobsmarkers_0') |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
355 |
if 'obsolete' not in pullop.remote.listkeys('namespaces'): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
356 |
return None # remote opted out of obsolescence marker exchange |
2059
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
357 |
if not wirepull: |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
358 |
return orig(pullop) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
359 |
tr = None |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
360 |
ui = pullop.repo.ui |
2084
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
361 |
boundaries = obsdiscovery.buildpullobsmarkersboundaries(pullop, bundle2=False) |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
362 |
if 'missing' in boundaries and not boundaries['missing']: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
363 |
obsexcmsg(ui, "nothing to pull\n") |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
364 |
return None |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
365 |
elif not set(boundaries['heads']) - set(boundaries['common']): |
2059
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
366 |
obsexcmsg(ui, "nothing to pull\n") |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
367 |
return None |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
368 |
|
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
369 |
obsexcmsg(ui, "pull obsolescence markers\n", True) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
370 |
new = 0 |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
371 |
|
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
372 |
msg = ('the remote repository use years old versions of Mercurial and evolve\n' |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
373 |
'pulling obsmarker using legacy method\n') |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
374 |
ui.warn(msg) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
375 |
ui.warn('(please upgrade your server)\n') |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
376 |
|
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
377 |
obsdata = pullop.remote.evoext_pullobsmarkers_0(**boundaries) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
378 |
obsdata = obsdata.read() |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
379 |
if len(obsdata) > 5: |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
380 |
msg = "merging obsolescence markers (%i bytes)\n" % len(obsdata) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
381 |
obsexcmsg(ui, msg) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
382 |
tr = pullop.gettransaction() |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
383 |
old = len(pullop.repo.obsstore._all) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
384 |
pullop.repo.obsstore.mergemarkers(tr, obsdata) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
385 |
new = len(pullop.repo.obsstore._all) - old |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
386 |
obsexcmsg(ui, "%i obsolescence markers added\n" % new, True) |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
387 |
else: |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
388 |
obsexcmsg(ui, "no unknown remote markers\n") |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
389 |
obsexcmsg(ui, "DONE\n") |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
390 |
if new: |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
391 |
pullop.repo.invalidatevolatilesets() |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
392 |
return tr |
ebbce3be9142
pull: also issue warning for old mercurial version
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2058
diff
changeset
|
393 |
|
823
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
394 |
@eh.addattr(wireproto.wirepeer, 'evoext_pullobsmarkers_0') |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
395 |
def client_pullobsmarkers(self, heads=None, common=None): |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
396 |
self.requirecap('_evoext_pullobsmarkers_0', _('look up remote obsmarkers')) |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
397 |
opts = {} |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
398 |
if heads is not None: |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
399 |
opts['heads'] = wireproto.encodelist(heads) |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
400 |
if common is not None: |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
401 |
opts['common'] = wireproto.encodelist(common) |
1836
9e87ac06be90
compat: just use '_callcompressable'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1835
diff
changeset
|
402 |
f = self._callcompressable("evoext_pullobsmarkers_0", **opts) |
898
934b6f0feffd
evolve: small white space change
Olle Lundberg <geek@nerd.sh>
parents:
897
diff
changeset
|
403 |
length = int(f.read(20)) |
853
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
404 |
chunk = 4096 |
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
405 |
current = 0 |
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
406 |
data = StringIO() |
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
407 |
ui = self.ui |
1624
081605c2e9b6
evolve: mark progress units for translation
Anton Shestakov <av6@dwimlabs.net>
parents:
1623
diff
changeset
|
408 |
obsexcprg(ui, current, unit=_("bytes"), total=length) |
853
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
409 |
while current < length: |
1547
425c0700aabd
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com>
parents:
1536
diff
changeset
|
410 |
readsize = min(length - current, chunk) |
853
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
411 |
data.write(f.read(readsize)) |
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
412 |
current += readsize |
1624
081605c2e9b6
evolve: mark progress units for translation
Anton Shestakov <av6@dwimlabs.net>
parents:
1623
diff
changeset
|
413 |
obsexcprg(ui, current, unit=_("bytes"), total=length) |
1034
5fd28e46e8f5
evolve: move OBSEXC progress in a dedicated function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1033
diff
changeset
|
414 |
obsexcprg(ui, None) |
870
1a23c7c52a43
exchange: fix pull over wire protocol
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
869
diff
changeset
|
415 |
data.seek(0) |
853
b82b49189328
exchange: add progress bar when pulling using wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
825
diff
changeset
|
416 |
return data |
823
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
417 |
|
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
418 |
@eh.addattr(localrepo.localpeer, 'evoext_pullobsmarkers_0') |
9aa20585e158
exchange: add a new method to pull markers
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
821
diff
changeset
|
419 |
def local_pullobsmarkers(self, heads=None, common=None): |
1838
6942750831bb
serveronly: deduplicate code with the main evolve extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1836
diff
changeset
|
420 |
return serveronly._getobsmarkersstream(self._repo, heads=heads, |
6942750831bb
serveronly: deduplicate code with the main evolve extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1836
diff
changeset
|
421 |
common=common) |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
422 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
423 |
def _legacypush_capabilities(orig, repo, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
424 |
"""wrapper to advertise new capability""" |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
425 |
caps = orig(repo, proto) |
2075
a7c0685ba6d9
evolution: drop the old __temporary__.advertiseobsolete option
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2063
diff
changeset
|
426 |
if obsolete.isenabled(repo, obsolete.exchangeopt): |
2061
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
427 |
caps = caps.split() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
428 |
caps.append('_evoext_pushobsmarkers_0') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
429 |
caps.append('_evoext_pullobsmarkers_0') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
430 |
caps.sort() |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
431 |
caps = ' '.join(caps) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
432 |
return caps |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
433 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
434 |
@eh.extsetup |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
435 |
def extsetup(ui): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
436 |
# legacy standalone method |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
437 |
hgweb_mod.perms['evoext_pushobsmarkers_0'] = 'push' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
438 |
hgweb_mod.perms['evoext_pullobsmarkers_0'] = 'pull' |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
439 |
wireproto.commands['evoext_pushobsmarkers_0'] = (srv_pushobsmarkers, '') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
440 |
wireproto.commands['evoext_pullobsmarkers_0'] = (srv_pullobsmarkers, '*') |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
441 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
442 |
extensions.wrapfunction(wireproto, 'capabilities', _legacypush_capabilities) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
443 |
# wrap command content |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
444 |
oldcap, args = wireproto.commands['capabilities'] |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
445 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
446 |
def newcap(repo, proto): |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
447 |
return _legacypush_capabilities(oldcap, repo, proto) |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
448 |
wireproto.commands['capabilities'] = (newcap, args) |