projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Don't fetch objects that exist in the local repository
[git.git]
/
http-fetch.c
diff --git
a/http-fetch.c
b/http-fetch.c
index
dd9ea4c
..
d1e4593
100644
(file)
--- a/
http-fetch.c
+++ b/
http-fetch.c
@@
-489,7
+489,10
@@
void process_request_queue()
while (active_requests < max_requests && request != NULL) {
if (request->state == WAITING) {
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;
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 (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) {
#ifdef USE_CURL_MULTI
int num_transfers;
while (request->state == WAITING) {