aboutsummaryrefslogtreecommitdiffstats
path: root/t/perf
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-12-15 17:54:25 -0800
committerJunio C Hamano <gitster@pobox.com>2024-12-15 17:54:25 -0800
commit73b7e03e9e4fdd3e09c08ff9c2d215bcabc19f34 (patch)
treef7c84cac7912e5c8a9aec915d1afe02be4f43948 /t/perf
parent2ccc89b0c16c51561da90d21cfbb4b58cc877bf6 (diff)
parentdb162862b36f8c2de8e7020801870abf33b61a20 (diff)
downloadgit-73b7e03e9e4fdd3e09c08ff9c2d215bcabc19f34.tar.gz
Merge branch 'jk/describe-perf'
"git describe" optimization. * jk/describe-perf: describe: split "found all tags" and max_candidates logic describe: stop traversing when we run out of names describe: stop digging for max_candidates+1 t/perf: add tests for git-describe t6120: demonstrate weakness in disjoint-root handling
Diffstat (limited to 't/perf')
-rwxr-xr-xt/perf/p6100-describe.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/t/perf/p6100-describe.sh b/t/perf/p6100-describe.sh
new file mode 100755
index 0000000000..069f91ce49
--- /dev/null
+++ b/t/perf/p6100-describe.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+test_description='performance of git-describe'
+. ./perf-lib.sh
+
+test_perf_default_repo
+
+# clear out old tags and give us a known state
+test_expect_success 'set up tags' '
+ git for-each-ref --format="delete %(refname)" refs/tags >to-delete &&
+ git update-ref --stdin <to-delete &&
+ new=$(git rev-list -1000 HEAD | tail -n 1) &&
+ git tag -m new new $new &&
+ old=$(git rev-list HEAD | tail -n 1) &&
+ git tag -m old old $old
+'
+
+test_perf 'describe HEAD' '
+ git describe HEAD
+'
+
+test_perf 'describe HEAD with one max candidate' '
+ git describe --candidates=1 HEAD
+'
+
+test_perf 'describe HEAD with one tag' '
+ git describe --match=new HEAD
+'
+
+test_done