From 74d1aa14ac19d278720e0326c5fd18cf47d2553e Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 20 Jun 2019 14:39:36 -0500 Subject: [PATCH] gitrange(): general refactoring To make the code more readable. No functional changes. Signed-off-by: Felipe Contreras --- git-remote-hg | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/git-remote-hg b/git-remote-hg index 4d15fa4..c273c95 100755 --- a/git-remote-hg +++ b/git-remote-hg @@ -477,25 +477,29 @@ def gitrange(repo, a, b): return [] pfunc = repo.changelog.parentrevs + it = iter(xrange(b.rev(), -1, -1)) positive = [] pending = set([b.rev()]) negative = set([a.rev()]) - for cur in xrange(b.rev(), -1, -1): - if not pending: - break - parents = [p for p in pfunc(cur) if p >= 0] + def get_parents(rev): + for p in pfunc(rev): + if p == -1: continue + yield p + + while pending: + cur = it.next() if cur in negative: negative.remove(cur) - for p in parents: + for p in get_parents(cur): negative.add(p) pending.discard(p) elif cur in pending: positive.append(cur) pending.remove(cur) - for p in parents: + for p in get_parents(cur): if p not in negative: pending.add(p)