comparison mercurial/hbisect.py @ 9583:0491be4448bf

bisect: limit considered set to descendants of first good rev
author Matt Mackall <mpm@selenic.com>
date Mon, 12 Oct 2009 14:59:28 -0500
parents fc27c91fff2c
children 25e572394f5c
comparison
equal deleted inserted replaced
9582:a25af3af941c 9583:0491be4448bf
29 29
30 def buildancestors(bad, good): 30 def buildancestors(bad, good):
31 # only the earliest bad revision matters 31 # only the earliest bad revision matters
32 badrev = min([changelog.rev(n) for n in bad]) 32 badrev = min([changelog.rev(n) for n in bad])
33 goodrevs = [changelog.rev(n) for n in good] 33 goodrevs = [changelog.rev(n) for n in good]
34 # build ancestors array 34 goodrev = min(goodrevs)
35 ancestors = [[]] * (len(changelog) + 1) # an extra for [-1] 35 # build visit array
36 ancestors = [None] * (len(changelog) + 1) # an extra for [-1]
37
38 # set nodes descended from goodrev
39 ancestors[goodrev] = []
40 for rev in xrange(goodrev + 1, len(changelog)):
41 for prev in clparents(rev):
42 if ancestors[prev] == []:
43 ancestors[rev] = []
36 44
37 # clear good revs from array 45 # clear good revs from array
38 for node in goodrevs: 46 for node in goodrevs:
39 ancestors[node] = None 47 ancestors[node] = None
40 for rev in xrange(len(changelog), -1, -1): 48 for rev in xrange(len(changelog), -1, -1):