mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
reposetup: more explicit namespace setup
This commit is contained in:
parent
0052ab3b1b
commit
e9c1e314b6
@ -123,6 +123,7 @@ def exsetcurrent(orig, repo, mark):
|
|||||||
writedistance(repo)
|
writedistance(repo)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
def reposetup(ui, repo):
|
def reposetup(ui, repo):
|
||||||
if not repo.local():
|
if not repo.local():
|
||||||
return
|
return
|
||||||
@ -133,43 +134,53 @@ def reposetup(ui, repo):
|
|||||||
|
|
||||||
loadremotenames(repo)
|
loadremotenames(repo)
|
||||||
|
|
||||||
# cache this so we don't iterate over new values
|
ns = namespaces.namespace
|
||||||
items = list(repo.names.iteritems())
|
|
||||||
for nsname, ns in items:
|
|
||||||
d = _remotenames.get(nsname)
|
|
||||||
if not d:
|
|
||||||
continue
|
|
||||||
|
|
||||||
rname = 'remote' + nsname
|
mark2nodes = _remotenames.get('bookmarks')
|
||||||
rtmpl = 'remote' + ns.templatename
|
node2marks = {}
|
||||||
|
for name, node in mark2nodes.iteritems():
|
||||||
|
node2marks.setdefault(node[0], []).append(name)
|
||||||
|
remotebookmarkns = ns(
|
||||||
|
'remotebookmarks',
|
||||||
|
templatename='remotebookmarks',
|
||||||
|
logname='bookmark',
|
||||||
|
colorname='remotebookmarks',
|
||||||
|
listnames=lambda repo: mark2nodes.keys(),
|
||||||
|
namemap=lambda repo, name: mark2nodes.get(name),
|
||||||
|
nodemap=lambda repo, node: node2marks.get(node, []))
|
||||||
|
repo.names.addnamespace(remotebookmarkns)
|
||||||
|
|
||||||
if nsname == 'bookmarks' and hoist:
|
if hoist:
|
||||||
def names(rp, d=d):
|
hoist2nodes = {}
|
||||||
l = d.keys()
|
node2hoists = {}
|
||||||
for name in l:
|
for name, node in mark2nodes.iteritems():
|
||||||
if name.startswith(hoist):
|
if name.startswith(hoist):
|
||||||
l.append(name[len(hoist):])
|
hoist2nodes[name[len(hoist):]] = node
|
||||||
return l
|
node2hoists.setdefault(node[0], []).append(name)
|
||||||
|
hoistedmarkns = ns(
|
||||||
|
'hoistedbookmarks',
|
||||||
|
templatename='hoistedbookmarks',
|
||||||
|
logname='hoistedname',
|
||||||
|
colorname='hoistedname',
|
||||||
|
listnames=lambda repo: hoist2nodes.keys(),
|
||||||
|
namemap=lambda repo, name: hoist2nodes.get(name),
|
||||||
|
nodemap=lambda repo, node: node2hoists.get(name, []))
|
||||||
|
repo.names.addnamespace(hoistedmarkns)
|
||||||
|
|
||||||
def namemap(rp, name, d=d):
|
branch2nodes = _remotenames.get('branches')
|
||||||
if name in d:
|
node2branch = {}
|
||||||
return d[name]
|
for name, nodes in branch2nodes.iteritems():
|
||||||
return d.get(hoist + name)
|
for node in nodes:
|
||||||
|
node2branch[node] = [name]
|
||||||
# we don't hoist nodemap because we don't want hoisted names
|
remotebranchns = ns(
|
||||||
# to show up in logs, which is the primary use case here
|
'remotebranches',
|
||||||
else:
|
templatename='remotebranches',
|
||||||
names = lambda rp, d=d: d.keys()
|
logname='branch',
|
||||||
namemap = lambda rp, name, d=d: d.get(name)
|
colorname='remotebranch',
|
||||||
|
listnames=lambda repo: branch2nodes.keys(),
|
||||||
nodemap = lambda rp, node, d=d: [name for name, n in d.iteritems()
|
namemap=lambda repo, name: branch2nodes.get(name),
|
||||||
for n2 in n if n2 == node]
|
nodemap=lambda repo, node: node2branch.get(node, []))
|
||||||
|
repo.names.addnamespace(remotebranchns)
|
||||||
n = namespaces.namespace(rname, templatename=rtmpl,
|
|
||||||
logname=ns.templatename, colorname=rtmpl,
|
|
||||||
listnames=names, namemap=namemap,
|
|
||||||
nodemap=nodemap)
|
|
||||||
repo.names.addnamespace(n)
|
|
||||||
|
|
||||||
def _tracking(ui):
|
def _tracking(ui):
|
||||||
# omg default true
|
# omg default true
|
||||||
|
Loading…
Reference in New Issue
Block a user