equal
deleted
inserted
replaced
43 # - track number of interesting revs that might still be on a side |
43 # - track number of interesting revs that might still be on a side |
44 # - track the lowest interesting rev seen |
44 # - track the lowest interesting rev seen |
45 # - quit when interesting revs is zero |
45 # - quit when interesting revs is zero |
46 |
46 |
47 cl = repo.changelog |
47 cl = repo.changelog |
|
48 wdirparents = None |
48 a = ctxa.rev() |
49 a = ctxa.rev() |
49 b = ctxb.rev() |
50 b = ctxb.rev() |
50 if a is None: |
51 if a is None: |
|
52 wdirparents = (ctxa.p1(), ctxa.p2()) |
51 a = node.wdirrev |
53 a = node.wdirrev |
52 if b is None: |
54 if b is None: |
|
55 assert not wdirparents |
|
56 wdirparents = (ctxb.p1(), ctxb.p2()) |
53 b = node.wdirrev |
57 b = node.wdirrev |
54 |
58 |
55 side = {a: -1, b: 1} |
59 side = {a: -1, b: 1} |
56 visit = [-a, -b] |
60 visit = [-a, -b] |
57 heapq.heapify(visit) |
61 heapq.heapify(visit) |
59 limit = node.wdirrev |
63 limit = node.wdirrev |
60 |
64 |
61 while interesting: |
65 while interesting: |
62 r = -heapq.heappop(visit) |
66 r = -heapq.heappop(visit) |
63 if r == node.wdirrev: |
67 if r == node.wdirrev: |
64 parents = [cl.rev(p) for p in repo.dirstate.parents()] |
68 parents = [pctx.rev() for pctx in wdirparents] |
65 else: |
69 else: |
66 parents = cl.parentrevs(r) |
70 parents = cl.parentrevs(r) |
67 if parents[1] == node.nullrev: |
71 if parents[1] == node.nullrev: |
68 parents = parents[:1] |
72 parents = parents[:1] |
69 for p in parents: |
73 for p in parents: |