From 86551586da8cba6c06ac04783a656843a4e47f35 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 16 Jan 2007 13:43:28 -0800 Subject: git-fetch: rewrite expand_ref_wildcard in C This does not seem to make measurable improvement when dealing with 1000 unpacked refs, but we would need something like it if we were to do a full rewrite in C somedaoy. Signed-off-by: Junio C Hamano --- git-parse-remote.sh | 46 +--------------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) (limited to 'git-parse-remote.sh') diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 5208ee6ce0..9b19a21667 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -81,51 +81,7 @@ get_remote_default_refs_for_push () { # is to help prevent randomly "globbed" ref from being chosen as # a merge candidate expand_refs_wildcard () { - remote="$1" - shift - first_one=yes - if test "$#" = 0 - then - echo empty - echo >&2 "Nothing specified for fetching with remote.$remote.fetch" - fi - for ref - do - lref=${ref#'+'} - # a non glob pattern is given back as-is. - expr "z$lref" : 'zrefs/.*/\*:refs/.*/\*$' >/dev/null || { - if test -n "$first_one" - then - echo "explicit" - first_one= - fi - echo "$ref" - continue - } - - # glob - if test -n "$first_one" - then - echo "glob" - first_one= - fi - from=`expr "z$lref" : 'z\(refs/.*/\)\*:refs/.*/\*$'` - to=`expr "z$lref" : 'zrefs/.*/\*:\(refs/.*/\)\*$'` - local_force= - test "z$lref" = "z$ref" || local_force='+' - echo "$ls_remote_result" | - sed -e '/\^{}$/d' | - ( - IFS=' ' - while read sha1 name - do - # ignore the ones that do not start with $from - mapped=${name#"$from"} - test "z$name" = "z$mapped" && continue - echo "${local_force}${name}:${to}${mapped}" - done - ) - done + git fetch--tool expand-refs-wildcard "$ls_remote_result" "$@" } # Subroutine to canonicalize remote:local notation. -- cgit v1.3-5-g9baa From 95339912b97279c29bd842fe036c70fca33d0d66 Mon Sep 17 00:00:00 2001 From: Julian Phillips Date: Tue, 13 Feb 2007 01:21:40 +0000 Subject: Use stdin reflist passing in parse-remote Use the new stdin reflist passing mechanism for the call to fetch--tool expand-refs-wildcard, allowing passing of more than ~128K of reflist data. Signed-off-by: Julian Phillips Signed-off-by: Junio C Hamano --- git-parse-remote.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'git-parse-remote.sh') diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 9b19a21667..c46131f6d6 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -81,7 +81,8 @@ get_remote_default_refs_for_push () { # is to help prevent randomly "globbed" ref from being chosen as # a merge candidate expand_refs_wildcard () { - git fetch--tool expand-refs-wildcard "$ls_remote_result" "$@" + echo "$ls_remote_result" | + git fetch--tool expand-refs-wildcard "-" "$@" } # Subroutine to canonicalize remote:local notation. -- cgit v1.3-5-g9baa