[PATCH STABLE] debugrevlog: handle numrevs == numfull case (issue3537)

Patrick Mezard patrick at mezard.eu
Wed Jul 11 05:00:53 CDT 2012


# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1342000362 -7200
# Branch stable
# Node ID 1d58855f4ab5d2a8c25b9bd2d1d2db06971d7976
# Parent  b3f005d3105aa3c771051862d150462872bce522
debugrevlog: handle numrevs == numfull case (issue3537)

Instead of tracing back with a ZeroDivisionError.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2175,6 +2175,11 @@
             elif delta != nullrev:
                 numother += 1
 
+    # Adjust size min value for empty cases
+    for size in (datasize, fullsize, deltasize):
+        if size[0] is None:
+            size[0] = 0
+
     numdeltas = numrevs - numfull
     numoprev = numprev - nump1prev - nump2prev
     totalrawsize = datasize[2]
@@ -2182,7 +2187,8 @@
     fulltotal = fullsize[2]
     fullsize[2] /= numfull
     deltatotal = deltasize[2]
-    deltasize[2] /= numrevs - numfull
+    if numrevs - numfull > 0:
+        deltasize[2] /= numrevs - numfull
     totalsize = fulltotal + deltatotal
     avgchainlen = sum(chainlengths) / numrevs
     compratio = totalrawsize / totalsize
diff --git a/tests/test-debugcommands.t b/tests/test-debugcommands.t
new file mode 100644
--- /dev/null
+++ b/tests/test-debugcommands.t
@@ -0,0 +1,25 @@
+  $ hg init debugrevlog
+  $ cd debugrevlog
+  $ echo a > a
+  $ hg ci -Am adda
+  adding a
+  $ hg debugrevlog -m
+  format : 1
+  flags  : inline
+  
+  revisions     :  1
+      merges    :  0 ( 0.00%)
+      normal    :  1 (100.00%)
+  revisions     :  1
+      full      :  1 (100.00%)
+      deltas    :  0 ( 0.00%)
+  revision size : 44
+      full      : 44 (100.00%)
+      deltas    :  0 ( 0.00%)
+  
+  avg chain length  : 0
+  compression ratio : 0
+  
+  uncompressed data size (min/max/avg) : 43 / 43 / 43
+  full revision size (min/max/avg)     : 44 / 44 / 44
+  delta size (min/max/avg)             : 0 / 0 / 0


More information about the Mercurial-devel mailing list