Skip to content

Commit

Permalink
Fix branches file configuration
Browse files Browse the repository at this point in the history
Fetched remote branch from .git/branches/foo should fetch into
refs/heads/foo.  Also when partial URL is given, the fetched head should
always be remote HEAD, and the result should not be stored anywhere.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Daniel Barkalow authored and Junio C Hamano committed Mar 26, 2008
1 parent c091b3d commit 472fa4c
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,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;
Expand All @@ -197,17 +197,33 @@ static void read_branches_file(struct remote *remote)
strcpy(p, s);
if (slash)
strcat(p, slash);

/*
* With "slash", e.g. "git fetch jgarzik/netdev-2.6" when
* reading from $GIT_DIR/branches/jgarzik fetches "HEAD" from
* the partial URL obtained from the branches file plus
* "/netdev-2.6" and does not store it in any tracking ref.
* #branch specifier in the file is ignored.
*
* Otherwise, the branches file would have URL and optionally
* #branch specified. The "master" (or specified) branch is
* fetched and stored in the local branch of the same name.
*/
strbuf_init(&branch, 0);
frag = strchr(p, '#');
if (frag) {
*(frag++) = '\0';
branch = xmalloc(strlen(frag) + 12);
strcpy(branch, "refs/heads/");
strcat(branch, frag);
strbuf_addf(&branch, "refs/heads/%s", frag);
} else
strbuf_addstr(&branch, "refs/heads/master");
if (!slash) {
strbuf_addf(&branch, ":refs/heads/%s", remote->name);
} else {
branch = "refs/heads/master";
strbuf_reset(&branch);
strbuf_addstr(&branch, "HEAD:");
}
add_url(remote, p);
add_fetch_refspec(remote, branch);
add_fetch_refspec(remote, strbuf_detach(&branch, 0));
remote->fetch_tags = 1; /* always auto-follow */
}

Expand Down

0 comments on commit 472fa4c

Please sign in to comment.