diff --git a/remotefilelog/debugcommands.py b/remotefilelog/debugcommands.py --- a/remotefilelog/debugcommands.py +++ b/remotefilelog/debugcommands.py @@ -6,6 +6,7 @@ # GNU General Public License version 2 or any later version. from __future__ import absolute_import +from collections import defaultdict from mercurial import error, filelog, revlog from mercurial.node import bin, hex, nullid, short from mercurial.i18n import _ @@ -216,9 +217,22 @@ hashlen = 14 lastfilename = None + totaldeltasize = defaultdict(lambda: 0) + totalblobsize = defaultdict(lambda: 0) + def printtotals(filename): + if filename in totaldeltasize or filename in totaldeltasize: + ui.write("Total:%s%s %s\n" % ( + "".ljust(22), + str(totaldeltasize[filename]).ljust(12), + str(totalblobsize[filename]).ljust(9) + )) for filename, node, deltabase, deltalen in dpack.iterentries(): if filename != lastfilename: - ui.write("\n%s\n" % filename) + printtotals(lastfilename) + ui.write("%s%s:\n" % ( + "\n" if lastfilename else "", + '(Root)' if filename == '' else filename + )) ui.write("%s%s%s%s\n" % ( "Node".ljust(hashlen), "Delta Base".ljust(hashlen), @@ -229,6 +243,8 @@ meta = dpack.getmeta(filename, node) if constants.METAKEYSIZE in meta: blobsize = meta[constants.METAKEYSIZE] + totaldeltasize[filename] += deltalen + totalblobsize[filename] += blobsize else: blobsize = "(missing)" ui.write("%s %s %s%s\n" % ( @@ -236,6 +252,9 @@ hashformatter(deltabase), str(deltalen).ljust(14), blobsize)) + if filename: + printtotals(filename) + def dumpdeltachain(ui, deltachain, **opts): hashformatter = hex diff --git a/tests/test-remotefilelog-bgprefetch.t b/tests/test-remotefilelog-bgprefetch.t --- a/tests/test-remotefilelog-bgprefetch.t +++ b/tests/test-remotefilelog-bgprefetch.t @@ -152,23 +152,26 @@ # could only be downloaded by the background prefetch $ hg debugdatapack $TESTTMP/hgcache/master/packs/8299d5a1030f073f4adbb3b6bd2ad3bdcc276df0.datapack - - w + w: Node Delta Base Delta Length Blob Size bb6ccd5dceaa 000000000000 2 2 + Total: 2 2 - x + x: Node Delta Base Delta Length Blob Size ef95c5376f34 000000000000 3 3 1406e7411862 ef95c5376f34 14 2 + Total: 17 5 - y + y: Node Delta Base Delta Length Blob Size 076f5e2225b3 000000000000 2 2 + Total: 2 2 - z + z: Node Delta Base Delta Length Blob Size 69a1b6752270 000000000000 2 2 + Total: 2 2 # background prefetch with repack on commit when wcprevset configured @@ -198,23 +201,26 @@ # could only be downloaded by the background prefetch $ hg debugdatapack $TESTTMP/hgcache/master/packs/8299d5a1030f073f4adbb3b6bd2ad3bdcc276df0.datapack - - w + w: Node Delta Base Delta Length Blob Size bb6ccd5dceaa 000000000000 2 2 + Total: 2 2 - x + x: Node Delta Base Delta Length Blob Size ef95c5376f34 000000000000 3 3 1406e7411862 ef95c5376f34 14 2 + Total: 17 5 - y + y: Node Delta Base Delta Length Blob Size 076f5e2225b3 000000000000 2 2 + Total: 2 2 - z + z: Node Delta Base Delta Length Blob Size 69a1b6752270 000000000000 2 2 + Total: 2 2 # background prefetch with repack on rebase when wcprevset configured @@ -236,23 +242,26 @@ # could only be downloaded by the background prefetch $ hg debugdatapack $TESTTMP/hgcache/master/packs/8299d5a1030f073f4adbb3b6bd2ad3bdcc276df0.datapack - - w + w: Node Delta Base Delta Length Blob Size bb6ccd5dceaa 000000000000 2 2 + Total: 2 2 - x + x: Node Delta Base Delta Length Blob Size ef95c5376f34 000000000000 3 3 1406e7411862 ef95c5376f34 14 2 + Total: 17 5 - y + y: Node Delta Base Delta Length Blob Size 076f5e2225b3 000000000000 2 2 + Total: 2 2 - z + z: Node Delta Base Delta Length Blob Size 69a1b6752270 000000000000 2 2 + Total: 2 2 # Check that foregound prefetch with no arguments blocks until background prefetches finish @@ -277,23 +286,26 @@ # Ensure that files were prefetched $ hg debugdatapack $TESTTMP/hgcache/master/packs/8299d5a1030f073f4adbb3b6bd2ad3bdcc276df0.datapack - - w + w: Node Delta Base Delta Length Blob Size bb6ccd5dceaa 000000000000 2 2 + Total: 2 2 - x + x: Node Delta Base Delta Length Blob Size ef95c5376f34 000000000000 3 3 1406e7411862 ef95c5376f34 14 2 + Total: 17 5 - y + y: Node Delta Base Delta Length Blob Size 076f5e2225b3 000000000000 2 2 + Total: 2 2 - z + z: Node Delta Base Delta Length Blob Size 69a1b6752270 000000000000 2 2 + Total: 2 2 # Check that foreground prefetch fetches revs specified by '. + draft() + bgprefetchrevs + pullprefetch' @@ -315,23 +327,26 @@ # Ensure that files were prefetched $ hg debugdatapack $TESTTMP/hgcache/master/packs/8299d5a1030f073f4adbb3b6bd2ad3bdcc276df0.datapack - - w + w: Node Delta Base Delta Length Blob Size bb6ccd5dceaa 000000000000 2 2 + Total: 2 2 - x + x: Node Delta Base Delta Length Blob Size ef95c5376f34 000000000000 3 3 1406e7411862 ef95c5376f34 14 2 + Total: 17 5 - y + y: Node Delta Base Delta Length Blob Size 076f5e2225b3 000000000000 2 2 + Total: 2 2 - z + z: Node Delta Base Delta Length Blob Size 69a1b6752270 000000000000 2 2 + Total: 2 2 # Test that if data was prefetched and repacked we dont need to prefetch it again # It ensures that Mercurial looks not only in loose files but in packs as well diff --git a/tests/test-remotefilelog-gcrepack.t b/tests/test-remotefilelog-gcrepack.t --- a/tests/test-remotefilelog-gcrepack.t +++ b/tests/test-remotefilelog-gcrepack.t @@ -51,15 +51,16 @@ # Ensure that all file versions were prefetched $ hg debugdatapack $TESTTMP/hgcache/master/packs/f7a942a6e4673d2c7b697fdd926ca2d153831ca4.datapack - - x + x: Node Delta Base Delta Length Blob Size 1406e7411862 000000000000 2 2 + Total: 2 2 - y + y: Node Delta Base Delta Length Blob Size 50dbc4572b8e 000000000000 3 3 076f5e2225b3 50dbc4572b8e 14 2 + Total: 17 5 # Test garbage collection during repack @@ -82,10 +83,10 @@ # and is old (commit date is 0.0 in tests). Ensure that file 'y' is present as it is in the keepset. $ hg debugdatapack $TESTTMP/hgcache/master/packs/05baa499c6b07f2bf0ea3d2c8151da1cb86f5e33.datapack - - y + y: Node Delta Base Delta Length Blob Size 50dbc4572b8e 000000000000 3 3 + Total: 3 3 # Prefetch all data again and repack for later garbage collection @@ -107,15 +108,16 @@ # Ensure that all file versions were prefetched $ hg debugdatapack $TESTTMP/hgcache/master/packs/f7a942a6e4673d2c7b697fdd926ca2d153831ca4.datapack - - x + x: Node Delta Base Delta Length Blob Size 1406e7411862 000000000000 2 2 + Total: 2 2 - y + y: Node Delta Base Delta Length Blob Size 50dbc4572b8e 000000000000 3 3 076f5e2225b3 50dbc4572b8e 14 2 + Total: 17 5 # Test garbage collection during repack. Ensure that new files are not removed even though they are not in the keepset # For the purposes of the test the TTL of a file is set to current time + 100 seconds. i.e. all commits in tests have @@ -138,12 +140,13 @@ # Ensure that all file versions were prefetched $ hg debugdatapack $TESTTMP/hgcache/master/packs/f7a942a6e4673d2c7b697fdd926ca2d153831ca4.datapack - - x + x: Node Delta Base Delta Length Blob Size 1406e7411862 000000000000 2 2 + Total: 2 2 - y + y: Node Delta Base Delta Length Blob Size 50dbc4572b8e 000000000000 3 3 076f5e2225b3 50dbc4572b8e 14 2 + Total: 17 5 diff --git a/tests/test-remotefilelog-repack-fast.t b/tests/test-remotefilelog-repack-fast.t --- a/tests/test-remotefilelog-repack-fast.t +++ b/tests/test-remotefilelog-repack-fast.t @@ -153,19 +153,19 @@ # Test debug commands $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e03 000000000000 8 8 d4a3ed9310e5 1bb2e6237e03 12 6 aee31534993a d4a3ed9310e5 12 4 + Total: 32 18 $ hg debugdatapack --long $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e035c8f8ef508e281f1ce075bc6db72 0000000000000000000000000000000000000000 8 8 d4a3ed9310e5bd9887e3bf779da5077efab28216 1bb2e6237e035c8f8ef508e281f1ce075bc6db72 12 6 aee31534993a501858fb6dd96a065671922e7d51 d4a3ed9310e5bd9887e3bf779da5077efab28216 12 4 + Total: 32 18 $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack --node d4a3ed9310e5bd9887e3bf779da5077efab28216 x @@ -247,16 +247,17 @@ $ rm -rf $CACHEDIR/master/packs/*hist* $ hg repack $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e03 000000000000 8 8 aee31534993a 000000000000 4 4 d4a3ed9310e5 000000000000 6 6 + Total: 18 18 - y + y: Node Delta Base Delta Length Blob Size 577959738234 000000000000 70 8 + Total: 70 8 $ hg cat -r ".^" x x diff --git a/tests/test-remotefilelog-repack.t b/tests/test-remotefilelog-repack.t --- a/tests/test-remotefilelog-repack.t +++ b/tests/test-remotefilelog-repack.t @@ -148,19 +148,19 @@ # Test debug commands $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e03 000000000000 8 8 d4a3ed9310e5 1bb2e6237e03 12 6 aee31534993a d4a3ed9310e5 12 4 + Total: 32 18 $ hg debugdatapack --long $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e035c8f8ef508e281f1ce075bc6db72 0000000000000000000000000000000000000000 8 8 d4a3ed9310e5bd9887e3bf779da5077efab28216 1bb2e6237e035c8f8ef508e281f1ce075bc6db72 12 6 aee31534993a501858fb6dd96a065671922e7d51 d4a3ed9310e5bd9887e3bf779da5077efab28216 12 4 + Total: 32 18 $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack --node d4a3ed9310e5bd9887e3bf779da5077efab28216 x @@ -242,16 +242,17 @@ $ rm -rf $CACHEDIR/master/packs/*hist* $ hg repack $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.datapack - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e03 000000000000 8 8 aee31534993a 000000000000 4 4 d4a3ed9310e5 000000000000 6 6 + Total: 18 18 - y + y: Node Delta Base Delta Length Blob Size 577959738234 000000000000 70 8 + Total: 70 8 $ hg cat -r ".^" x x @@ -384,14 +385,15 @@ Test limiting the max delta chain length $ hg repack --config packs.maxchainlen=1 $ hg debugdatapack $TESTTMP/hgcache/master/packs/*.dataidx - - x + x: Node Delta Base Delta Length Blob Size 1bb2e6237e03 000000000000 8 8 d4a3ed9310e5 1bb2e6237e03 12 6 aee31534993a 000000000000 4 4 1406e7411862 aee31534993a 12 2 + Total: 36 20 - y + y: Node Delta Base Delta Length Blob Size 577959738234 000000000000 8 8 + Total: 8 8 diff --git a/tests/test-treemanifest-repack.t b/tests/test-treemanifest-repack.t --- a/tests/test-treemanifest-repack.t +++ b/tests/test-treemanifest-repack.t @@ -43,17 +43,15 @@ > hg debugdatapack "$i" > done $TESTTMP/hgcache/master/packs/manifests/65df85879cdd898607ee3f323a0b61edc7de25b8.datapack - - + (Root): Node Delta Base Delta Length Blob Size a0c8bcbbb45c 000000000000 43 (missing) $TESTTMP/hgcache/master/packs/manifests/bb55d9105672c45d4f82df15bd091a555ef02c79.datapack - - dir + dir: Node Delta Base Delta Length Blob Size 23226e7a252c 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 1832e0765de9 000000000000 89 (missing) @@ -85,15 +83,15 @@ -r--r--r-- 262 7535b6084226436bbdff33043969e7fa963e8428.histpack $ hg debugdatapack $CACHEDIR/master/packs/manifests/*.datapack - - + (Root): Node Delta Base Delta Length Blob Size 1832e0765de9 000000000000 89 89 a0c8bcbbb45c 1832e0765de9 12 43 - - dir + Total: 101 132 + dir: Node Delta Base Delta Length Blob Size 23226e7a252c 000000000000 43 43 + Total: 43 43 $ hg debughistorypack $CACHEDIR/master/packs/manifests/*.histpack @@ -187,15 +185,15 @@ 7535b6084226436bbdff33043969e7fa963e8428.histidx 7535b6084226436bbdff33043969e7fa963e8428.histpack $ hg debugdatapack .hg/cache/packs/manifests/*.datapack - - + (Root): Node Delta Base Delta Length Blob Size 1832e0765de9 000000000000 89 89 a0c8bcbbb45c 1832e0765de9 12 43 - - dir + Total: 101 132 + dir: Node Delta Base Delta Length Blob Size 23226e7a252c 000000000000 43 43 + Total: 43 43 Test incremental revlog repacking # 1. Make commit that we'll need to repack @@ -226,11 +224,11 @@ $ rm -rf .hg/cache/packs/manifests $ hg repack --incremental --config treemanifest.repackstartrev=1 --config treemanifest.repackendrev=1 $ hg debugdatapack .hg/cache/packs/manifests/*.datapack - - + (Root): Node Delta Base Delta Length Blob Size 1832e0765de9 000000000000 89 89 - - dir + Total: 89 89 + dir: Node Delta Base Delta Length Blob Size 23226e7a252c 000000000000 43 43 + Total: 43 43 diff --git a/tests/test-treemanifest-server.t b/tests/test-treemanifest-server.t --- a/tests/test-treemanifest-server.t +++ b/tests/test-treemanifest-server.t @@ -48,22 +48,20 @@ 2 trees fetched over * (glob) $ hg debugdatapack $CACHEDIR/master/packs/manifests/*.dataidx - - subdir + subdir: Node Delta Base Delta Length Blob Size bc0c2c938b92 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 85b359fdb09e 000000000000 49 (missing) $ hg debugdatapack .hg/store/packs/manifests/*.dataidx - - subdir2 + subdir2: Node Delta Base Delta Length Blob Size ddb35f099a64 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 54cbf534b62b 000000000000 99 (missing) diff --git a/tests/test-treemanifest.t b/tests/test-treemanifest.t --- a/tests/test-treemanifest.t +++ b/tests/test-treemanifest.t @@ -59,16 +59,14 @@ -r--r--r-- 265 ed1a27864c5d25f144a51961ad6e79088f2a7571.histpack $ hg debugdatapack $CACHEDIR/master/packs/manifests/678f597a73b2b96f2e120c84ef8a84069a250266 - - + (Root): Node Delta Base Delta Length Blob Size bc0c2c938b92 000000000000 43 (missing) - - subdir + subdir: Node Delta Base Delta Length Blob Size ddb35f099a64 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 70f2c6726cec bc0c2c938b92 61 (missing) @@ -83,12 +81,11 @@ -r--r--r-- 1106 a7f7e084adff88a01cf76909345be1e56ee704a9.dataidx -r--r--r-- 254 a7f7e084adff88a01cf76909345be1e56ee704a9.datapack $ hg debugdatapack .hg/store/packs/manifests/a7f7e084adff88a01cf76909345be1e56ee704a9 - - subdir + subdir: Node Delta Base Delta Length Blob Size ac728a786423 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 7a911436836f 000000000000 92 (missing) @@ -119,20 +116,18 @@ 3:0d05c20bb7eb 4:8289b85c6a30 $ hg debugdatapack .hg/store/packs/manifests/5a5fb42e99986c90ac86b57d184561c44238b7b7.datapack - - subdir + subdir: Node Delta Base Delta Length Blob Size a4e2f032ee0f 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 0d05c20bb7eb 000000000000 92 (missing) - - subdir + subdir: Node Delta Base Delta Length Blob Size ad0a48a2ec1e 000000000000 43 (missing) - + (Root): Node Delta Base Delta Length Blob Size 8289b85c6a30 000000000000 92 (missing)