diff options
-rw-r--r-- | src/repository.c | 3 | ||||
-rw-r--r-- | tests/repo/init.c | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/repository.c b/src/repository.c index 948413d17..de1a89582 100644 --- a/src/repository.c +++ b/src/repository.c @@ -2092,7 +2092,8 @@ static int repo_init_head(const char *repo_dir, const char *given) if (given) { initial_head = given; } else if ((error = git_config_open_default(&cfg)) >= 0 && - (error = git_config_get_string_buf(&cfg_branch, cfg, "init.defaultbranch")) >= 0) { + (error = git_config_get_string_buf(&cfg_branch, cfg, "init.defaultbranch")) >= 0 && + *cfg_branch.ptr) { initial_head = cfg_branch.ptr; } diff --git a/tests/repo/init.c b/tests/repo/init.c index b86e09a58..01371ba78 100644 --- a/tests/repo/init.c +++ b/tests/repo/init.c @@ -688,3 +688,19 @@ void test_repo_init__defaultbranch_config(void) git_reference_free(head); } + +void test_repo_init__defaultbranch_config_empty(void) +{ + git_reference *head; + + cl_set_cleanup(&cleanup_repository, "repo"); + + create_tmp_global_config("tmp_global_path", "init.defaultbranch", ""); + + cl_git_pass(git_repository_init(&g_repo, "repo", 0)); + cl_git_pass(git_reference_lookup(&head, g_repo, "HEAD")); + + cl_assert_equal_s("refs/heads/master", git_reference_symbolic_target(head)); + + git_reference_free(head); +} |