diff tests/revnamesext.py @ 33048:46fa46608ca5

namespaces: record and expose whether namespace is built-in 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.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 24 Jun 2017 14:52:15 -0700
parents
children 086fc71fbb09
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/revnamesext.py	Sat Jun 24 14:52:15 2017 -0700
@@ -0,0 +1,18 @@
+# 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)