]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t5526: break test submodule differently
authorPatrick Steinhardt <ps@pks.im>
Mon, 29 Jan 2024 11:07:34 +0000 (12:07 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Jan 2024 21:54:33 +0000 (13:54 -0800)
In 10f5c52656 (submodule: avoid auto-discovery in
prepare_submodule_repo_env(), 2016-09-01) we fixed a bug when doing a
recursive fetch with submodule in the case where the submodule is broken
due to whatever reason. The test to exercise that the fix works breaks
the submodule by deleting its `HEAD` reference, which will cause us to
not detect the directory as a Git repository.

While this is perfectly fine in theory, this way of breaking the repo
becomes problematic with the current efforts to introduce another refdb
backend into Git. The new reftable backend has a stub HEAD file that
always contains "ref: refs/heads/.invalid" so that tools continue to be
able to detect such a repository. But as the reftable backend will never
delete this file even when asked to delete `HEAD` the current way to
delete the `HEAD` reference will stop working.

Adapt the code to instead delete the objects database. Going back with
this new way to cause breakage confirms that it triggers the infinite
recursion just the same, and there are no equivalent ongoing efforts to
replace the object database with an alternate backend.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5526-fetch-submodules.sh

index 7ab220fa3135a1ecbaa8f69a5db8a9b1298f4ce1..5e566205ba4b95830bd97c97b0092cb4a3356304 100755 (executable)
@@ -771,7 +771,7 @@ test_expect_success 'fetching submodule into a broken repository' '
        git -C dst fetch --recurse-submodules &&
 
        # Break the receiving submodule
-       test-tool -C dst/sub ref-store main delete-refs REF_NO_DEREF msg HEAD &&
+       rm -r dst/sub/.git/objects &&
 
        # NOTE: without the fix the following tests will recurse forever!
        # They should terminate with an error.