]> asedeno.scripts.mit.edu Git - git.git/blobdiff - builtin-fetch.c
Merge branch 'maint'
[git.git] / builtin-fetch.c
index caaca63644b91b414d808079e14aee38c2a6eda7..b9d2b0c27e3c09dd2746db94c25c00eaa492ba7c 100644 (file)
@@ -105,7 +105,13 @@ static struct ref *get_ref_map(struct transport *transport,
                                    !remote->fetch[0].pattern)
                                        ref_map->merge = 1;
                        }
-                       if (has_merge)
+                       /*
+                        * if the remote we're fetching from is the same
+                        * as given in branch.<name>.remote, we add the
+                        * ref given in branch.<name>.merge, too.
+                        */
+                       if (has_merge && !strcmp(branch->remote_name,
+                                               remote->name))
                                add_merge_config(&ref_map, remote_refs, branch, &tail);
                } else {
                        ref_map = get_remote_ref(remote_refs, "HEAD");
@@ -196,8 +202,8 @@ static int update_local_ref(struct ref *ref,
                return s_update_ref("updating tag", ref, 0);
        }
 
-       current = lookup_commit_reference(ref->old_sha1);
-       updated = lookup_commit_reference(ref->new_sha1);
+       current = lookup_commit_reference_gently(ref->old_sha1, 1);
+       updated = lookup_commit_reference_gently(ref->new_sha1, 1);
        if (!current || !updated) {
                char *msg;
                if (!strncmp(ref->name, "refs/tags/", 10))
@@ -255,7 +261,7 @@ static void store_updated_refs(const char *url, struct ref *ref_map)
                        ref->force = rm->peer_ref->force;
                }
 
-               commit = lookup_commit_reference(rm->old_sha1);
+               commit = lookup_commit_reference_gently(rm->old_sha1, 1);
                if (!commit)
                        rm->merge = 0;