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

Re: [PATCH v2 2/2] t7900: clean up some broken refs

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 21, 2021, 02:38 UTC
Message-ID
<xmqqczxzdney.fsf@gitster.c.googlers.com>
In-Reply-To
<35038dfd037f6da1e21c1d9f1a24b27cb7100598.1611060724.git.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 14 quoted lines
> From: Derrick Stolee <dstolee@microsoft.com>
>
> The tests for the 'prefetch' task create remotes and fetch refs into
> 'refs/prefetch/<remote>/' and tags into 'refs/tags/'. These tests use
> the remotes to create objects not intended to be seen by the "local"
> repository.
>
> In that sense, the incrmental-repack tasks did not have these objects
> and refs in mind. That test replaces the object directory with a
> specific pack-file layout for testing the batch-size logic. However,
> this causes some operations to start showing warnings such as:
>
>  error: refs/prefetch/remote1/one does not point to a valid object!
>  error: refs/tags/one does not point to a valid object!

So we use prefetch refs but craft a repacking strategy in such a way that these prefetch refs do not act as anchors, deliberately breaking the repository and invalidating the prefetch refs so to speak?

Wow, that sounds like an evil and brittle test set-up.
> This only shows up if you run the tests verbosely and watch the output.
> It caught my eye and I _thought_ that there was a bug where 'git gc' or
> 'git repack' wouldn't check 'refs/prefetch/' before pruning objects.
> That is incorrect. Those commands do handle 'refs/prefetch/' correctly.
Show 29 quoted lines
> All that is left is to clean up the tests in t7900-maintenance.sh to
> remove these tags and refs that are not being repacked for the
> incremental-repack tests. Use update-ref to ensure this works with all
> ref backends.
>
> Helped-by: Taylor Blau <me@ttaylorr.com>
> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
> ---
>  t/t7900-maintenance.sh | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
> index f9031cbb44b..78ccf4b33f8 100755
> --- a/t/t7900-maintenance.sh
> +++ b/t/t7900-maintenance.sh
> @@ -256,6 +256,13 @@ test_expect_success 'incremental-repack task' '
>  	HEAD
>  	^HEAD~1
>  	EOF
> +
> +	# Delete refs that have not been repacked in these packs.
> +	git for-each-ref --format="delete %(refname)" \
> +		refs/prefetch refs/tags >refs &&
> +	git update-ref --stdin <refs &&
> +
> +	# Replace the object directory with this pack layout.
>  	rm -f $packDir/pack-* &&
>  	rm -f $packDir/loose-* &&
>  	ls $packDir/*.pack >packs-before &&
Previous: Derrick Stolee via GitGitGadgetNext: Taylor Blau
Message 11 of 13 in “Two cleanups around 'prefetch' refs”
  1. 0/2 Two cleanups around 'prefetch' refsDerrick Stolee via GitGitGadget, Jan 18, 2021
  2. 1/2 maintenance: set log.excludeDecoration durin prefetchDerrick Stolee via GitGitGadget, Jan 18, 2021
  3. Taylor BlauJan 18, 2021
  4. 2/2 t7900: clean up some broken refsDerrick Stolee via GitGitGadget, Jan 18, 2021
  5. Taylor BlauJan 18, 2021
  6. Derrick StoleeJan 18, 2021
  7. 0/2 Two cleanups around 'prefetch' refsDerrick Stolee via GitGitGadget, Jan 19, 2021
  8. 1/2 maintenance: set log.excludeDecoration durin prefetchDerrick Stolee via GitGitGadget, Jan 19, 2021
  9. Junio C HamanoJan 21, 2021
  10. 2/2 t7900: clean up some broken refsDerrick Stolee via GitGitGadget, Jan 19, 2021
  11. Junio C HamanoJan 21, 2021
  12. Taylor BlauJan 19, 2021
  13. Junio C HamanoJan 21, 2021

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.