changeset 2000:c413e7c96265

init: guard _namemap with repo.topics (issue5351) This prevents reading extra data on all repo commits when there is no topic for a given name. _namemap is called a lot, and it is often called for commit shas -- which should pretty much never be names of topics...
author timeless@gmail.com
date Fri, 26 Aug 2016 16:57:45 +0000
parents fe76e9c92fff
children ddfc87788d5c
files hgext3rd/topic/__init__.py
diffstat 1 files changed, 2 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py	Fri Aug 26 16:52:02 2016 +0000
+++ b/hgext3rd/topic/__init__.py	Fri Aug 26 16:57:45 2016 +0000
@@ -84,6 +84,8 @@
             msg = _('cannot resolve "%s": topic "%s" has only %d changesets')
             raise error.Abort(msg % (name, topic, len(revs)))
         return [repo[r].node()]
+    if not name in repo.topics:
+        return []
     return [ctx.node() for ctx in
             repo.set('not public() and extra(topic, %s)', name)]