# HG changeset patch # User Matt Mackall # Date 1434748602 18000 # Node ID 972d4e0c3d44bb0b2ab25d32fe563bc7dc5c770c # Parent b7b9e5028c2a3a24eda54ea99fc734b8f41cb0d5 changectx: add topic method diff -r b7b9e5028c2a -r 972d4e0c3d44 src/topic/__init__.py --- a/src/topic/__init__.py Fri Jun 19 16:13:16 2015 -0500 +++ b/src/topic/__init__.py Fri Jun 19 16:16:42 2015 -0500 @@ -30,13 +30,17 @@ cmdtable = {} command = cmdutil.command(cmdtable) +def _contexttopic(self): + return self.extra().get(constants.extrakey, '') +context.basectx.topic = _contexttopic + def _namemap(repo, name): return [ctx.node() for ctx in repo.set('not public() and extra(topic, %s)', name)] def _nodemap(repo, node): ctx = repo[node] - t = ctx.extra().get(constants.extrakey, '') + t = ctx.topic() if t and ctx.phase() > phases.public: return [t] return [] @@ -47,7 +51,7 @@ def commit(self, *args, **kwargs): backup = self.ui.backupconfig('ui', 'allowemptycommit') try: - if repo.currenttopic != repo['.'].extra().get('topic', ''): + if repo.currenttopic != repo['.'].topic(): # bypass the core "nothing changed" logic self.ui.setconfig('ui', 'allowemptycommit', True) return orig.commit(self, *args, **kwargs) @@ -65,7 +69,7 @@ def topics(self): topics = set(['', self.currenttopic]) for c in self.set('not public()'): - topics.add(c.extra().get(constants.extrakey, '')) + topics.add(c.topic()) topics.remove('') return topics @@ -179,7 +183,7 @@ t = '' pctx = repo[node] if pctx.phase() > phases.public: - t = pctx.extra().get(constants.extrakey, '') + t = pctx.topic() with repo.vfs.open('topic', 'w') as f: f.write(t) if t and t != ot: @@ -193,9 +197,8 @@ return def savetopic(ctx, extra): - e = ctx.extra() - if constants.extrakey in e: - extra[constants.extrakey] = e[constants.extrakey] + if ctx.topic(): + extra[constants.extrakey] = ctx.topic() def newmakeextrafn(orig, copiers): return orig(copiers + [savetopic])