Message ID | 2ab24ea5633be6b4855567d126a184d54c624f62.1701242407.git.ps@pks.im (mailing list archive) |
---|---|
State | Accepted |
Commit | 2e4afdad662c5fe0f19879073d2404f1fa6c5481 |
Headers | show |
Series | t: more compatibility fixes with reftables | expand |
On Wed, Nov 29, 2023 at 08:25:14AM +0100, Patrick Steinhardt wrote: > We have multiple tests in t5551 that write thousands of tags. To do so > efficiently we generate the tags by writing the `packed-refs` file > directly, which of course assumes that the reference database is backed > by the files backend. > > Refactor the code to instead use a single `git update-ref --stdin` > command to write the tags. While the on-disk end result is not the same > as we now have a bunch of loose refs instead of a single packed-refs > file, the distinction shouldn't really matter for any of the tests that > use this helper. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > t/t5551-http-fetch-smart.sh | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh > index 8a41adf1e1..e069737b80 100755 > --- a/t/t5551-http-fetch-smart.sh > +++ b/t/t5551-http-fetch-smart.sh > @@ -359,7 +359,9 @@ create_tags () { > > # now assign tags to all the dangling commits we created above > tag=$(perl -e "print \"bla\" x 30") && > - sed -e "s|^:\([^ ]*\) \(.*\)$|\2 refs/tags/$tag-\1|" <marks >>packed-refs > + sed -e "s|^:\([^ ]*\) \(.*\)$|create refs/tags/$tag-\1 \2|" <marks >input && > + git update-ref --stdin <input && > + rm input Same note here as in the previous patch, although here I think we'd prefer to pipe from sed to git update-ref directly, rather than writing an intermediate file which we have to clean up afterwords. Thanks, Taylor
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh index 8a41adf1e1..e069737b80 100755 --- a/t/t5551-http-fetch-smart.sh +++ b/t/t5551-http-fetch-smart.sh @@ -359,7 +359,9 @@ create_tags () { # now assign tags to all the dangling commits we created above tag=$(perl -e "print \"bla\" x 30") && - sed -e "s|^:\([^ ]*\) \(.*\)$|\2 refs/tags/$tag-\1|" <marks >>packed-refs + sed -e "s|^:\([^ ]*\) \(.*\)$|create refs/tags/$tag-\1 \2|" <marks >input && + git update-ref --stdin <input && + rm input } test_expect_success 'create 2,000 tags in the repo' '
We have multiple tests in t5551 that write thousands of tags. To do so efficiently we generate the tags by writing the `packed-refs` file directly, which of course assumes that the reference database is backed by the files backend. Refactor the code to instead use a single `git update-ref --stdin` command to write the tags. While the on-disk end result is not the same as we now have a bunch of loose refs instead of a single packed-refs file, the distinction shouldn't really matter for any of the tests that use this helper. Signed-off-by: Patrick Steinhardt <ps@pks.im> --- t/t5551-http-fetch-smart.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)