]> git.ipfire.org Git - thirdparty/git.git/commit
t7900: clean up some broken refs
authorDerrick Stolee <dstolee@microsoft.com>
Tue, 19 Jan 2021 12:52:04 +0000 (12:52 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 21 Jan 2021 02:46:22 +0000 (18:46 -0800)
commit3cf5f221bec9cefcb472e71e2cf378aecbb6f33f
tree914f1a98eb6bc32762cf40d458f414d021b9d089
parent96eaffebbf3d00a498c28bc689e70d9d94bc9911
t7900: clean up some broken refs

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!

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.

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>
Reviewed-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7900-maintenance.sh