debugrevlog: cope with empty revlog files
I have no idea where it came from, but my clone of Mercurial has an
empty filelog for `contrib/hgfixes/__init__.py` - it's *valid*, just
contains no nodes. Without this change, debugrevlog crashes with a
zero division error.
--- a/mercurial/commands.py Fri Oct 23 21:27:29 2015 +0200
+++ b/mercurial/commands.py Fri Oct 23 11:04:53 2015 -0400
@@ -3037,7 +3037,9 @@
totalsize = fulltotal + deltatotal
avgchainlen = sum(chainlengths) / numrevs
maxchainlen = max(chainlengths)
- compratio = totalrawsize / totalsize
+ compratio = 1
+ if totalsize:
+ compratio = totalrawsize / totalsize
basedfmtstr = '%%%dd\n'
basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n'
@@ -3048,7 +3050,10 @@
return basepcfmtstr % (len(str(max)), ' ' * padding)
def pcfmt(value, total):
- return (value, 100 * float(value) / total)
+ if total:
+ return (value, 100 * float(value) / total)
+ else:
+ return value, 100.0
ui.write(('format : %d\n') % format)
ui.write(('flags : %s\n') % ', '.join(flags))