summaryrefslogtreecommitdiff
path: root/builtin-init-db.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-08-31 00:25:04 -0700
committerJunio C Hamano <gitster@pobox.com>2007-08-31 00:25:04 -0700
commit75d244990364e322e87e2549846b17252f440627 (patch)
tree94afcf0b20cb51bff4c8f7a6129eba8a72079664 /builtin-init-db.c
parent608403d7a522adb3f8c0244956a332ed1b286668 (diff)
downloadgit-75d244990364e322e87e2549846b17252f440627.tar.gz
git-init: autodetect core.symlinks
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 <gitster@pobox.com>
Diffstat (limited to 'builtin-init-db.c')
-rw-r--r--builtin-init-db.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/builtin-init-db.c b/builtin-init-db.c
index af15cb2739..763fa55e76 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;
}