From d1e0ef6cc89e5ef2f914c37719b9c2327e534834 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 16 Jan 2007 02:31:36 -0800 Subject: git-fetch: rewrite another shell loop in C Move another shell loop that canonicalizes the list of refs for underlying git-fetch-pack and fetch-native-store into C. This seems to shave the runtime for the same 1000 branch repository from 30 seconds down to 15 seconds (it used to be 2 and half minutes with the original version). Signed-off-by: Junio C Hamano --- git-fetch.sh | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) (limited to 'git-fetch.sh') diff --git a/git-fetch.sh b/git-fetch.sh index b74dd9a30..3bed4091a 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -155,35 +155,9 @@ then fi fetch_native () { - reflist="$1" - refs= - rref= - - for ref in $reflist - do - refs="$refs$LF$ref" - - # These are relative path from $GIT_DIR, typically starting at refs/ - # but may be HEAD - if expr "z$ref" : 'z\.' >/dev/null - then - not_for_merge=t - ref=$(expr "z$ref" : 'z\.\(.*\)') - else - not_for_merge= - fi - if expr "z$ref" : 'z+' >/dev/null - then - single_force=t - ref=$(expr "z$ref" : 'z+\(.*\)') - else - single_force= - fi - remote_name=$(expr "z$ref" : 'z\([^:]*\):') - local_name=$(expr "z$ref" : 'z[^:]*:\(.*\)') - rref="$rref$LF$remote_name" - done + eval=$(git-fetch--tool parse-reflist "$1") + eval "$eval" ( : subshell because we muck with IFS IFS=" $LF" -- cgit v1.2.1