On Tue, 25 Mar 2008 19:35:28 -0400 (EDT) Daniel Barkalow <barkalow@xxxxxxxxxxxx> wrote: > It turns out that .git/branches/foo should fetch into refs/heads/foo. > > Signed-off-by: Daniel Barkalow <barkalow@xxxxxxxxxxxx> > --- > We still don't have a test for that bit of the behavior, so I could have > it still doing the wrong thing. But it at least should do what I think > people want. > > Andrew, could you give this a try, on top of current master (or, for that > matter, any released version that doesn't work), and let me know if it > does the wrong thing? > I tried it on 1.5.5-rc1. It seems to dtrt from a quick test. > diff --git a/remote.c b/remote.c > index 40ed246..a027bca 100644 > --- a/remote.c > +++ b/remote.c > @@ -232,7 +232,7 @@ static void read_branches_file(struct remote *remote) > { > const char *slash = strchr(remote->name, '/'); > char *frag; > - char *branch; > + struct strbuf branch; > int n = slash ? slash - remote->name : 1000; > FILE *f = fopen(git_path("branches/%.*s", n, remote->name), "r"); > char *s, *p; > @@ -258,17 +258,16 @@ static void read_branches_file(struct remote *remote) > strcpy(p, s); > if (slash) > strcat(p, slash); > + strbuf_init(&branch, 0); > frag = strchr(p, '#'); > if (frag) { > *(frag++) = '\0'; > - branch = xmalloc(strlen(frag) + 12); > - strcpy(branch, "refs/heads/"); > - strcat(branch, frag); > - } else { > - branch = "refs/heads/master"; > - } > + strbuf_addf(&branch, "refs/heads/%s", frag); > + } else > + strbuf_addstr(&branch, "refs/heads/master"); > add_url_alias(remote, p); > - add_fetch_refspec(remote, branch); > + strbuf_addf(&branch, ":refs/heads/%s", remote->name); > + add_fetch_refspec(remote, strbuf_detach(&branch, 0)); > remote->fetch_tags = 1; /* always auto-follow */ > } > > -- > 1.5.4.3.610.gea6cd -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html