Mercurial > hg
diff mercurial/hbisect.py @ 42310:21eda240be07
bisect: do not crash with rewritten commits
author | timeless <timeless@mozdev.org> |
---|---|
date | Wed, 15 May 2019 10:54:36 -0400 |
parents | 566daffc607d |
children | 2372284d9457 |
line wrap: on
line diff
--- a/mercurial/hbisect.py Wed May 01 09:34:47 2019 -0700 +++ b/mercurial/hbisect.py Wed May 15 10:54:36 2019 -0400 @@ -32,6 +32,7 @@ if searching for a first bad one. """ + repo = repo.unfiltered() changelog = repo.changelog clparents = changelog.parentrevs skip = {changelog.rev(n) for n in state['skip']} @@ -139,7 +140,7 @@ state = {'current': [], 'good': [], 'bad': [], 'skip': []} for l in repo.vfs.tryreadlines("bisect.state"): kind, node = l[:-1].split() - node = repo.lookup(node) + node = repo.unfiltered().lookup(node) if kind not in state: raise error.Abort(_("unknown bisect kind %s") % kind) state[kind].append(node) @@ -184,7 +185,7 @@ """ state = load_state(repo) if status in ('good', 'bad', 'skip', 'current'): - return map(repo.changelog.rev, state[status]) + return map(repo.unfiltered().changelog.rev, state[status]) else: # In the following sets, we do *not* call 'bisect()' with more # than one level of recursion, because that can be very, very @@ -268,6 +269,7 @@ return None def printresult(ui, repo, state, displayer, nodes, good): + repo = repo.unfiltered() if len(nodes) == 1: # narrowed it down to a single revision if good: