Merge branch 'cf/maint-remote-uploadpack-useconfig-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 2 Jul 2009 02:40:54 +0000 (19:40 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 2 Jul 2009 02:40:54 +0000 (19:40 -0700)
* cf/maint-remote-uploadpack-useconfig-fix:
git-remote: fix missing .uploadpack usage for show command

1  2 
builtin-remote.c
diff --combined builtin-remote.c
index 2fb76d32f86cb4e699036b40eac9bd9a747fb77f,7685cfcaf08bef280576ea5f39e62dc1b92ae22c..008abfe0922f6d1662aebcfbf63ba9f47de4ae65
@@@ -79,8 -79,7 +79,8 @@@ static int add(int argc, const char **a
                OPT_END()
        };
  
 -      argc = parse_options(argc, argv, options, builtin_remote_usage, 0);
 +      argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
 +                           0);
  
        if (argc < 2)
                usage_with_options(builtin_remote_usage, options);
@@@ -295,14 -294,17 +295,14 @@@ static int get_push_ref_states(const st
        struct ref_states *states)
  {
        struct remote *remote = states->remote;
 -      struct ref *ref, *local_refs, *push_map, **push_tail;
 +      struct ref *ref, *local_refs, *push_map;
        if (remote->mirror)
                return 0;
  
        local_refs = get_local_heads();
        push_map = copy_ref_list(remote_refs);
  
 -      push_tail = &push_map;
 -      while (*push_tail)
 -              push_tail = &((*push_tail)->next);
 -      match_refs(local_refs, push_map, &push_tail, remote->push_refspec_nr,
 +      match_refs(local_refs, &push_map, remote->push_refspec_nr,
                   remote->push_refspec, MATCH_REFS_NONE);
  
        states->push.strdup_strings = 1;
@@@ -740,7 -742,7 +740,7 @@@ static int rm(int argc, const char **ar
        return result;
  }
  
 -void clear_push_info(void *util, const char *string)
 +static void clear_push_info(void *util, const char *string)
  {
        struct push_info *info = util;
        free(info->dest);
@@@ -787,7 -789,7 +787,7 @@@ static int get_remote_ref_states(const 
        read_branches();
  
        if (query) {
-               transport = transport_get(NULL, states->remote->url_nr > 0 ?
+               transport = transport_get(states->remote, states->remote->url_nr > 0 ?
                        states->remote->url[0] : NULL);
                remote_refs = transport_get_remote_refs(transport);
                transport_disconnect(transport);
@@@ -815,7 -817,7 +815,7 @@@ struct show_info 
        int any_rebase;
  };
  
 -int add_remote_to_show_info(struct string_list_item *item, void *cb_data)
 +static int add_remote_to_show_info(struct string_list_item *item, void *cb_data)
  {
        struct show_info *info = cb_data;
        int n = strlen(item->string);
        return 0;
  }
  
 -int show_remote_info_item(struct string_list_item *item, void *cb_data)
 +static int show_remote_info_item(struct string_list_item *item, void *cb_data)
  {
        struct show_info *info = cb_data;
        struct ref_states *states = info->states;
        return 0;
  }
  
 -int add_local_to_show_info(struct string_list_item *branch_item, void *cb_data)
 +static int add_local_to_show_info(struct string_list_item *branch_item, void *cb_data)
  {
        struct show_info *show_info = cb_data;
        struct ref_states *states = show_info->states;
        return 0;
  }
  
 -int show_local_info_item(struct string_list_item *item, void *cb_data)
 +static int show_local_info_item(struct string_list_item *item, void *cb_data)
  {
        struct show_info *show_info = cb_data;
        struct branch_info *branch_info = item->util;
        return 0;
  }
  
 -int add_push_to_show_info(struct string_list_item *push_item, void *cb_data)
 +static int add_push_to_show_info(struct string_list_item *push_item, void *cb_data)
  {
        struct show_info *show_info = cb_data;
        struct push_info *push_info = push_item->util;
@@@ -935,7 -937,7 +935,7 @@@ static int cmp_string_with_push(const v
        return cmp ? cmp : strcmp(a_push->dest, b_push->dest);
  }
  
 -int show_push_info_item(struct string_list_item *item, void *cb_data)
 +static int show_push_info_item(struct string_list_item *item, void *cb_data)
  {
        struct show_info *show_info = cb_data;
        struct push_info *push_info = item->util;
@@@ -984,8 -986,7 +984,8 @@@ static int show(int argc, const char **
        struct string_list info_list = { NULL, 0, 0, 0 };
        struct show_info info;
  
 -      argc = parse_options(argc, argv, options, builtin_remote_usage, 0);
 +      argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
 +                           0);
  
        if (argc < 1)
                return show_all();
        info.list = &info_list;
        for (; argc; argc--, argv++) {
                int i;
 +              const char **url;
 +              int url_nr;
  
                get_remote_ref_states(*argv, &states, query_flag);
  
                printf("* remote %s\n", *argv);
 -              if (states.remote->url_nr) {
 -                      for (i=0; i < states.remote->url_nr; i++)
 -                              printf("  URL: %s\n", states.remote->url[i]);
 -              } else
 -                      printf("  URL: %s\n", "(no URL)");
 +              printf("  Fetch URL: %s\n", states.remote->url_nr > 0 ?
 +                      states.remote->url[0] : "(no URL)");
 +              if (states.remote->pushurl_nr) {
 +                      url = states.remote->pushurl;
 +                      url_nr = states.remote->pushurl_nr;
 +              } else {
 +                      url = states.remote->url;
 +                      url_nr = states.remote->url_nr;
 +              }
 +              for (i=0; i < url_nr; i++)
 +                      printf("  Push  URL: %s\n", url[i]);
 +              if (!i)
 +                      printf("  Push  URL: %s\n", "(no URL)");
                if (no_query)
                        printf("  HEAD branch: (not queried)\n");
                else if (!states.heads.nr)
@@@ -1088,8 -1079,7 +1088,8 @@@ static int set_head(int argc, const cha
                            "delete refs/remotes/<name>/HEAD"),
                OPT_END()
        };
 -      argc = parse_options(argc, argv, options, builtin_remote_usage, 0);
 +      argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
 +                           0);
        if (argc)
                strbuf_addf(&buf, "refs/remotes/%s/HEAD", argv[0]);
  
@@@ -1143,8 -1133,7 +1143,8 @@@ static int prune(int argc, const char *
                OPT_END()
        };
  
 -      argc = parse_options(argc, argv, options, builtin_remote_usage, 0);
 +      argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
 +                           0);
  
        if (argc < 1)
                usage_with_options(builtin_remote_usage, options);
@@@ -1197,7 -1186,7 +1197,7 @@@ static int get_one_remote_for_update(st
        return 0;
  }
  
 -struct remote_group {
 +static struct remote_group {
        const char *name;
        struct string_list *list;
  } remote_group;
@@@ -1234,7 -1223,7 +1234,7 @@@ static int update(int argc, const char 
                OPT_END()
        };
  
 -      argc = parse_options(argc, argv, options, builtin_remote_usage,
 +      argc = parse_options(argc, argv, NULL, options, builtin_remote_usage,
                             PARSE_OPT_KEEP_ARGV0);
        if (argc < 2) {
                argc = 2;
  static int get_one_entry(struct remote *remote, void *priv)
  {
        struct string_list *list = priv;
 +      struct strbuf url_buf = STRBUF_INIT;
 +      const char **url;
 +      int i, url_nr;
  
        if (remote->url_nr > 0) {
 -              int i;
 -
 -              for (i = 0; i < remote->url_nr; i++)
 -                      string_list_append(remote->name, list)->util = (void *)remote->url[i];
 +              strbuf_addf(&url_buf, "%s (fetch)", remote->url[0]);
 +              string_list_append(remote->name, list)->util =
 +                              strbuf_detach(&url_buf, NULL);
        } else
                string_list_append(remote->name, list)->util = NULL;
 +      if (remote->pushurl_nr) {
 +              url = remote->pushurl;
 +              url_nr = remote->pushurl_nr;
 +      } else {
 +              url = remote->url;
 +              url_nr = remote->url_nr;
 +      }
 +      for (i = 0; i < url_nr; i++)
 +      {
 +              strbuf_addf(&url_buf, "%s (push)", url[i]);
 +              string_list_append(remote->name, list)->util =
 +                              strbuf_detach(&url_buf, NULL);
 +      }
  
        return 0;
  }
  static int show_all(void)
  {
        struct string_list list = { NULL, 0, 0 };
 -      int result = for_each_remote(get_one_entry, &list);
 +      int result;
 +
 +      list.strdup_strings = 1;
 +      result = for_each_remote(get_one_entry, &list);
  
        if (!result) {
                int i;
                        }
                }
        }
 +      string_list_clear(&list, 1);
        return result;
  }
  
@@@ -1339,7 -1309,7 +1339,7 @@@ int cmd_remote(int argc, const char **a
        };
        int result;
  
 -      argc = parse_options(argc, argv, options, builtin_remote_usage,
 +      argc = parse_options(argc, argv, prefix, options, builtin_remote_usage,
                PARSE_OPT_STOP_AT_NON_OPTION);
  
        if (argc < 1)