提交 26e1e0b2 编写于 作者: T Tay Ray Chuan 提交者: Junio C Hamano

remote-curl: init walker only when needed

Invoke get_http_walker() only when fetching with the dumb protocol.
Additionally, add an invocation to walker_free() after we're done using
the walker.
Signed-off-by: NTay Ray Chuan <rctay89@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 aec49756
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
static struct remote *remote; static struct remote *remote;
static const char *url; static const char *url;
static struct walker *walker;
struct options { struct options {
int verbosity; int verbosity;
...@@ -22,12 +21,6 @@ struct options { ...@@ -22,12 +21,6 @@ struct options {
}; };
static struct options options; static struct options options;
static void init_walker(void)
{
if (!walker)
walker = get_http_walker(url);
}
static int set_option(const char *name, const char *value) static int set_option(const char *name, const char *value)
{ {
if (!strcmp(name, "verbosity")) { if (!strcmp(name, "verbosity")) {
...@@ -119,7 +112,6 @@ static struct discovery* discover_refs(const char *service) ...@@ -119,7 +112,6 @@ static struct discovery* discover_refs(const char *service)
} }
refs_url = strbuf_detach(&buffer, NULL); refs_url = strbuf_detach(&buffer, NULL);
init_walker();
http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE);
/* try again with "plain" url (no ? or & appended) */ /* try again with "plain" url (no ? or & appended) */
...@@ -500,7 +492,6 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) ...@@ -500,7 +492,6 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads)
struct child_process client; struct child_process client;
int err = 0; int err = 0;
init_walker();
memset(&client, 0, sizeof(client)); memset(&client, 0, sizeof(client));
client.in = -1; client.in = -1;
client.out = -1; client.out = -1;
...@@ -552,6 +543,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) ...@@ -552,6 +543,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads)
static int fetch_dumb(int nr_heads, struct ref **to_fetch) static int fetch_dumb(int nr_heads, struct ref **to_fetch)
{ {
struct walker *walker;
char **targets = xmalloc(nr_heads * sizeof(char*)); char **targets = xmalloc(nr_heads * sizeof(char*));
int ret, i; int ret, i;
...@@ -560,13 +552,14 @@ static int fetch_dumb(int nr_heads, struct ref **to_fetch) ...@@ -560,13 +552,14 @@ static int fetch_dumb(int nr_heads, struct ref **to_fetch)
for (i = 0; i < nr_heads; i++) for (i = 0; i < nr_heads; i++)
targets[i] = xstrdup(sha1_to_hex(to_fetch[i]->old_sha1)); targets[i] = xstrdup(sha1_to_hex(to_fetch[i]->old_sha1));
init_walker(); walker = get_http_walker(url);
walker->get_all = 1; walker->get_all = 1;
walker->get_tree = 1; walker->get_tree = 1;
walker->get_history = 1; walker->get_history = 1;
walker->get_verbosely = options.verbosity >= 3; walker->get_verbosely = options.verbosity >= 3;
walker->get_recover = 0; walker->get_recover = 0;
ret = walker_fetch(walker, nr_heads, targets, NULL, NULL); ret = walker_fetch(walker, nr_heads, targets, NULL, NULL);
walker_free(walker);
for (i = 0; i < nr_heads; i++) for (i = 0; i < nr_heads; i++)
free(targets[i]); free(targets[i]);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册