Skip to content
Snippets Groups Projects
Commit 7f80558c authored by Anton Shestakov's avatar Anton Shestakov
Browse files

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.
parent 31a72d43
No related branches found
No related tags found
2 merge requests!216merge stable->default,!215push --topic fixes, this time on stable
......@@ -14,6 +14,9 @@
* compatibility with Mercurial 5.5
* topic: hg push --topic does-not-exist now doesn't try to push unrelated
changesets and aborts instead
10.0.0 -- 2020-05-09
--------------------
......
......@@ -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)
......
......@@ -192,6 +192,14 @@
|/
o 0 default public CA
$ hg outgoing draft --topic nonexistent
abort: topic 'nonexistent' does not exist!
[255]
$ hg push draft --topic nonexistent
abort: topic 'nonexistent' does not exist!
[255]
$ hg outgoing draft --topic babar
comparing with $TESTTMP/draft
searching for changes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment