mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
6c60659b4c
Currently, the templating layer tends to treat each namespace as a one-off, with explicit usage of {bookmarks}, {tags}, {branch}, etc instead of using {namespaces}. It would be really useful if we could iterate over namespaces and operate on them generically. However, some consumers may wish to differentiate namespaces by whether they are built-in to core Mercurial or provided by extensions. Expected use cases include ignoring non-built-in namespaces or emitting a generic label for non-built-in namespaces. This commit introduces an attribute on namespace instances that says whether the namespace is "built-in" and then exposes this to the templating layer. As part of this, we implement a reusable extension for defining custom names on each changeset for testing. A second consumer will be introduced in a subsequent commit.
19 lines
614 B
Python
19 lines
614 B
Python
# Dummy extension to define a namespace containing revision names
|
|
|
|
from __future__ import absolute_import
|
|
|
|
from mercurial import (
|
|
namespaces,
|
|
)
|
|
|
|
def reposetup(ui, repo):
|
|
names = {'r%d' % rev: repo[rev].node() for rev in repo}
|
|
namemap = lambda r, name: names.get(name)
|
|
nodemap = lambda r, node: ['r%d' % repo[node].rev()]
|
|
|
|
ns = namespaces.namespace('revnames', templatename='revname',
|
|
logname='revname',
|
|
listnames=lambda r: names.keys(),
|
|
namemap=namemap, nodemap=nodemap)
|
|
repo.names.addnamespace(ns)
|