Subject: Re: [PATCH v2 12/21] t5304: use "reflog expire --all" to clear the reflog

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 20 May 2021 17:27:23 +0200

On Tue, Apr 27 2021, Han-Wen Nienhuys via GitGitGadget wrote:

> From: Han-Wen Nienhuys <[email-masked]>
>
> This is more explicit, and reduces the depency between test functions. It also
> is more amenable to use with reftable, which has no concept of (non)existence of
> a reflog

Sounds good in principle, but:

> @@ -94,9 +94,7 @@ test_expect_success 'prune: prune unreachable heads' '
>  test_expect_success 'prune: do not prune detached HEAD with no reflog' '
>  	git checkout --detach --quiet &&
>  	git commit --allow-empty -m "detached commit" &&
> -	# verify that there is no reflogs
> -	# (should be removed and disabled by previous test)
> -	test_path_is_missing .git/logs &&
> +	git reflog expire --all &&
>  	git prune -n >prune_actual &&
>  	test_must_be_empty prune_actual
>  '

Isn't the point of the existing test to check that there isn't an
existing reflog, not to just expire it if we find it, or does expire
--all return non-zero if none was found ?

> @@ -104,6 +102,7 @@ test_expect_success 'prune: do not prune detached HEAD with no reflog' '
>  test_expect_success 'prune: prune former HEAD after checking out branch' '
>  	head_oid=$(git rev-parse HEAD) &&
>  	git checkout --quiet main &&
> +	git reflog expire --all &&
>  	git prune -v >prune_actual &&
>  	grep "$head_oid" prune_actual
>  '

Just skimming this I'm perplexed why this needs expiring now, as opposed
to being s/file/command/ changes like the rest...