diff options
author | David Turner <dturner@twopensource.com> | 2014-06-03 23:38:10 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-05 15:24:50 -0700 |
commit | dde8a902c774268628015705a7767f61af18b865 (patch) | |
tree | 063e41ca57518a1e61774f5f5bab1f51c528e083 /t | |
parent | First batch for 2.1 (diff) | |
download | tgif-dde8a902c774268628015705a7767f61af18b865.tar.xz |
refs.c: optimize check_refname_component()
In a repository with many refs, check_refname_component can be a major
contributor to the runtime of some git commands. One such command is
git rev-parse HEAD
Timings for one particular repo, with about 60k refs, almost all
packed, are:
Old: 35 ms
New: 29 ms
Many other commands which read refs are also sped up.
Signed-off-by: David Turner <dturner@twitter.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t5511-refspec.sh | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/t/t5511-refspec.sh b/t/t5511-refspec.sh index c28932216b..de6db86ccf 100755 --- a/t/t5511-refspec.sh +++ b/t/t5511-refspec.sh @@ -5,7 +5,6 @@ test_description='refspec parsing' . ./test-lib.sh test_refspec () { - kind=$1 refspec=$2 expect=$3 git config remote.frotz.url "." && git config --remove-section remote.frotz && @@ -84,4 +83,9 @@ test_refspec push 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*' test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*' +good=$(printf '\303\204') +test_refspec fetch "refs/heads/${good}" +bad=$(printf '\011tab') +test_refspec fetch "refs/heads/${bad}" invalid + test_done |