diff --git a/builtin-fetch.c b/builtin-fetch.c
index 670af0b53f72e370368fddc1e911504a01979f6a..caaca63644b91b414d808079e14aee38c2a6eda7 100644 (file)
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
remote->fetch[i].dst[0])
*autotags = 1;
if (!i && !has_merge && ref_map &&
- !strcmp(remote->fetch[0].src, ref_map->name))
+ !remote->fetch[0].pattern)
ref_map->merge = 1;
}
if (has_merge)
ref_map->merge = 1;
}
}
+ ref_remove_duplicates(ref_map);
return ref_map;
}
if (transport->remote->fetch_tags == -1)
no_tags = 1;
- if (!transport->ops || !transport->ops->get_refs_list ||
- !transport->ops->fetch)
+ if (!transport->get_refs_list || !transport->fetch)
die("Don't know how to fetch from %s", transport->url);
/* if not appending, truncate FETCH_HEAD */
return 0;
}
+static void set_option(const char *name, const char *value)
+{
+ int r = transport_set_option(transport, name, value);
+ if (r < 0)
+ die("Option \"%s\" value \"%s\" is not valid for %s\n",
+ name, value, transport->url);
+ if (r > 0)
+ warning("Option \"%s\" is ignored for %s\n",
+ name, transport->url);
+}
+
int cmd_fetch(int argc, const char **argv, const char *prefix)
{
struct remote *remote;
else
remote = remote_get(argv[i++]);
- transport = transport_get(remote, remote->uri[0]);
+ transport = transport_get(remote, remote->url[0]);
if (verbose >= 2)
transport->verbose = 1;
if (quiet)
- transport->verbose = 0;
+ transport->verbose = -1;
if (upload_pack)
- transport_set_option(transport, TRANS_OPT_UPLOADPACK, upload_pack);
+ set_option(TRANS_OPT_UPLOADPACK, upload_pack);
if (keep)
- transport_set_option(transport, TRANS_OPT_KEEP, "yes");
- transport_set_option(transport, TRANS_OPT_DEPTH, depth);
+ set_option(TRANS_OPT_KEEP, "yes");
+ if (depth)
+ set_option(TRANS_OPT_DEPTH, depth);
if (!transport->url)
die("Where do you want to fetch from today?");