author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Sun, 02 Feb 2020 13:28:47 +0100 | |
changeset 5119 | 51b892c54e62 |
parent 5042 | 51d0f2355215 |
child 5180 | 515d425c0a05 |
permissions | -rw-r--r-- |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 |
"""enable a minimal verison of topic for server |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 |
|
4364
b74a31c69ad5
minitopic: add warning about extensions state and testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4187
diff
changeset
|
3 |
! This extensions is not actively maintained |
b74a31c69ad5
minitopic: add warning about extensions state and testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4187
diff
changeset
|
4 |
! We recommand using the main topic extension instead |
b74a31c69ad5
minitopic: add warning about extensions state and testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4187
diff
changeset
|
5 |
|
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 |
Non publishing repository will see topic as "branch:topic" in the branch field. |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 |
In addition to adding the extensions, the feature must be manually enabled in the config: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
10 |
[experimental] |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 |
server-mini-topic = yes |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 |
""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 |
import hashlib |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 |
import contextlib |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 |
from mercurial import ( |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 |
branchmap, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 |
context, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 |
encoding, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 |
extensions, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 |
node, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 |
registrar, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
23 |
util, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 |
) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 |
|
5042
51d0f2355215
serverminitopic: ask pytype to disable import-error on a block handling hg 4.5
Anton Shestakov <av6@dwimlabs.net>
parents:
4814
diff
changeset
|
26 |
# hg <= 4.5 (b4d85bc122bd) |
3679
b12c5d107187
minitopic: handle wireproto module change from b4d85bc122bd
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3651
diff
changeset
|
27 |
try: |
5042
51d0f2355215
serverminitopic: ask pytype to disable import-error on a block handling hg 4.5
Anton Shestakov <av6@dwimlabs.net>
parents:
4814
diff
changeset
|
28 |
from mercurial import wireproto # pytype: disable=import-error |
3679
b12c5d107187
minitopic: handle wireproto module change from b4d85bc122bd
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3651
diff
changeset
|
29 |
wireproto.branchmap |
5042
51d0f2355215
serverminitopic: ask pytype to disable import-error on a block handling hg 4.5
Anton Shestakov <av6@dwimlabs.net>
parents:
4814
diff
changeset
|
30 |
except ImportError: |
3679
b12c5d107187
minitopic: handle wireproto module change from b4d85bc122bd
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3651
diff
changeset
|
31 |
from mercurial import wireprotov1server as wireproto |
b12c5d107187
minitopic: handle wireproto module change from b4d85bc122bd
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3651
diff
changeset
|
32 |
|
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 |
if util.safehasattr(registrar, 'configitem'): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
35 |
configtable = {} |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
36 |
configitem = registrar.configitem(configtable) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
37 |
configitem(b'experimental', b'server-mini-topic', |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
38 |
default=False, |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
39 |
) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
40 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
41 |
def hasminitopic(repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
42 |
"""true if minitopic is enabled on the repository |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
43 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
44 |
(The value is cached on the repository) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
45 |
""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
46 |
enabled = getattr(repo, '_hasminitopic', None) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
47 |
if enabled is None: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
48 |
enabled = (repo.ui.configbool(b'experimental', b'server-mini-topic') |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
49 |
and not repo.publishing()) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
50 |
repo._hasminitopic = enabled |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
51 |
return enabled |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
52 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
53 |
### make topic visible though "ctx.branch()" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
54 |
|
3651
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
55 |
def topicbranch(orig, self): |
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
56 |
branch = orig(self) |
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
57 |
if hasminitopic(self._repo) and self.phase(): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
58 |
topic = self._changeset.extra.get(b'topic') |
3651
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
59 |
if topic is not None: |
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
60 |
topic = encoding.tolocal(topic) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
61 |
branch = b'%s:%s' % (branch, topic) |
3651
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
62 |
return branch |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
63 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
64 |
### avoid caching topic data in rev-branch-cache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
65 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
66 |
class revbranchcacheoverlay(object): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
67 |
"""revbranch mixin that don't use the cache for non public changeset""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
68 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
69 |
def _init__(self, *args, **kwargs): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
70 |
super(revbranchcacheoverlay, self).__init__(*args, **kwargs) |
4804
079dbf36e884
python3: add raw prefix in cases harder to analyze at the token level
Raphaël Gomès <rgomes@octobus.net>
parents:
4758
diff
changeset
|
71 |
if r'branchinfo' in vars(self): |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
72 |
del self.branchinfo |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
73 |
|
4187
49d442a2207f
topic: add the changelog argument to branchinfo()
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3679
diff
changeset
|
74 |
def branchinfo(self, rev, changelog=None): |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
75 |
"""return branch name and close flag for rev, using and updating |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
76 |
persistent cache.""" |
3511
768f752b5364
serverminitopic: fix wrong object being passed to phase
Sean Farley <sean@farley.io>
parents:
3207
diff
changeset
|
77 |
phase = self._repo._phasecache.phase(self._repo, rev) |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
78 |
if phase: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
79 |
ctx = self._repo[rev] |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 |
return ctx.branch(), ctx.closesbranch() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
81 |
return super(revbranchcacheoverlay, self).branchinfo(rev) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
83 |
def reposetup(ui, repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 |
"""install a repo class with a special revbranchcache""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
86 |
if hasminitopic(repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
87 |
repo = repo.unfiltered() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
88 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
89 |
class minitopicrepo(repo.__class__): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
90 |
"""repository subclass that install the modified cache""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
91 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
92 |
def revbranchcache(self): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
93 |
if self._revbranchcache is None: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
94 |
cache = super(minitopicrepo, self).revbranchcache() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
95 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
96 |
class topicawarerbc(revbranchcacheoverlay, cache.__class__): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
97 |
pass |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
98 |
cache.__class__ = topicawarerbc |
4804
079dbf36e884
python3: add raw prefix in cases harder to analyze at the token level
Raphaël Gomès <rgomes@octobus.net>
parents:
4758
diff
changeset
|
99 |
if r'branchinfo' in vars(cache): |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
100 |
del cache.branchinfo |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
101 |
self._revbranchcache = cache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
102 |
return self._revbranchcache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
103 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
104 |
repo.__class__ = minitopicrepo |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
105 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
106 |
### topic aware branch head cache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
107 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
108 |
def _phaseshash(repo, maxrev): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
109 |
"""uniq ID for a phase matching a set of rev""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
110 |
revs = set() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
111 |
cl = repo.changelog |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
112 |
fr = cl.filteredrevs |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
113 |
nm = cl.nodemap |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
114 |
for roots in repo._phasecache.phaseroots[1:]: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
115 |
for n in roots: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
116 |
r = nm.get(n) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
117 |
if r not in fr and r < maxrev: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
118 |
revs.add(r) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
119 |
key = node.nullid |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
120 |
revs = sorted(revs) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
121 |
if revs: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
122 |
s = hashlib.sha1() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
123 |
for rev in revs: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
124 |
s.update(b'%d;' % rev) |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
125 |
key = s.digest() |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
126 |
return key |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
127 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
128 |
# needed to prevent reference used for 'super()' call using in branchmap.py to |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
129 |
# no go into cycle. (yes, URG) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
130 |
_oldbranchmap = branchmap.branchcache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
131 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
132 |
@contextlib.contextmanager |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
133 |
def oldbranchmap(): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
134 |
previous = branchmap.branchcache |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
135 |
try: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
136 |
branchmap.branchcache = _oldbranchmap |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
137 |
yield |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
138 |
finally: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
139 |
branchmap.branchcache = previous |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
140 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
141 |
_publiconly = set([ |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
142 |
b'base', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
143 |
b'immutable', |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
144 |
]) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
145 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
146 |
def mighttopic(repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
147 |
return hasminitopic(repo) and repo.filtername not in _publiconly |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
148 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
149 |
class _topiccache(branchmap.branchcache): # combine me with branchmap.branchcache |
4394
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
150 |
@classmethod |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
151 |
def fromfile(cls, repo): |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
152 |
orig = super(_topiccache, cls).fromfile |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
153 |
return wrapread(orig, repo) |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
154 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
155 |
def __init__(self, *args, **kwargs): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
156 |
# super() call may fail otherwise |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
157 |
with oldbranchmap(): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
158 |
super(_topiccache, self).__init__(*args, **kwargs) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
159 |
self.phaseshash = None |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
160 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
161 |
def copy(self): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
162 |
"""return an deep copy of the branchcache object""" |
4521
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
163 |
if util.safehasattr(self, '_entries'): |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
164 |
_entries = self._entries |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
165 |
else: |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
166 |
# hg <= 4.9 (624d6683c705, b137a6793c51) |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
167 |
_entries = self |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
168 |
new = self.__class__(_entries, self.tipnode, self.tiprev, |
5303b9128714
serverminitopic: add compatibility for branchcache that now uses self._entries
Anton Shestakov <av6@dwimlabs.net>
parents:
4394
diff
changeset
|
169 |
self.filteredhash, self._closednodes) |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
170 |
new.phaseshash = self.phaseshash |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
171 |
return new |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
172 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
173 |
def validfor(self, repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
174 |
"""Is the cache content valid regarding a repo |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
175 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
176 |
- False when cached tipnode is unknown or if we detect a strip. |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
177 |
- True when cache is up to date or a subset of current repo.""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
178 |
valid = super(_topiccache, self).validfor(repo) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
179 |
if not valid: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
180 |
return False |
3518
d938808e31bc
serverminitopic: attempt to fix assertion for repoview in branchmap
Sean Farley <sean@farley.io>
parents:
3511
diff
changeset
|
181 |
elif self.phaseshash is None: |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
182 |
# phasehash at None means this is a branchmap |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
183 |
# coming from a public only set |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
184 |
return True |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
185 |
else: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
186 |
try: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
187 |
valid = self.phaseshash == _phaseshash(repo, self.tiprev) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
188 |
return valid |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
189 |
except IndexError: |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
190 |
return False |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
191 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
192 |
def write(self, repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
193 |
# we expect (hope) mutable set to be small enough to be that computing |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
194 |
# it all the time will be fast enough |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
195 |
if not mighttopic(repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
196 |
super(_topiccache, self).write(repo) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
197 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
198 |
def update(self, repo, revgen): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
199 |
"""Given a branchhead cache, self, that may have extra nodes or be |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
200 |
missing heads, and a generator of nodes that are strictly a superset of |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
201 |
heads missing, this function updates self to be correct. |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
202 |
""" |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
203 |
super(_topiccache, self).update(repo, revgen) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
204 |
if mighttopic(repo): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
205 |
self.phaseshash = _phaseshash(repo, self.tiprev) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
206 |
|
3207
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
207 |
def wrapread(orig, repo): |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
208 |
# Avoiding to write cache for filter where topic applies is a good step, |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
209 |
# but we need to also avoid reading it. Existing branchmap cache might |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
210 |
# exists before the turned the feature on. |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
211 |
if mighttopic(repo): |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
212 |
return None |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
213 |
return orig(repo) |
35c79686a635
serverminitopic: also avoid reading
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3206
diff
changeset
|
214 |
|
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
215 |
# advertise topic capabilities |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
216 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
217 |
def wireprotocaps(orig, repo, proto): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
218 |
caps = orig(repo, proto) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
219 |
if hasminitopic(repo): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4804
diff
changeset
|
220 |
caps.append(b'topics') |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
221 |
return caps |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
222 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
223 |
# wrap the necessary bit |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
224 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
225 |
def wrapclass(container, oldname, new): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
226 |
old = getattr(container, oldname) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
227 |
if not issubclass(old, new): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
228 |
targetclass = new |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
229 |
# check if someone else already wrapped the class and handle that |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
230 |
if not issubclass(new, old): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
231 |
class targetclass(new, old): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
232 |
pass |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
233 |
setattr(container, oldname, targetclass) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
234 |
current = getattr(container, oldname) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
235 |
assert issubclass(current, new), (current, new, targetclass) |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
236 |
|
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
237 |
def uisetup(ui): |
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
238 |
wrapclass(branchmap, 'branchcache', _topiccache) |
4394
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
239 |
try: |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
240 |
# Mercurial 4.8 and older |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
241 |
extensions.wrapfunction(branchmap, 'read', wrapread) |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
242 |
except AttributeError: |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
243 |
# Mercurial 4.9; branchcache.fromfile now takes care of this |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
244 |
# which is alredy defined on _topiccache |
c6d1b0a6babe
topic: make topics compatible with branchmap refactor
Martijn Pieters <mj@octobus.net>
parents:
4364
diff
changeset
|
245 |
pass |
3206
3ccde4699cf0
topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
246 |
extensions.wrapfunction(wireproto, '_capabilities', wireprotocaps) |
3651
fa15068a9945
serverminitopic: wrap context.changectx.branch instead of context.changectx
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3518
diff
changeset
|
247 |
extensions.wrapfunction(context.changectx, 'branch', topicbranch) |