Subject: Re: [PATCH 8/9] Allow specifying compatibility hash

From: Patrick Steinhardt <[email-masked]>
Date: Wed, 24 Sep 2025 09:56:01 +0200

On Fri, Sep 19, 2025 at 01:09:10AM +0000, brian m. carlson wrote:

Tiny nit: it would help if the patch subject was prefixed with "t:".

> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index a28de7b19b..52d7759bf5 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -1708,11 +1708,16 @@ test_set_hash () {
>  # Detect the hash algorithm in use.
>  test_detect_hash () {
>  	case "${GIT_TEST_DEFAULT_HASH:-$GIT_TEST_BUILTIN_HASH}" in
> -	"sha256")
> +	*:*)
> +	    test_hash_algo="${GIT_TEST_DEFAULT_HASH%%:*}"
> +	    test_compat_hash_algo="${GIT_TEST_DEFAULT_HASH##*:}"
> +	    test_repo_compat_hash_algo="$test_compat_hash_algo"
> +	    ;;
> +	sha256)
>  	    test_hash_algo=sha256
>  	    test_compat_hash_algo=sha1
>  	    ;;
> -	*)
> +	sha1)
>  	    test_hash_algo=sha1
>  	    test_compat_hash_algo=sha256
>  	    ;;

Makes sense, I guess. It's a bit hard to judge without seeing any actual
tests, but I don't think that should hold off adding the infrastructure.
Worst case we can still adjust it at later point in time.

> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index 621cd31ae1..14c777e4e2 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -1917,6 +1917,13 @@ test_lazy_prereq DEFAULT_HASH_ALGORITHM '
>  test_lazy_prereq DEFAULT_REPO_FORMAT '
>  	test_have_prereq SHA1,REFFILES
>  '
> +# BROKEN_OBJECTS is a test if we can write deliberately broken objects and

s/if/whether/

> +# expect them to work.  When running using SHA-256 mode with SHA-1
> +# compatibility, we cannot write such objects because there's no SHA-1
> +# compatibility value for a nonexistent object.
> +test_lazy_prereq BROKEN_OBJECTS '
> +	test -z "$test_repo_compat_hash_algo"
> +'
>  
>  # Ensure that no test accidentally triggers a Git command
>  # that runs the actual maintenance scheduler, affecting a user's

Patrick