From cc2649ae2dac565202bb9041cbb54b29e9f501b3 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 31 Jul 2019 01:37:36 -0400 Subject: t7700: clean up .keep file in bitmap-writing test After our test snippet finishes, the .keep file is left in place, making it hard to do further tests of the auto-bitmap-writing code (since it suppresses the feature completely). Let's clean it up. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t7700-repack.sh | 1 + 1 file changed, 1 insertion(+) (limited to 't/t7700-repack.sh') diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 0e9af832c9..8d9a358df8 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -243,6 +243,7 @@ test_expect_success 'no bitmaps created if .keep files present' ' pack=$(ls bare.git/objects/pack/*.pack) && test_path_is_file "$pack" && keep=${pack%.pack}.keep && + test_when_finished "rm -f \"\$keep\"" && >"$keep" && git -C bare.git repack -ad && find bare.git/objects/pack/ -type f -name "*.bitmap" >actual && -- cgit v1.2.3 From 25575015cafbbb8554ff6ac82236c2a062055ae6 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 31 Jul 2019 01:39:27 -0400 Subject: repack: silence warnings when auto-enabled bitmaps cannot be built Depending on various config options, a full repack may not be able to build a reachability bitmap index (e.g., if pack.packSizeLimit forces us to write multiple packs). In these cases pack-objects may write a warning to stderr. Since 36eba0323d (repack: enable bitmaps by default on bare repos, 2019-03-14), we may generate these warnings even when the user did not explicitly ask for bitmaps. This has two downsides: - it can be confusing, if they don't know what bitmaps are - a daemonized auto-gc will write this to its log file, and the presence of the warning may suppress further auto-gc (until gc.logExpiry has elapsed) Let's have repack communicate to pack-objects that the choice to turn on bitmaps was not made explicitly by the user, which in turn allows pack-objects to suppress these warnings. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t7700-repack.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 't/t7700-repack.sh') diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 8d9a358df8..54f815b8b9 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -250,4 +250,15 @@ test_expect_success 'no bitmaps created if .keep files present' ' test_must_be_empty actual ' +test_expect_success 'auto-bitmaps do not complain if unavailable' ' + test_config -C bare.git pack.packSizeLimit 1M && + blob=$(test-tool genrandom big $((1024*1024)) | + git -C bare.git hash-object -w --stdin) && + git -C bare.git update-ref refs/tags/big $blob && + git -C bare.git repack -ad 2>stderr && + test_must_be_empty stderr && + find bare.git/objects/pack -type f -name "*.bitmap" >actual && + test_must_be_empty actual +' + test_done -- cgit v1.2.3 From 7ff024e7b3d576fc265dbdd1a7bd3dcc6dde1eb6 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 31 Jul 2019 01:40:56 -0400 Subject: repack: simplify handling of auto-bitmaps and .keep files Commit 7328482253 (repack: disable bitmaps-by-default if .keep files exist, 2019-06-29) taught repack to prefer disabling bitmaps to duplicating objects (unless bitmaps were asked for explicitly). But there's an easier way to do this: if we keep passing the --honor-pack-keep flag to pack-objects when auto-enabling bitmaps, then pack-objects already makes the same decision (it will disable bitmaps rather than duplicate). Better still, pack-objects can actually decide to do so based not just on the presence of a .keep file, but on whether that .keep file actually impacts the new pack we're making (so if we're racing with a push or fetch, for example, their temporary .keep file will not block us from generating bitmaps if they haven't yet updated their refs). And because repack uses the --write-bitmap-index-quiet flag, we don't have to worry about pack-objects generating confusing warnings when it does see a .keep file. We can confirm this by tweaking the .keep test to check repack's stderr. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t7700-repack.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 't/t7700-repack.sh') diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 54f815b8b9..4e855bc21b 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -245,7 +245,8 @@ test_expect_success 'no bitmaps created if .keep files present' ' keep=${pack%.pack}.keep && test_when_finished "rm -f \"\$keep\"" && >"$keep" && - git -C bare.git repack -ad && + git -C bare.git repack -ad 2>stderr && + test_must_be_empty stderr && find bare.git/objects/pack/ -type f -name "*.bitmap" >actual && test_must_be_empty actual ' -- cgit v1.2.3