git-fetch: rewrite another shell loop in C
[gitweb.git] / git-fetch.sh
index b74dd9a309fedc27ebe53ff3c2106d0412a9f785..3bed4091a3826909878938239970a5d947c70d2c 100755 (executable)
@@ -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"