diff tests/test-debugcommands.t @ 23255:76effa770ff9

revlog: add config variable for limiting delta-chain length The current heuristic for deciding between storing delta and full texts is based on ratio of (sizeofdeltas)/(sizeoffulltext). In some cases (for example a manifest for ahuge repo) this approach can result in extremely long delta chains (~30,000) which are very slow to read. (In the case of a manifest ~500ms are added to every hg command because of that). This commit introduces "revlog.maxchainlength" configuration variable that will limit delta chain length.
author Mateusz Kwapich <mitrandir@fb.com>
date Thu, 06 Nov 2014 14:20:05 -0800
parents 01df3660eb11
children 1c11393d5dfb
line wrap: on
line diff
--- a/tests/test-debugcommands.t	Thu Nov 06 14:08:25 2014 -0800
+++ b/tests/test-debugcommands.t	Thu Nov 06 14:20:05 2014 -0800
@@ -24,6 +24,40 @@
   full revision size (min/max/avg)     : 44 / 44 / 44
   delta size (min/max/avg)             : 0 / 0 / 0
 
+Test max chain len
+  $ cat >> $HGRCPATH << EOF
+  > [revlog]
+  > maxchainlen=4
+  > EOF
+
+  $ echo "This test checks if maxchainlen config value is respected also it can serve as basic test for debugrevlog -d <file>.\n" >> a
+  $ hg ci -m a
+  $ echo "b\n" >> a
+  $ hg ci -m a
+  $ echo "c\n" >> a
+  $ hg ci -m a
+  $ echo "d\n" >> a
+  $ hg ci -m a
+  $ echo "e\n" >> a
+  $ hg ci -m a
+  $ echo "f\n" >> a
+  $ hg ci -m a
+  $ echo 'g\n' >> a
+  $ hg ci -m a
+  $ echo 'h\n' >> a
+  $ hg ci -m a
+  $ hg debugrevlog -d a
+  # rev p1rev p2rev start   end deltastart base   p1   p2 rawsize totalsize compression heads chainlen
+      0    -1    -1     0   ???          0    0    0    0     ???      ????           ?     1        0 (glob)
+      1     0    -1   ???   ???          0    0    0    0     ???      ????           ?     1        1 (glob)
+      2     1    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        2 (glob)
+      3     2    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        3 (glob)
+      4     3    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        4 (glob)
+      5     4    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        0 (glob)
+      6     5    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        1 (glob)
+      7     6    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        2 (glob)
+      8     7    -1   ???   ???        ???  ???  ???    0     ???      ????           ?     1        3 (glob)
+  $ cd ..
 
 Test internal debugstacktrace command