git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 00/12] Integrate commit-graph into fsck, gc, and fetch

From
Derrick Stolee <stolee@gmail.com>
Date
May 11, 2018, 12:30 UTC
Message-ID
<cf443352-7840-9ff9-77af-cb4c52932fcb@gmail.com>
In-Reply-To
<20180510204557.16361-1-martin.agren@gmail.com>
On 5/10/2018 4:45 PM, Martin Ågren wrote:
Show 76 quoted lines
> On 10 May 2018 at 21:22, Stefan Beller <sbeller@google.com> wrote:
>> On Thu, May 10, 2018 at 12:05 PM, Martin Ågren <martin.agren@gmail.com> wrote:
>>> I hope to find time to do some more hands-on testing of this to see that
>>> errors actually do get caught.
>> Packfiles and loose objects are primary data, which means that those
>> need a more advanced way to diagnose and repair them, so I would imagine
>> the commit graph fsck is closer to bitmaps fsck, which I would have suspected
>> to be found in t5310, but a quick read doesn't reveal many tests that are
>> checking for integrity. So I guess the test coverage here is ok, (although we
>> should always ask for more)
> Since I'm wrapping up for today, I'm posting some simple tests that I
> assembled. The last of these showcases one or two problems with the
> current error-reporting. Depending on the error, there can be *lots* of
> errors reported and there are no new-lines, so the result on stdout can
> be a wall of not-very-legible text.
>
> Some of these might not make sense. I just started going through the
> documentation on the format, causing some sort of corruption in each
> field. Maybe this can be helpful somehow.
>
> Martin
>
> diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
> index 82f95eb11f..a7e48db2de 100755
> --- a/t/t5318-commit-graph.sh
> +++ b/t/t5318-commit-graph.sh
> @@ -255,4 +255,49 @@ test_expect_success 'git fsck (checks commit-graph)' '
>   	git fsck
>   '
>   
> +# usage: corrupt_data <file> <pos> [<data>]
> +corrupt_data() {
> +	file=$1
> +	pos=$2
> +	data="${3:-\0}"
> +	printf "$data" | dd of="$file" bs=1 seek="$pos" conv=notrunc
> +}
> +
> +test_expect_success 'detect bad signature' '
> +	cd "$TRASH_DIRECTORY/full" &&
> +	cp $objdir/info/commit-graph commit-graph-backup &&
> +	test_when_finished mv commit-graph-backup $objdir/info/commit-graph &&
> +	corrupt_data $objdir/info/commit-graph 0 "\0" &&
> +	test_must_fail git commit-graph verify 2>err &&
> +	grep "graph signature" err
> +'
> +
> +test_expect_success 'detect bad version number' '
> +	cd "$TRASH_DIRECTORY/full" &&
> +	cp $objdir/info/commit-graph commit-graph-backup &&
> +	test_when_finished mv commit-graph-backup $objdir/info/commit-graph &&
> +	corrupt_data $objdir/info/commit-graph 4 "\02" &&
> +	test_must_fail git commit-graph verify 2>err &&
> +	grep "graph version" err
> +'
> +
> +test_expect_success 'detect bad hash version' '
> +	cd "$TRASH_DIRECTORY/full" &&
> +	cp $objdir/info/commit-graph commit-graph-backup &&
> +	test_when_finished mv commit-graph-backup $objdir/info/commit-graph &&
> +	corrupt_data $objdir/info/commit-graph 5 "\02" &&
> +	test_must_fail git commit-graph verify 2>err &&
> +	grep "hash version" err
> +'
> +
> +test_expect_success 'detect too small chunk-count' '
> +	cd "$TRASH_DIRECTORY/full" &&
> +	cp $objdir/info/commit-graph commit-graph-backup &&
> +	test_when_finished mv commit-graph-backup $objdir/info/commit-graph &&
> +	corrupt_data $objdir/info/commit-graph 6 "\01" &&
> +	test_must_fail git commit-graph verify 2>err &&
> +	cat err
> +'
> +
> +
>   test_done
Martin: thank you so much for these test examples, and for running them 
to find out about the newline issue. This is really helpful.
Previous: Martin Ågren
Message 2 of 2 in “Re: [PATCH 00/12] Integrate commit-graph into fsck, gc, and fetch”
  1. Martin ÅgrenMay 10, 2018
  2. Derrick StoleeMay 11, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.