[PATCH] autodetect core.symlinks in git-init
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:31
We already autodetect if filemode is reliable on the filesystem to deal with VFAT and friends. Do the same for symbolic link support. Signed-off-by: Junio C Hamano <redacted> --- * The earlier one left the test symlink behind after testing is complete. Embarrassing... builtin-init-db.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/builtin-init-db.c b/builtin-init-db.c
index af15cb2..763fa55 100644
--- a/builtin-init-db.c
+++ b/builtin-init-db.c@@ -264,6 +264,21 @@ static int create_default_files(const char *git_dir, const char *template_path) if (work_tree != git_work_tree_cfg) git_config_set("core.worktree", work_tree); } + + /* Check if symlink is supported in the work tree */ + if (!reinit) { + path[len] = 0; + strcpy(path + len, "tXXXXXX"); + if (!close(xmkstemp(path)) && + !unlink(path) && + !symlink("testing", path) && + !lstat(path, &st1) && + S_ISLNK(st1.st_mode)) + unlink(path); /* good */ + else + git_config_set("core.symlinks", "false"); + } + return reinit; }