Skip to content

Commit

Permalink
remote-curl: Refactor walker initialization
Browse files Browse the repository at this point in the history
We will need the walker, url and remote in other functions as the
code grows larger to support smart HTTP.  Extract this out into a
set of globals we can easily reference once configured.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
CC: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Oct 31, 2009
1 parent 78affc4 commit 37a8768
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions remote-curl.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,17 @@
#include "http.h"
#include "exec_cmd.h"

static struct ref *get_refs(struct walker *walker, const char *url)
static struct remote *remote;
static const char *url;
static struct walker *walker;

static void init_walker(void)
{
if (!walker)
walker = get_http_walker(url, remote);
}

static struct ref *get_refs(void)
{
struct strbuf buffer = STRBUF_INIT;
char *data, *start, *mid;
Expand All @@ -21,6 +31,7 @@ static struct ref *get_refs(struct walker *walker, const char *url)
refs_url = xmalloc(strlen(url) + 11);
sprintf(refs_url, "%s/info/refs", url);

init_walker();
http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE);
switch (http_ret) {
case HTTP_OK:
Expand Down Expand Up @@ -78,10 +89,7 @@ static struct ref *get_refs(struct walker *walker, const char *url)

int main(int argc, const char **argv)
{
struct remote *remote;
struct strbuf buf = STRBUF_INIT;
const char *url;
struct walker *walker = NULL;

git_extract_argv0_path(argv[0]);
setup_git_directory();
Expand All @@ -103,8 +111,7 @@ int main(int argc, const char **argv)
break;
if (!prefixcmp(buf.buf, "fetch ")) {
char *obj = buf.buf + strlen("fetch ");
if (!walker)
walker = get_http_walker(url, remote);
init_walker();
walker->get_all = 1;
walker->get_tree = 1;
walker->get_history = 1;
Expand All @@ -115,11 +122,8 @@ int main(int argc, const char **argv)
printf("\n");
fflush(stdout);
} else if (!strcmp(buf.buf, "list")) {
struct ref *refs;
struct ref *refs = get_refs();
struct ref *posn;
if (!walker)
walker = get_http_walker(url, remote);
refs = get_refs(walker, url);
for (posn = refs; posn; posn = posn->next) {
if (posn->symref)
printf("@%s %s\n", posn->symref, posn->name);
Expand Down

0 comments on commit 37a8768

Please sign in to comment.