X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-fetch.sh;h=22739440384648357896898f11001e2fa05f217e;hb=98533b90cb8e88484cb381334b19cbf4f7cf92b1;hp=4928cd5bed7dd6a5bd4653f51a45c611bf8e9379;hpb=215a7ad1ef790467a4cd3f0dcffbd6e5f04c38f7;p=git.git diff --git a/git-fetch.sh b/git-fetch.sh index 4928cd5b..22739440 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -94,6 +94,7 @@ append_fetch_head () { } fast_forward_local () { + mkdir -p "$(dirname "$GIT_DIR/$1")" case "$1" in refs/tags/*) # Tags need not be pointing at commits so there @@ -204,9 +205,16 @@ case "$remote" in http://* | https://* | rsync://* ) ;; # we are already done. *) - git-fetch-pack "$remote" $rref | + ( + git-fetch-pack "$remote" $rref || echo failed "$remote" + ) | while read sha1 remote_name do + case "$sha1" in + failed) + echo >&2 "Fetch failure: $remote" + exit 1 ;; + esac found= single_force= for ref in $refs @@ -224,7 +232,7 @@ http://* | https://* | rsync://* ) local_name=$(expr "$found" : '[^:]*:\(.*\)') append_fetch_head "$sha1" "$remote" "$remote_name" "$remote_nick" "$local_name" - done + done || exit ;; esac