[PATCH] Do not call fetch() when we have it.
[git.git] / pull.c
diff --git a/pull.c b/pull.c
index 86a7b69..bbef245 100644 (file)
--- a/pull.c
+++ b/pull.c
@@ -8,6 +8,13 @@ int get_tree = 0;
 int get_history = 0;
 int get_all = 0;
 
+static int make_sure_we_have_it(unsigned char *sha1)
+{
+       if (has_sha1_file(sha1))
+               return 0;
+       return fetch(sha1);     
+}
+
 static int process_tree(unsigned char *sha1)
 {
        struct tree *tree = lookup_tree(sha1);
@@ -17,7 +24,7 @@ static int process_tree(unsigned char *sha1)
                return -1;
 
        for (entries = tree->entries; entries; entries = entries->next) {
-               if (fetch(entries->item.tree->object.sha1))
+               if (make_sure_we_have_it(entries->item.tree->object.sha1))
                        return -1;
                if (entries->directory) {
                        if (process_tree(entries->item.tree->object.sha1))
@@ -31,14 +38,14 @@ static int process_commit(unsigned char *sha1)
 {
        struct commit *obj = lookup_commit(sha1);
 
-       if (fetch(sha1))
+       if (make_sure_we_have_it(sha1))
                return -1;
 
        if (parse_commit(obj))
                return -1;
 
        if (get_tree) {
-               if (fetch(obj->tree->object.sha1))
+               if (make_sure_we_have_it(obj->tree->object.sha1))
                        return -1;
                if (process_tree(obj->tree->object.sha1))
                        return -1;
@@ -50,7 +57,7 @@ static int process_commit(unsigned char *sha1)
                for (; parents; parents = parents->next) {
                        if (has_sha1_file(parents->item->object.sha1))
                                continue;
-                       if (fetch(parents->item->object.sha1)) {
+                       if (make_sure_we_have_it(parents->item->object.sha1)) {
                                /* The server might not have it, and
                                 * we don't mind. 
                                 */
@@ -70,7 +77,7 @@ int pull(char *target)
        retval = get_sha1_hex(target, sha1);
        if (retval)
                return retval;
-       retval = fetch(sha1);
+       retval = make_sure_we_have_it(sha1);
        if (retval)
                return retval;
        return process_commit(sha1);