[PATCH 6 of 6] shrink-revlog: add accounting of suboptimal nodes to the new algorithms
Greg Ward
greg-hg at gerg.ca
Sun Mar 7 12:58:01 CST 2010
# HG changeset patch
# User Greg Ward <greg-hg at gerg.ca>
# Date 1267986674 18000
# Node ID b4cdb9640896067683af279ae67c4923342e03b8
# Parent 387ca8b2956255b86c653e9bb0ead2f1e0b9a5bc
shrink-revlog: add accounting of suboptimal nodes to the new algorithms.
diff --git a/contrib/shrink-revlog.py b/contrib/shrink-revlog.py
--- a/contrib/shrink-revlog.py
+++ b/contrib/shrink-revlog.py
@@ -181,6 +181,7 @@
visit = list(heads)
visit.sort(reverse=True)
finished = set()
+ suboptimal = 0
while visit:
cur = visit[-1]
@@ -189,9 +190,17 @@
visit.append(p)
break
else:
+ curparents = rl.parentrevs(curr)
+ if result and result[-1] != curparents[0]:
+ suboptimal += 1
+
result.append(cur)
finished.add(cur)
visit.pop()
+
+ ui.write('\n')
+ ui.write('%d suboptimal\n' % suboptimal)
+
return result
def toposort_postorderreverse(ui, rl):
@@ -218,11 +227,13 @@
finally:
ui.write('\n')
- ui.write('sorting ...\n')
+ ui.write('sorting ...')
result = []
visit = list(roots)
visit.sort()
finished = set()
+ suboptimal = 0
+
while visit:
cur = visit[-1]
for p in children[cur]:
@@ -230,9 +241,20 @@
visit.append(p)
break
else:
+ # if cur is not the first parent of its successor, then the
+ # successor is a suboptimal node
+ if result:
+ succparents = rl.parentrevs(result[-1])
+ if succparents[0] != curr:
+ suboptimal += 1
+
result.append(cur)
finished.add(cur)
visit.pop()
+
+ ui.write('\n')
+ ui.write('%d suboptimal\n' % suboptimal)
+
result.reverse()
return result
More information about the Mercurial-devel
mailing list