X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=http-fetch.c;h=3cd6ef91af59fdb42a664cb8d9bdb5b591ecb789;hb=e4e79a217576d24ef4d73b620766f62b155bcd98;hp=53a7dbf40c0e0993da2994cb1216e6b8a0b7fc66;hpb=e388ab74dbaea5cdbf07b175be8d6980579392f4;p=git.git diff --git a/http-fetch.c b/http-fetch.c index 53a7dbf4..3cd6ef91 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -637,10 +637,18 @@ static int fetch_indices(struct alt_base *repo) if (start_active_slot(slot)) { run_active_slot(slot); if (slot->curl_result != CURLE_OK) { - free(buffer.buffer); - return error("%s", curl_errorstr); + if (slot->http_code == 404) { + repo->got_indices = 1; + free(buffer.buffer); + return 0; + } else { + repo->got_indices = 0; + free(buffer.buffer); + return error("%s", curl_errorstr); + } } } else { + repo->got_indices = 0; free(buffer.buffer); return error("Unable to start request"); } @@ -650,7 +658,7 @@ static int fetch_indices(struct alt_base *repo) switch (data[i]) { case 'P': i++; - if (i + 52 < buffer.posn && + if (i + 52 <= buffer.posn && !strncmp(data + i, " pack-", 6) && !strncmp(data + i + 46, ".pack\n", 6)) { get_sha1_hex(data + i + 6, sha1); @@ -659,7 +667,7 @@ static int fetch_indices(struct alt_base *repo) break; } default: - while (data[i] != '\n') + while (i < buffer.posn && data[i] != '\n') i++; } i++; @@ -914,6 +922,8 @@ int main(int argc, char **argv) int arg = 1; int rc = 0; + setup_git_directory(); + while (arg < argc && argv[arg][0] == '-') { if (argv[arg][1] == 't') { get_tree = 1;