[PATCH] Don't fetch objects that exist in the local repository
[git.git] / http-fetch.c
index dd9ea4c..d1e4593 100644 (file)
@@ -489,7 +489,10 @@ void process_request_queue()
 
        while (active_requests < max_requests && request != NULL) {
                if (request->state == WAITING) {
-                       start_request(request);
+                       if (has_sha1_file(request->sha1))
+                               release_request(request);
+                       else
+                               start_request(request);
                        curl_multi_perform(curlm, &num_transfers);
                }
                request = request->next;
@@ -890,6 +893,11 @@ static int fetch_object(struct alt_base *repo, unsigned char *sha1)
        if (request == NULL)
                return error("Couldn't find request for %s in the queue", hex);
 
+       if (has_sha1_file(request->sha1)) {
+               release_request(request);
+               return 0;
+       }
+
 #ifdef USE_CURL_MULTI
        int num_transfers;
        while (request->state == WAITING) {