Mercurial > evolve
diff hgext3rd/topic/__init__.py @ 5453:7f80558c9b8d stable
topic: treat argument to --topic as a literal topic name explicitly
We already do treat it as a string (i.e. not a special revset language symbol)
that needs to be escaped, because we use %s in repo.revs(), which escapes and
single-quotes the appropriate argument. But now we abort in case user supplies
topic name that doesn't exist.
Before this patch, when user ran something like `hg push --topic .`, this code
would use 'topic(".") - obsolete()' revset, which would get an empty set from
repo.revs() unless there was a topic named "." (unlikely, because this name is
reserved). This code would then add an empty set to the 'rev' argument of the
original hg push command. And `hg push` without -r will try and push
everything, and not just changesets on a specific topic.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 11 Jun 2020 18:50:29 +0800 |
parents | c2eea89b3f74 |
children | 60317988f5ae |
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py Mon Jul 27 12:53:53 2020 +0800 +++ b/hgext3rd/topic/__init__.py Thu Jun 11 18:50:29 2020 +0800 @@ -1269,7 +1269,8 @@ def pushoutgoingwrap(orig, ui, repo, *args, **opts): if opts.get('topic'): - topicrevs = repo.revs(b'topic(%s) - obsolete()', opts['topic']) + topic = b'literal:' + opts['topic'] + topicrevs = repo.revs(b'topic(%s) - obsolete()', topic) opts.setdefault('rev', []).extend(topicrevs) return orig(ui, repo, *args, **opts)