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
This commit is contained in:
Junio C Hamano
2024-12-15 17:54:25 -08:00
3 changed files with 60 additions and 10 deletions

30
t/perf/p6100-describe.sh Executable file
View File

@ -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