Mercurial > evolve
view contrib/hammerclient.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 | f97379faefa3 |
children |
line wrap: on
line source
#!/usr/bin/env python import os import sys import subprocess if len(sys.argv) < 2: execname = os.path.basename(sys.argv[0]) sys.stderr.write("usage: %s CLIENT_ID\n" % execname) client_id = sys.argv[1] subprocess.check_call(['hg', 'branch', "--force", "hammer-branch-%s" % client_id]) while True: subprocess.check_call([ 'hg', 'commit', "--config", "ui.allowemptycommit=yes", "--message", "hammer-%s" % client_id, ]) nodeid = subprocess.check_output([ 'hg', 'log', '--rev', '.', '--template', '{node}' ]) subprocess.check_call([ 'hg', 'debugobsolete', ''.join(reversed(nodeid)), nodeid ]) subprocess.check_call(['hg', 'pull']) subprocess.check_call(['hg', 'push', '--force'])