diff -r 7b986968700b -r 228caeb8b7af hgext3rd/topic/flow.py --- a/hgext3rd/topic/flow.py Tue Jun 04 10:07:08 2019 +0200 +++ b/hgext3rd/topic/flow.py Mon May 27 03:42:35 2019 +0200 @@ -55,6 +55,19 @@ else: repo.ui.warn(_("unknown 'topic-mode.server': %s\n" % mode)) +def reject_publish(repo, tr): + """prevent a transaction to be publish anything""" + published = set() + for r, (o, n) in tr.changes['phases'].items(): + if n == phases.public: + published.add(r) + if published: + r = min(published) + msg = "rejecting publishing of changeset %s" % repo[r] + if len(published) > 1: + msg += ' and %d others' % (len(published) - 1) + raise error.Abort(msg) + def wrappush(orig, repo, remote, *args, **kwargs): """interpret the --publish flag and pass it to the push operation""" newargs = kwargs.copy()