|
1 from mercurial import branchmap |
|
2 from . import topicmap |
|
3 |
|
4 def _headssummary(orig, repo, remote, outgoing): |
|
5 publishing = ('phases' not in remote.listkeys('namespaces') |
|
6 or bool(remote.listkeys('phases').get('publishing', False))) |
|
7 if publishing: |
|
8 return orig(repo, remote, outgoing) |
|
9 oldgetitem = repo.__getitem__ |
|
10 oldrepo = repo.__class__ |
|
11 oldbranchcache = branchmap.branchcache |
|
12 oldfilename = branchmap._filename |
|
13 try: |
|
14 class repocls(repo.__class__): |
|
15 def __getitem__(self, key): |
|
16 ctx = super(repocls, self).__getitem__(key) |
|
17 oldbranch = ctx.branch |
|
18 def branch(): |
|
19 branch = oldbranch() |
|
20 topic = ctx.topic() |
|
21 if topic: |
|
22 branch = "%s:%s" % (branch, topic) |
|
23 return branch |
|
24 ctx.branch = branch |
|
25 return ctx |
|
26 repo.__class__ = repocls |
|
27 branchmap.branchcache = topicmap.topiccache |
|
28 branchmap._filename = topicmap._filename |
|
29 summary = orig(repo, remote, outgoing) |
|
30 for key, value in summary.iteritems(): |
|
31 if ':' in key: # This is a topic |
|
32 if value[0] is None and value[1]: |
|
33 summary[key] = ([value[1].pop(0)], ) + value[1:] |
|
34 return summary |
|
35 finally: |
|
36 repo.__class__ = oldrepo |
|
37 branchmap.branchcache = oldbranchcache |
|
38 branchmap._filename = oldfilename |
|
39 |
|
40 def wireprotobranchmap(orig, repo, proto): |
|
41 oldrepo = repo.__class__ |
|
42 print repo |
|
43 try: |
|
44 class repocls(repo.__class__): |
|
45 def branchmap(self): |
|
46 usetopic = not self.publishing() |
|
47 return super(repocls, self).branchmap(topic=usetopic) |
|
48 repo.__class__ = repocls |
|
49 return orig(repo, proto) |
|
50 finally: |
|
51 repo.__class__ = oldrepo |