summaryrefslogtreecommitdiff
path: root/transport.c
diff options
context:
space:
mode:
authorPetr Baudis <pasky@suse.cz>2008-08-07 00:06:30 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-08-07 18:39:14 (GMT)
commitfd35e42683113e367eee0bb8ac956dde3d95edde (patch)
tree30ddedf85f7d3f2f89944e4cebd14111491fc9f2 /transport.c
parent781c1834f5419bdf81bb7f3750170ccd6b809174 (diff)
downloadgit-fd35e42683113e367eee0bb8ac956dde3d95edde.zip
git-fd35e42683113e367eee0bb8ac956dde3d95edde.tar.gz
git-fd35e42683113e367eee0bb8ac956dde3d95edde.tar.bz2
Fail properly when cloning from invalid HTTP URL
Currently, when cloning from invalid HTTP URL, git clone will possibly return curl error, then a confusing message about remote HEAD and then return success and leave an empty repository behind, confusing either the end-user or the automated service calling it (think repo.or.cz). This patch changes the error() calls in get_refs_via_curl() to die()s, akin to the other get_refs_*() functions. Cc: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.c')
-rw-r--r--transport.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/transport.c b/transport.c
index 6f549b3..b3e3e61 100644
--- a/transport.c
+++ b/transport.c
@@ -463,17 +463,14 @@ static struct ref *get_refs_via_curl(struct transport *transport)
run_active_slot(slot);
if (results.curl_result != CURLE_OK) {
strbuf_release(&buffer);
- if (missing_target(&results)) {
- return NULL;
- } else {
- error("%s", curl_errorstr);
- return NULL;
- }
+ if (missing_target(&results))
+ die("%s not found: did you run git update-server-info on the server?", refs_url);
+ else
+ die("%s download error - %s", refs_url, curl_errorstr);
}
} else {
strbuf_release(&buffer);
- error("Unable to start request");
- return NULL;
+ die("Unable to start HTTP request");
}
data = buffer.buf;