##// END OF EJS Templates
dispatch: don't show list of commands on bogus command...
dispatch: don't show list of commands on bogus command If a command is ambiguous, you get this: $ hg ve hg: command 've' is ambiguous: verify version [255] If you typo a command, you get this: $ hg comit hg: unknown command 'comit' (did you mean one of commit, incoming, mycommit?) [255] But if you completely mistype a command so it no longer looks like any existing commands, you get a full list of commands. That might be useful the first time you use Mercurial, but after that it's probably more annoying than help, especially if you have the pager enabled and have a short terminal. Let's instead give a short hint telling the user to run `hg help` for more help. Differential Revision: https://phab.mercurial-scm.org/D4024

File last commit:

r36497:3b98ffd2 default
r38810:81fb4421 default
Show More
bruterebase.py
74 lines | 2.2 KiB | text/x-python | PythonLexer
Jun Wu
test-rebase: add a brute force test...
r33674 # bruterebase.py - brute force rebase testing
#
# Copyright 2017 Facebook, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from mercurial import (
error,
registrar,
revsetlang,
)
from hgext import rebase
Augie Fackler
bruterebase: port to python 3
r34201 try:
xrange
except NameError:
xrange = range
Jun Wu
test-rebase: add a brute force test...
r33674 cmdtable = {}
command = registrar.command(cmdtable)
Augie Fackler
bruterebase: port to python 3
r34201 @command(b'debugbruterebase')
Jun Wu
test-rebase: add a brute force test...
r33674 def debugbruterebase(ui, repo, source, dest):
"""for every non-empty subset of source, run rebase -r subset -d dest
Print one line summary for each subset. Assume obsstore is enabled.
"""
srevs = list(repo.revs(source))
with repo.wlock(), repo.lock():
repolen = len(repo)
cl = repo.changelog
def getdesc(rev):
result = cl.changelogrevision(rev).description
if rev >= repolen:
Augie Fackler
bruterebase: port to python 3
r34201 result += b"'"
Jun Wu
test-rebase: add a brute force test...
r33674 return result
for i in xrange(1, 2 ** len(srevs)):
subset = [rev for j, rev in enumerate(srevs) if i & (1 << j) != 0]
Augie Fackler
bruterebase: port to python 3
r34201 spec = revsetlang.formatspec(b'%ld', subset)
tr = repo.transaction(b'rebase')
Jun Wu
test-rebase: add a brute force test...
r33674 tr.report = lambda x: 0 # hide "transaction abort"
ui.pushbuffer()
try:
rebase.rebase(ui, repo, dest=dest, rev=[spec])
except error.Abort as ex:
Augie Fackler
bruterebase: port to python 3
r34201 summary = b'ABORT: %s' % ex
Jun Wu
test-rebase: add a brute force test...
r33674 except Exception as ex:
Augie Fackler
bruterebase: port to python 3
r34201 summary = b'CRASH: %s' % ex
Jun Wu
test-rebase: add a brute force test...
r33674 else:
# short summary about new nodes
cl = repo.changelog
descs = []
for rev in xrange(repolen, len(repo)):
Augie Fackler
bruterebase: port to python 3
r34201 desc = b'%s:' % getdesc(rev)
Jun Wu
test-rebase: add a brute force test...
r33674 for prev in cl.parentrevs(rev):
if prev > -1:
desc += getdesc(prev)
descs.append(desc)
descs.sort()
Pulkit Goyal
py3: add a missing b'' in tests/bruterebase.py...
r36497 summary = b' '.join(descs)
Jun Wu
test-rebase: add a brute force test...
r33674 ui.popbuffer()
Augie Fackler
bruterebase: port to python 3
r34201 repo.vfs.tryunlink(b'rebasestate')
Jun Wu
test-rebase: add a brute force test...
r33674
Augie Fackler
bruterebase: port to python 3
r34201 subsetdesc = b''.join(getdesc(rev) for rev in subset)
ui.write((b'%s: %s\n') % (subsetdesc.rjust(len(srevs)), summary))
Jun Wu
test-rebase: add a brute force test...
r33674 tr.abort()