author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Sat, 25 Nov 2017 18:53:23 -0500 | |
changeset 3266 | bc173e7f3b6f |
parent 3173 | 3afe20410b55 |
child 3500 | a43fdbd6f7eb |
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 |
|
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
17 |
from mercurial import ( |
2523
3629446411b3
compat: adapt to buildobsmarkerspart move
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2275
diff
changeset
|
18 |
bundle2, |
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
19 |
error, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
20 |
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
|
21 |
extensions, |
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
22 |
lock as lockmod, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
23 |
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
|
24 |
obsolete, |
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
25 |
pushkey, |
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
|
26 |
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
|
27 |
wireproto, |
1823
649d7a574c3f
evolve: cleanup imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1822
diff
changeset
|
28 |
) |
491
6989d8fe4ed2
merge evolve and obsolete
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
490
diff
changeset
|
29 |
|
3173
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
30 |
from mercurial.hgweb import common as hgwebcommon |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
31 |
|
2041
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
32 |
from . import ( |
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
33 |
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
|
34 |
utility, |
2054
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2053
diff
changeset
|
35 |
obsdiscovery, |
2041
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
36 |
) |
3b6550261614
exthelper: extract into its own submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2032
diff
changeset
|
37 |
|
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
|
38 |
eh = exthelper.exthelper() |
2275
fff7a678f659
extension: simplify the extensions helper hierarchy
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2117
diff
changeset
|
39 |
eh.merge(obsdiscovery.eh) |
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
|
40 |
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
|
41 |
obsexcprg = utility.obsexcprg |
816
03587920dfd9
evolve: add relevant marker exchange machinery
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
811
diff
changeset
|
42 |
|
3080
461c9d940519
evolve: registed configitems if available
Boris Feld <boris.feld@octobus.net>
parents:
2523
diff
changeset
|
43 |
eh.configitem('experimental', 'verbose-obsolescence-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
|
44 |
|
302aa8bbb3af
exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2059
diff
changeset
|
45 |
_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
|
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 |
##################################################### |
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 |
### 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
|
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 |
|
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 |
# 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
|
52 |
# 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
|
53 |
# obsolete subtree. |
2058
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
54 |
|
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
55 |
@eh.uisetup |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
56 |
def addgetbundleargs(self): |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
57 |
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
|
58 |
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
|
59 |
|
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
60 |
@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
|
61 |
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
|
62 |
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
|
63 |
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
|
64 |
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
|
65 |
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
|
66 |
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
|
67 |
if 'common' in boundaries: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
68 |
common = boundaries['common'] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
69 |
if common != pullop.common: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
70 |
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
|
71 |
if common != [node.nullid]: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
72 |
kwargs['evo_obscommon'] = common |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
73 |
elif 'missing' in boundaries: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
74 |
missing = boundaries['missing'] |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
75 |
if missing: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
76 |
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
|
77 |
% len(missing)) |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
78 |
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
|
79 |
return ret |
92c2a54f98ee
exchange: split between modern and legacy code
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2057
diff
changeset
|
80 |
|
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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
|
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 |
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
|
86 |
heads = kwargs.get('heads') |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
87 |
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
|
88 |
if heads is None: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
89 |
heads = repo.heads() |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
90 |
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
|
91 |
assert obscommon |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
92 |
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
|
93 |
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
|
94 |
else: |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
95 |
common = kwargs.get('common') |
b1f029dcf573
discovery: implement some range based discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2079
diff
changeset
|
96 |
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
|
97 |
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
|
98 |
markers = repo.obsstore.relevantmarkers(subset) |
2523
3629446411b3
compat: adapt to buildobsmarkerspart move
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2275
diff
changeset
|
99 |
if util.safehasattr(bundle2, 'buildobsmarkerspart'): |
3629446411b3
compat: adapt to buildobsmarkerspart move
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2275
diff
changeset
|
100 |
bundle2.buildobsmarkerspart(bundler, markers) |
3629446411b3
compat: adapt to buildobsmarkerspart move
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2275
diff
changeset
|
101 |
else: |
3629446411b3
compat: adapt to buildobsmarkerspart move
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2275
diff
changeset
|
102 |
exchange.buildobsmarkerspart(bundler, markers) |
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
|
103 |
|
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 |
# 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
|
105 |
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
|
106 |
"""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
|
107 |
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
|
108 |
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
|
109 |
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
|
110 |
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
|
111 |
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
|
112 |
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
|
113 |
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
|
114 |
|
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 |
@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
|
116 |
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
|
117 |
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
|
118 |
|
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 |
# 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
|
120 |
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
|
121 |
|
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 |
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
|
123 |
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
|
124 |
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
|
125 |
|
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 |
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
|
127 |
# 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
|
128 |
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
|
129 |
|
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 |
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
|
131 |
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
|
132 |
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
|
133 |
|
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 |
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
|
135 |
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
|
136 |
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
|
137 |
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
|
138 |
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
|
139 |
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
|
140 |
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
|
141 |
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
|
142 |
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
|
143 |
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
|
144 |
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
|
145 |
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
|
146 |
|
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 |
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
|
148 |
"""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
|
149 |
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
|
150 |
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
|
151 |
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
|
152 |
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
|
153 |
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
|
154 |
_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
|
155 |
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
|
156 |
|
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 |
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
|
158 |
"""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
|
159 |
""" |
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 |
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
|
161 |
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
|
162 |
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
|
163 |
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
|
164 |
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
|
165 |
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
|
166 |
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
|
167 |
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
|
168 |
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
|
169 |
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
|
170 |
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
|
171 |
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
|
172 |
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
|
173 |
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
|
174 |
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
|
175 |
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
|
176 |
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
|
177 |
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
|
178 |
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
|
179 |
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
|
180 |
|
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 |
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
|
182 |
"""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
|
183 |
|
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 |
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
|
185 |
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
|
186 |
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
|
187 |
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
|
188 |
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
|
189 |
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
|
190 |
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
|
191 |
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
|
192 |
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
|
193 |
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
|
194 |
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
|
195 |
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
|
196 |
finaldata.seek(0) |
3148
0ed75e700ad8
compat: drop compatibility for 'streamres' prior to 4.1
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3080
diff
changeset
|
197 |
return wireproto.streamres(reader=finaldata, v1compressible=True) |
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
198 |
|
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
199 |
abortmsg = "won't exchange obsmarkers through pushkey" |
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
200 |
hint = "upgrade your client or server to use the bundle2 protocol" |
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
201 |
|
3173
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
202 |
class HTTPCompatibleAbort(hgwebcommon.ErrorResponse, error.Abort): |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
203 |
def __init__(self, message, code, hint=None): |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
204 |
# initialisation of each class is a bit messy. |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
205 |
# We explicitly do the dispatch |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
206 |
hgwebcommon.ErrorResponse.__init__(self, 410, message) |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
207 |
error.Abort.__init__(self, message, hint=hint) |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
208 |
|
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
209 |
def forbidpushkey(repo=None, key=None, old=None, new=None): |
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
210 |
"""prevent exchange through pushkey""" |
3173
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
211 |
err = HTTPCompatibleAbort(abortmsg, 410, hint=hint) |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
212 |
raise err |
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
213 |
|
3172
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
214 |
def forbidlistkey(repo=None, key=None, old=None, new=None): |
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
215 |
"""prevent exchange through pushkey""" |
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
216 |
if obsolete.isenabled(repo, obsolete.exchangeopt): |
3173
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
217 |
err = HTTPCompatibleAbort(abortmsg, 410, hint=hint) |
3afe20410b55
wireproto: gracefully fail on http when trying to use older pushkey method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3172
diff
changeset
|
218 |
raise err |
3172
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
219 |
return {} |
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
220 |
|
3153
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
221 |
@eh.uisetup |
544354cfc626
pushkey: forbid usage of pushley to exchange markers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3149
diff
changeset
|
222 |
def setuppushkeyforbidding(ui): |
3172
aed2cac9edc3
wireproto: avoid exposing pushkey abort for server without evolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3153
diff
changeset
|
223 |
pushkey._namespaces['obsolete'] = (forbidpushkey, forbidlistkey) |