Subject: Re: [PATCH 1/1] commit-graph: improve error messages

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Fri, 26 Apr 2019 14:33:08 +0200

On Fri, Apr 26 2019, Derrick Stolee via GitGitGadget wrote:

> The error messages when reading a commit-graph have a few problems:
>
> 1. Some values are output in hexadecimal, but that is not made
>    clear by the message. Prepend "0x" to these values.
>
> 2. The version number does not need to be hexadecimal, and also
>    should mention a "maximum supported version". This has one
>    possible confusing case: we could have a corrupt commit-graph
>    file with version number zero, so the output would be
>
>    "commit-graph has version 0, our maximum supported version is 1"
>
>    This will only happen with corrupt data. This error message is
>    designed instead for the case where a client is downgraded after
>    writing a newer file version.

This looks good to me and is obviously correct:

> Update t5318-commit-graph.sh to watch for these new error messages.
> [...]
> diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
> index e80c1cac02..264ebb15b1 100755
> --- a/t/t5318-commit-graph.sh
> +++ b/t/t5318-commit-graph.sh
> @@ -420,17 +420,17 @@ test_expect_success 'detect too small' '
>
>  test_expect_success 'detect bad signature' '
>  	corrupt_graph_and_verify 0 "\0" \
> -		"graph signature"
> +		"commit-graph signature"
>  '
>
>  test_expect_success 'detect bad version' '
>  	corrupt_graph_and_verify $GRAPH_BYTE_VERSION "\02" \
> -		"graph version"
> +		"commit-graph has version"
>  '
>
>  test_expect_success 'detect bad hash version' '
>  	corrupt_graph_and_verify $GRAPH_BYTE_HASH "\02" \
> -		"hash version"
> +		"commit-graph has hash version"
>  '
>
>  test_expect_success 'detect low chunk count' '

Just a small nit/OCD :).

The only change to that test code that's actually needed is just doing:

    -               "graph version"
    +               "graph has version"

The rest were already grepping subsets of the message before/after, and
maybe worth it to keep it consistent that all these
"corrupt_graph_and_verify" invocations grep the part of the message that
isn't the "commit-graph <whatever>", i.e. now with just that change:

    $ git grep -h -A1 corrupt_graph_and_verify|grep -o '".*"$'
    "graph signature"
    "graph has version"
    "hash version"
    "missing the .* chunk"
    "missing the OID Fanout chunk"
    "missing the OID Lookup chunk"
    "missing the Commit Data chunk"
    "fanout value"
    "fanout value"
    "incorrect OID order"
    "from object database"
    "root tree OID for commit"
    "invalid parent"
    "is too long"
    "commit-graph parent for"
    "generation for commit"
    "non-zero generation number"
    "commit date"
    "invalid parent"
    "incorrect checksum"

Well, there's the sore thumb of "commit-graph parent for".