[PATCH 13/15] t/perf: measure --force-with-lease in p5516
- From
Jon Simons <jon@jonsimons.org>
- Date
- Oct 9, 2026, 19:29 UTC
- Message-ID
- <20261009192953.81794-14-jon@jonsimons.org>
- In-Reply-To
- <20261009192953.81794-1-jon@jonsimons.org>
Extend p5516 with rows that push the same delete refspecs plus one explicit --force-with-lease=<refname>:<expect> per refspec.
The new rows are used to demonstrate a speedup in a subsequent commit.
Numbers as of this commit (`./p5516-push-delete-refspec.sh -r create,lease`):
Test this tree ------------------------------------------- 5516.16: empty:lease:1 0.12(0.06+0.10) 5516.19: empty:lease:10 0.17(0.10+0.10) 5516.22: empty:lease:100 0.45(0.38+0.10) 5516.25: mirror:lease:1 0.15(0.09+0.10) 5516.28: mirror:lease:10 0.18(0.12+0.10) 5516.31: mirror:lease:100 0.52(0.42+0.10)
Signed-off-by: Jon Simons <jon@jonsimons.org> --- t/perf/p5516-push-delete-refspec.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/t/perf/p5516-push-delete-refspec.sh b/t/perf/p5516-push-delete-refspec.sh index 0e425193e5..a1e3f74bf7 100755 --- a/t/perf/p5516-push-delete-refspec.sh +++ b/t/perf/p5516-push-delete-refspec.sh @@ -6,6 +6,9 @@ Measure client-side matching of explicit delete refspecs with "git push --dry-run" against a server that advertises lots of refs. An empty client (no local refs) and a mirror client (full local copy of the server refs) are tested pushing 1, 10, and 100 refspecs each. + +A second set of rows measures one --force-with-lease per refspec for +timing those paths. ' . ./perf-lib.sh @@ -24,6 +27,8 @@ test_expect_success 'create server with many refs and two clients' ' git -C client_mirror config --unset remote.origin.mirror ' +oid=$(git -C server rev-parse HEAD) + for mode in empty mirror do client=client_$mode @@ -39,4 +44,24 @@ do done done +for mode in empty mirror +do + client=client_$mode + for nr_refspecs in 1 10 100 + do + test_expect_success "create $mode lease refspecs: $nr_refspecs" ' + test_seq -f ":refs/heads/b%d" $nr_refspecs >refspecs + ' + + test_expect_success "create $mode leases: $nr_refspecs" ' + test_seq -f "refs/heads/b%d:'"$oid"'" $nr_refspecs | + sed "s/^/--force-with-lease=/" >leases + ' + + test_perf "$mode:lease:$nr_refspecs" ' + git -C '"$client"' push --dry-run origin $(cat refspecs) $(cat leases) + ' + done +done + test_done
-- 2.55.0