init: make --template path relative to $CWD
During git-init we chdir() to the target directory, but --template is not adjusted. So it's relative to the target directory instead of current directory. It would be ok if it's documented, but --template in git-init.txt mentions nothing about this behavior. Change it to be relative to $CWD, which is much more intuitive. The changes in the test suite show that this relative-to-target behavior is actually used. I just hope that it's only used in the test suite and it's safe to change. Otherwise, the other option is just document it (i.e. relative to target dir) and move on. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
aeb582a983
commit
e1df7fe43f
@ -494,6 +494,9 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
|
||||
if (real_git_dir && !is_absolute_path(real_git_dir))
|
||||
real_git_dir = real_pathdup(real_git_dir, 1);
|
||||
|
||||
if (template_dir && *template_dir && !is_absolute_path(template_dir))
|
||||
template_dir = absolute_pathdup(template_dir);
|
||||
|
||||
if (argc == 1) {
|
||||
int mkdir_tried = 0;
|
||||
retry:
|
||||
|
@ -174,7 +174,7 @@ test_expect_success 'reinit' '
|
||||
test_expect_success 'init with --template' '
|
||||
mkdir template-source &&
|
||||
echo content >template-source/file &&
|
||||
git init --template=../template-source template-custom &&
|
||||
git init --template=template-source template-custom &&
|
||||
test_cmp template-source/file template-custom/.git/file
|
||||
'
|
||||
|
||||
|
@ -136,7 +136,7 @@ test_expect_success POSIXPERM 'forced modes' '
|
||||
(
|
||||
cd new &&
|
||||
umask 002 &&
|
||||
git init --shared=0660 --template=../templates &&
|
||||
git init --shared=0660 --template=templates &&
|
||||
>frotz &&
|
||||
git add frotz &&
|
||||
git commit -a -m initial &&
|
||||
@ -192,7 +192,7 @@ test_expect_success POSIXPERM 're-init respects core.sharedrepository (remote)'
|
||||
umask 0022 &&
|
||||
git init --bare --shared=0666 child.git &&
|
||||
test_path_is_missing child.git/foo &&
|
||||
git init --bare --template=../templates child.git &&
|
||||
git init --bare --template=templates child.git &&
|
||||
echo "-rw-rw-rw-" >expect &&
|
||||
test_modebits child.git/foo >actual &&
|
||||
test_cmp expect actual
|
||||
@ -203,7 +203,7 @@ test_expect_success POSIXPERM 'template can set core.sharedrepository' '
|
||||
umask 0022 &&
|
||||
git config core.sharedrepository 0666 &&
|
||||
cp .git/config templates/config &&
|
||||
git init --bare --template=../templates child.git &&
|
||||
git init --bare --template=templates child.git &&
|
||||
echo "-rw-rw-rw-" >expect &&
|
||||
test_modebits child.git/HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
|
Loading…
Reference in New Issue
Block a user