# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1499973888 -19800 # Node ID adfbb984ebbbca6219bd7f12f55775ebafb894ee # Parent 4b5caa509df8340077943064ca0eb7c505941610 topics: check for topic on commit before a user enters message We have a enforce-topic cofig which can forbid user to commit without a topic on it. We used to check topic on a commit after the user enters message, but we should fail early. diff -r 4b5caa509df8 -r adfbb984ebbb hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Fri Jul 14 03:14:27 2017 +0200 +++ b/hgext3rd/topic/__init__.py Fri Jul 14 00:54:48 2017 +0530 @@ -235,11 +235,6 @@ current = self.currenttopic if current: ctx.extra()[constants.extrakey] = current - else: - if ui.configbool('experimental', 'enforce-topic', False): - # calling a function to raise an error as error variable - # in this function does not refer to the error module - panicforuntopicedcommit() if (isinstance(ctx, context.memctx) and ctx.extra().get('amend_source') and ctx.topic() and @@ -576,12 +571,6 @@ return topicstime -def panicforuntopicedcommit(): - msg = _("no active topic") - hint = _("set a current topic or use '--config " + - "experimental.enforce-topic=no' to commit without a topic") - raise error.Abort(msg, hint=hint) - def summaryhook(ui, repo): t = repo.currenttopic if not t: @@ -591,10 +580,16 @@ def commitwrap(orig, ui, repo, *args, **opts): with repo.wlock(): + enforcetopic = ui.configbool('experimental', 'enforce-topic') if opts.get('topic'): t = opts['topic'] with repo.vfs.open('topic', 'w') as f: f.write(t) + elif not repo.currenttopic and enforcetopic: + msg = _("no active topic") + hint = _("set a current topic or use '--config " + + "experimental.enforce-topic=no' to commit without a topic") + raise error.Abort(msg, hint=hint) return orig(ui, repo, *args, **opts) def committextwrap(orig, repo, ctx, subs, extramsg): diff -r 4b5caa509df8 -r adfbb984ebbb tests/test-topic.t --- a/tests/test-topic.t Fri Jul 14 03:14:27 2017 +0200 +++ b/tests/test-topic.t Fri Jul 14 00:54:48 2017 +0530 @@ -849,6 +849,13 @@ abort: no active topic (set a current topic or use '--config experimental.enforce-topic=no' to commit without a topic) [255] + +(same test, checking we abort before the editor) + + $ EDITOR=cat hg ci -m "Added a" --edit + abort: no active topic + (set a current topic or use '--config experimental.enforce-topic=no' to commit without a topic) + [255] $ hg ci -m "added a" --config experimental.enforce-topic=no $ hg log changeset: 0:a154386e50d1