Subject: Re: shallow clone failed git pull

From: "Aneesh Kumar K.V" <[email-masked]>
Date: Fri, 10 Nov 2006 11:28:27 +0530

Aneesh Kumar K.V wrote:
> I was using the pu branch i tried to update the git repository and i got 
> this error.
> 
> alk 9e950efa20dc8037c27509666cba6999da9368e8
> walk 3b6a792f6ace33584897d1af08630c9acc0ce221
> * refs/heads/origin: fast forward to branch 'master' of 
> http://repo.or.cz/r/linux-2.6
>  old..new: 3d42488..088406b
> Auto-following refs/tags/v2.6.19-rc5
> shallow clone with http not supported
> 
> 
> This repository was not cloned with -depth. I only updated the git tools 
> using the pu branch
> 

The attached patch gets it working. I am not sure whether the fix is the right one. I 
am a little bit confused regarding the $depth being incremented. 

-aneesh
diff --git a/git-fetch.sh b/git-fetch.sh
index 8b46e73..6459994 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -21,7 +21,7 @@ update_head_ok=
 exec=
 upload_pack=
 keep=
-depth=
+depth=0
 while case "$#" in 0) break ;; esac
 do
 	case "$1" in
@@ -304,7 +304,7 @@ fetch_main () {
       # There are transports that can fetch only one head at a time...
       case "$remote" in
       http://* | https://* | ftp://*)
-	  test -n "$depth" && die "shallow clone with http not supported"
+	  [ x"$depth" != x0 ] && die "shallow clone with http not supported"
 	  proto=`expr "$remote" : '\([^:]*\):'`
 	  if [ -n "$GIT_SSL_NO_VERIFY" ]; then
 	      curl_extra_args="-k"
@@ -325,7 +325,7 @@ fetch_main () {
 	      print "$u";
 	  ' "$head")
 	    head=$(curl -nsfL $curl_extra_args $noepsv_opt "$remote/$remote_name_quoted")
-	    depth=$( expr \( $depth + 1 \) )
+	   # depth=$( expr \( $depth + 1 \) )
 	  done
 	  expr "z$head" : "z$_x40\$" >/dev/null ||
 	      die "Failed to fetch $remote_name from $remote"
@@ -333,7 +333,7 @@ fetch_main () {
 	  git-http-fetch -v -a "$head" "$remote/" || exit
 	  ;;
       rsync://*)
-	  test -n "$depth" && die "shallow clone with rsync not supported"
+	  [ x"$depth" != x0 ] && die "shallow clone with http not supported"
 	  TMP_HEAD="$GIT_DIR/TMP_HEAD"
 	  rsync -L -q "$remote/$remote_name" "$TMP_HEAD" || exit 1
 	  head=$(git-rev-parse --verify TMP_HEAD)