> +Version 2:
> +
> +  1-byte number (C) of "chunks"
> +
> +  1-byte reachability index version number:
> +      Currently, the only valid number is 1.
> +
> +  1-byte (reserved for later use)
> +      Current clients expect this value to be zero, and will not
> +      try to read the commit-graph file if it is non-zero.
> +
> +  4-byte format identifier for the hash algorithm:
> +      If this identifier does not agree with the repository's current
> +      hash algorithm, then the client will not read the commit graph.

[snip]

> diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
> index b79d6263e9..3ff5e3b48d 100755
> --- a/t/t5318-commit-graph.sh
> +++ b/t/t5318-commit-graph.sh
> @@ -65,7 +65,8 @@ graph_read_expect() {
>               NUM_CHUNKS=$((3 + $(echo "$2" | wc -w)))
>       fi
>       cat >expect <<- EOF
> -     header: 43475048 1 1 $NUM_CHUNKS 0
> +     header: 43475048 2 $NUM_CHUNKS 1 0
> +     hash algorithm: 73686131
>       num_commits: $1
>       chunks: oid_fanout oid_lookup commit_metadata$OPTIONAL
>       EOF
> @@ -390,10 +391,14 @@ test_expect_success 'detect bad signature' '
>  '
>  
>  test_expect_success 'detect bad version' '
> -     corrupt_graph_and_verify $GRAPH_BYTE_VERSION "\02" \
> +     corrupt_graph_and_verify $GRAPH_BYTE_VERSION "\03" \
>               "graph version"
>  '
>  
> +test_expect_success 'detect version 2 with version 1 data' '
> +     corrupt_graph_and_verify $GRAPH_BYTE_VERSION "\02" \
> +             "reachability index version"
> +'
>  test_expect_success 'detect bad hash version' '
>       corrupt_graph_and_verify $GRAPH_BYTE_HASH "\02" \
>               "hash version"

Should there also be a test that the "reserved" section be 0 and the
4-byte identifier agrees with the repo's hash algorithm? I assume that
this can be done by "corrupting" the version to 2 and then truly
corrupting the subsequent bytes.

Other than that, this and the previous patches look good.

Reply via email to