summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2012-08-29 14:20:53 +0200
committernulltoken <emeric.fermas@gmail.com>2012-08-29 19:56:55 +0200
commit89cd5708d94d8eb68a5e3a7b0fbda6ee904fb148 (patch)
treeb9ab5294270cbda955a82c9afb774abbb7efbf3a
parent319ad0ba208ec67523a808269b8662c88727a0c9 (diff)
downloadlibgit2-89cd5708d94d8eb68a5e3a7b0fbda6ee904fb148.tar.gz
repository: make initialization cope with missing core.worktree
-rw-r--r--src/repository.c4
-rw-r--r--tests-clar/repo/init.c15
2 files changed, 17 insertions, 2 deletions
diff --git a/src/repository.c b/src/repository.c
index c12df25c..b9d180da 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -777,8 +777,8 @@ static int repo_init_config(
SET_REPO_CONFIG(string, "core.worktree", work_dir);
}
else if ((opts->flags & GIT_REPOSITORY_INIT__IS_REINIT) != 0) {
- if ((error = git_config_delete(config, "core.worktree")) < 0)
- goto cleanup;
+ if (git_config_delete(config, "core.worktree") < 0)
+ giterr_clear();
}
} else {
if (!are_symlinks_supported(repo_dir))
diff --git a/tests-clar/repo/init.c b/tests-clar/repo/init.c
index 67a9917d..f76e8bc3 100644
--- a/tests-clar/repo/init.c
+++ b/tests-clar/repo/init.c
@@ -378,3 +378,18 @@ void test_repo_init__extended_with_template(void)
cleanup_repository("templated.git");
}
+
+void test_repo_init__can_reinit_an_initialized_repository(void)
+{
+ git_repository *reinit;
+
+ cl_git_pass(git_futils_mkdir("extended", NULL, 0775, 0));
+ cl_git_pass(git_repository_init(&_repo, "extended", false));
+
+ cl_git_pass(git_repository_init(&reinit, "extended", false));
+
+ cl_assert_equal_s(git_repository_path(_repo), git_repository_path(reinit));
+
+ git_repository_free(reinit);
+ cleanup_repository("extended");
+}