Add branch --set-upstream
[gitweb.git] / builtin-remote.c
index 79166262182a1cb51839e20b8abcef8f6752b59f..c4945b870882834fdaa75fd3d65f664570f6a5da 100644 (file)
@@ -272,7 +272,9 @@ static int get_ref_states(const struct ref *remote_refs, struct ref_states *stat
                        die("Could not get fetch map for refspec %s",
                                states->remote->fetch_refspec[i]);
 
-       states->new.strdup_strings = states->tracked.strdup_strings = 1;
+       states->new.strdup_strings = 1;
+       states->tracked.strdup_strings = 1;
+       states->stale.strdup_strings = 1;
        for (ref = fetch_map; ref; ref = ref->next) {
                unsigned char sha1[20];
                if (!ref->peer_ref || read_ref(ref->peer_ref->name, sha1))
@@ -768,7 +770,7 @@ static void clear_push_info(void *util, const char *string)
 static void free_remote_ref_states(struct ref_states *states)
 {
        string_list_clear(&states->new, 0);
-       string_list_clear(&states->stale, 0);
+       string_list_clear(&states->stale, 1);
        string_list_clear(&states->tracked, 0);
        string_list_clear(&states->heads, 0);
        string_list_clear_func(&states->push, clear_push_info);
@@ -1236,13 +1238,11 @@ static int update(int argc, const char **argv)
                fetch_argv[fetch_argc++] = "--prune";
        if (verbose)
                fetch_argv[fetch_argc++] = "-v";
-       if (argc < 2) {
+       fetch_argv[fetch_argc++] = "--multiple";
+       if (argc < 2)
                fetch_argv[fetch_argc++] = "default";
-       } else {
-               fetch_argv[fetch_argc++] = "--multiple";
-               for (i = 1; i < argc; i++)
-                       fetch_argv[fetch_argc++] = argv[i];
-       }
+       for (i = 1; i < argc; i++)
+               fetch_argv[fetch_argc++] = argv[i];
 
        if (strcmp(fetch_argv[fetch_argc-1], "default") == 0) {
                git_config(get_remote_default, &default_defined);