> +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.