X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=init-db.c;h=aabc09f4e1f714f5b4c1adba388fc47b41e16b0b;hb=794f9fe7db30e2aff8f8f0543c6d18bf579cdbc2;hp=902bdfaafb53e15382c901936a1ccd2fec90f0f3;hpb=a9ab586a5db015d200dfdadcf5876d62f15dd36c;p=git.git diff --git a/init-db.c b/init-db.c index 902bdfaa..aabc09f4 100644 --- a/init-db.c +++ b/init-db.c @@ -154,6 +154,7 @@ static void copy_templates(const char *git_dir, int len, char *template_dir) } memcpy(path, git_dir, len); + path[len] = 0; copy_templates_1(path, len, template_path, template_len, dir); @@ -165,6 +166,7 @@ static void create_default_files(const char *git_dir, { unsigned len = strlen(git_dir); static char path[PATH_MAX]; + unsigned char sha1[20]; if (len > sizeof(path)-50) die("insane git directory %s", git_dir); @@ -185,15 +187,14 @@ static void create_default_files(const char *git_dir, /* * Create the default symlink from ".git/HEAD" to the "master" - * branch + * branch, if it does not exist yet. */ strcpy(path + len, "HEAD"); - if (symlink("refs/heads/master", path) < 0) { - if (errno != EEXIST) { - perror(path); + if (read_ref(path, sha1) < 0) { + if (create_symref(path, "refs/heads/master") < 0) exit(1); - } } + path[len] = 0; copy_templates(path, len, template_path); }