[PATCH v3 1/3] reftable/stack: add env to disable autocompaction
From: Justin Tobler via GitGitGadget <hidden>
Date: 2024-03-29 04:16:55
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Justin Tobler <redacted> In future tests it will be neccesary to create repositories with a set number of tables. To make this easier, introduce the `GIT_TEST_REFTABLE_NO_AUTOCOMPACTION` environment variable that, when set, disables autocompaction of reftables. Signed-off-by: Justin Tobler <redacted> --- reftable/stack.c | 2 +- reftable/system.h | 1 + t/t0610-reftable-basics.sh | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/reftable/stack.c b/reftable/stack.c
index 1ecf1b9751c..07262beaaf7 100644
--- a/reftable/stack.c
+++ b/reftable/stack.c@@ -681,7 +681,7 @@ int reftable_addition_commit(struct reftable_addition *add) if (err) goto done; - if (!add->stack->disable_auto_compact) + if (!add->stack->disable_auto_compact && !git_env_bool("GIT_TEST_REFTABLE_NO_AUTOCOMPACTION", 0)) err = reftable_stack_auto_compact(add->stack); done:
diff --git a/reftable/system.h b/reftable/system.h
index 5d8b6dede50..05b7c8554af 100644
--- a/reftable/system.h
+++ b/reftable/system.h@@ -17,6 +17,7 @@ license that can be found in the LICENSE file or at #include "tempfile.h" #include "hash-ll.h" /* hash ID, sizes.*/ #include "dir.h" /* remove_dir_recursively, for tests.*/ +#include "parse.h" int hash_size(uint32_t id);
diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh
index 686781192eb..434044078ed 100755
--- a/t/t0610-reftable-basics.sh
+++ b/t/t0610-reftable-basics.sh@@ -299,6 +299,21 @@ test_expect_success 'ref transaction: writes cause auto-compaction' ' test_line_count = 1 repo/.git/reftable/tables.list ' +test_expect_success 'ref transaction: environment variable disables auto-compaction' ' + test_when_finished "rm -rf repo" && + + git init repo && + test_commit -C repo A && + for i in $(test_seq 20) + do + GIT_TEST_REFTABLE_NO_AUTOCOMPACTION=true git -C repo update-ref branch-$i HEAD || return 1 + done && + test_line_count = 23 repo/.git/reftable/tables.list && + + git -C repo update-ref foo HEAD && + test_line_count = 1 repo/.git/reftable/tables.list +' + check_fsync_events () { local trace="$1" && shift &&
--
gitgitgadget