Skip to content

Commit f2f12d1

Browse files
peffgitster
authored andcommitted
remote: don't resolve HEAD in non-repository
The remote-config code wants to look at HEAD to mark the current branch specially. But if we are not in a repository (e.g., running "git archive --remote"), this makes no sense; there is no HEAD to look at, and we have no current branch. This doesn't really cause any bugs in practice (if you are not in a repo, you probably don't have a .git/HEAD file), but we should be more careful about triggering the refs code at all in a non-repo. As we grow new ref backends, we would not even know which backend to use. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent f1c126b commit f2f12d1

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

remote.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -455,18 +455,19 @@ static void read_config(void)
455455
{
456456
static int loaded;
457457
struct object_id oid;
458-
const char *head_ref;
459458
int flag;
460459

461460
if (loaded)
462461
return;
463462
loaded = 1;
464463

465464
current_branch = NULL;
466-
head_ref = resolve_ref_unsafe("HEAD", 0, oid.hash, &flag);
467-
if (head_ref && (flag & REF_ISSYMREF) &&
468-
skip_prefix(head_ref, "refs/heads/", &head_ref)) {
469-
current_branch = make_branch(head_ref, 0);
465+
if (startup_info->have_repository) {
466+
const char *head_ref = resolve_ref_unsafe("HEAD", 0, oid.hash, &flag);
467+
if (head_ref && (flag & REF_ISSYMREF) &&
468+
skip_prefix(head_ref, "refs/heads/", &head_ref)) {
469+
current_branch = make_branch(head_ref, 0);
470+
}
470471
}
471472
git_config(handle_config, NULL);
472473
alias_all_urls();

0 commit comments

Comments
 (0)