##// END OF EJS Templates
debugobsolete: also issue the "new obsmarkers" messsage...
debugobsolete: also issue the "new obsmarkers" messsage We are going to improve the way this message is issued in the core codebase. This will make it appears for `hg debugobsolete` too. Since this seems like a good idea, we make the output change in a previous changesets to clarify the next changeset.

File last commit:

r39719:337d6e0f default
r43163:34a46d48 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')
Gregory Szorc
transaction: make report a private attribute...
r39719 tr._report = lambda x: 0 # hide "transaction abort"
Jun Wu
test-rebase: add a brute force test...
r33674
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()