[PATCH 1 of 3] clfilter: use changelog to iterate over the repo in branchpoint

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Mon Oct 15 10:46:15 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1350315760 -7200
# Node ID c3eb9666d9fb25fa7c23410075390923e587ba9d
# Parent  9837cafc25b10c51659b65b5971622eab0bc9197
clfilter: use changelog to iterate over the repo in branchpoint

Otherwise filtered changesets may cause false positives in `branchpoint()`.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -927,11 +927,11 @@ def branchpoint(repo, subset, x):
     cl = repo.changelog
     if not subset:
         return []
     baserev = min(subset)
     parentscount = [0]*(len(repo) - baserev)
-    for r in xrange(baserev + 1, len(repo)):
+    for r in cl.revs(start=baserev + 1):
         for p in cl.parentrevs(r):
             if p >= baserev:
                 parentscount[p - baserev] += 1
     branchpoints = set((baserev + i) for i in xrange(len(parentscount))
                        if parentscount[i] > 1)


More information about the Mercurial-devel mailing list