Re: [PATCH v7 6/6] refs: add GIT_REFERENCE_BACKEND to specify reference backend
From: Patrick Steinhardt <hidden>
Date: 2026-02-19 15:35:59
On Thu, Feb 19, 2026 at 10:38:25AM +0100, Karthik Nayak wrote:
quoted hunk ↗ jump to hunk
diff --git a/t/t1423-ref-backend.sh b/t/t1423-ref-backend.sh index 9912433b8c..d69aea3f7f 100755 --- a/t/t1423-ref-backend.sh +++ b/t/t1423-ref-backend.sh@@ -30,44 +39,86 @@ run_with_uri() { # <repo> is the relative path to the repo to run the command in. # <backend> is the original ref storage of the repo. # <uri> is the new URI to be set for the ref storage. +# <via> if 'config', set the backend via the 'extensions.refStorage' config. +# if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env. # <err_msg> (optional) if set, check if 'git-refs(1)' failed with the provided msg. test_refs_backend() { repo=$1 && backend=$2 && uri=$3 && - err_msg=$4 && + via=$4 && + err_msg=$5 && + - git -C "$repo" config set core.repositoryformatversion 1 && if test -n "$err_msg"; then - git -C "$repo" config set extensions.refStorage "$uri" && - test_must_fail git -C "$repo" refs list 2>err && - test_grep "$err_msg" err + if test "$via" = "env" + then + test_env GIT_REFERENCE_BACKEND="$uri" test_must_fail git -C "$repo" refs list 2>err + elif test "$via" = "config" + then + git -C "$repo" config set extensions.refStorage "$uri" && + test_must_fail git -C "$repo" refs list 2>err && + test_grep "$err_msg" err + fi else git -C "$repo" refs list >expect && - run_with_uri "$repo" "$backend" "$uri" "refs list" >actual && + run_with_uri "$repo" "$backend" "$uri" "refs list" "$via">actual && test_cmp expect actual fi } -test_expect_success 'URI is invalid' ' +# Verify that the expected files are present in the gitdir and the refsdir. +# Usage: verify_files_exist <gitdir> <refdir> +# <gitdir> is the path for the gitdir. +# <refdir> is the path for the refdir. +verify_files_exist() { + gitdir=$1 && + refdir=$2 && + + # verify that the stubs were added to the $GITDIR. + cat $gitdir/refs/heads >actual && + echo "repository uses alternate refs storage" >expect && + test_cmp expect actual &&
Tiny nit, not worth addressing on its own: we could simply `test_cmp expect "$gitdir/refs/heads", without the need to copy that file first.
quoted hunk ↗ jump to hunk
+ cat $gitdir/HEAD >actual && + echo "ref: refs/heads/.invalid" >expect && + test_cmp expect actual
Same here, no need to copy the file around. Other than that I'm happy with this patch series now, thanks! Patrick