From: Junio C Hamano Date: Mon, 15 Mar 2010 07:58:50 +0000 (-0700) Subject: Merge branch 'tc/http-cleanup' X-Git-Tag: v1.7.1-rc0~65 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/78d909a4943e54a0730c973597bd309912f70397?ds=inline;hp=-c Merge branch 'tc/http-cleanup' * tc/http-cleanup: remote-curl: init walker only when needed remote-curl: use http_fetch_ref() instead of walker wrapper http: init and cleanup separately from http-walker http-walker: cleanup more thoroughly http-push: remove "|| 1" to enable verbose check t554[01]-http-push: refactor, add non-ff tests t5541-http-push: check that ref is unchanged for non-ff test --- 78d909a4943e54a0730c973597bd309912f70397 diff --combined remote-curl.c index d388120851,1f8bc2db73..b76bfcb3d3 --- a/remote-curl.c +++ b/remote-curl.c @@@ -10,7 -10,6 +10,6 @@@ static struct remote *remote; static const char *url; - static struct walker *walker; struct options { int verbosity; @@@ -22,12 -21,6 +21,6 @@@ }; static struct options options; - static void init_walker(void) - { - if (!walker) - walker = get_http_walker(url, remote); - } - static int set_option(const char *name, const char *value) { if (!strcmp(name, "verbosity")) { @@@ -119,7 -112,6 +112,6 @@@ static struct discovery* discover_refs( } refs_url = strbuf_detach(&buffer, NULL); - init_walker(); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); /* try again with "plain" url (no ? or & appended) */ @@@ -184,13 -176,13 +176,13 @@@ return last; } -static int write_discovery(int fd, void *data) +static int write_discovery(int in, int out, void *data) { struct discovery *heads = data; int err = 0; - if (write_in_full(fd, heads->buf, heads->len) != heads->len) + if (write_in_full(out, heads->buf, heads->len) != heads->len) err = 1; - close(fd); + close(out); return err; } @@@ -202,7 -194,6 +194,7 @@@ static struct ref *parse_git_refs(struc memset(&async, 0, sizeof(async)); async.proc = write_discovery; async.data = heads; + async.out = -1; if (start_async(&async)) die("cannot start thread to parse advertised refs"); @@@ -250,9 -241,8 +242,8 @@@ static struct ref *parse_info_refs(stru i++; } - init_walker(); ref = alloc_ref("HEAD"); - if (!walker->fetch_ref(walker, ref) && + if (!http_fetch_ref(url, ref) && !resolve_remote_symref(ref, refs)) { ref->next = refs; refs = ref; @@@ -502,7 -492,6 +493,6 @@@ static int rpc_service(struct rpc_stat struct child_process client; int err = 0; - init_walker(); memset(&client, 0, sizeof(client)); client.in = -1; client.out = -1; @@@ -554,6 -543,7 +544,7 @@@ static int fetch_dumb(int nr_heads, struct ref **to_fetch) { + struct walker *walker; char **targets = xmalloc(nr_heads * sizeof(char*)); int ret, i; @@@ -562,13 -552,14 +553,14 @@@ for (i = 0; i < nr_heads; i++) targets[i] = xstrdup(sha1_to_hex(to_fetch[i]->old_sha1)); - init_walker(); + walker = get_http_walker(url); walker->get_all = 1; walker->get_tree = 1; walker->get_history = 1; walker->get_verbosely = options.verbosity >= 3; walker->get_recover = 0; ret = walker_fetch(walker, nr_heads, targets, NULL, NULL); + walker_free(walker); for (i = 0; i < nr_heads; i++) free(targets[i]); @@@ -811,6 -802,8 +803,8 @@@ int main(int argc, const char **argv url = remote->url[0]; } + http_init(remote); + do { if (strbuf_getline(&buf, stdin, '\n') == EOF) break; @@@ -856,5 -849,8 +850,8 @@@ } strbuf_reset(&buf); } while (1); + + http_cleanup(); + return 0; }