init-db: document existing bug with core.bare in template config
The comments in create_default_files() talks about reading config from the config file in the specified `--templates` directory, which leads to the question of whether core.bare could be set in such a config file and thus whether the code is doing the right thing. It turns out, that it doesn't; it unconditionally ignores core.bare in the config file in any --templates directory. It is not clear to me that fixing it can be done within this function; it seems to occur too late: * create_default_files() is called by init_db() * init_db() is called by both builtin/{clone.c,init-db.c} * both callers of init_db() call set_git_work_tree() before init_db() and in order to actual affect whether a repository is bear, we'd need to somewhere reset these values, not just the is_bare_repository_cfg setting. I do not want to open this can of worms at this time; I'm trying to clean up some headers, for which I need to move some functions, for which I need to clean up some globals, and that's far enough down the rabbit hole. So, simply document the issue with a careful TODO comment and a few testcases. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
6640c2d06d
commit
0f7443bdc7
@ -52,6 +52,28 @@ test_expect_success 'shared=all' '
|
||||
test 2 = $(git config core.sharedrepository)
|
||||
'
|
||||
|
||||
test_expect_failure 'template can set core.bare' '
|
||||
test_when_finished "rm -rf subdir" &&
|
||||
test_when_finished "rm -rf templates" &&
|
||||
test_config core.bare true &&
|
||||
umask 0022 &&
|
||||
mkdir -p templates/ &&
|
||||
cp .git/config templates/config &&
|
||||
git init --template=templates subdir &&
|
||||
test_path_exists subdir/HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'template can set core.bare but overridden by command line' '
|
||||
test_when_finished "rm -rf subdir" &&
|
||||
test_when_finished "rm -rf templates" &&
|
||||
test_config core.bare true &&
|
||||
umask 0022 &&
|
||||
mkdir -p templates/ &&
|
||||
cp .git/config templates/config &&
|
||||
git init --no-bare --template=templates subdir &&
|
||||
test_path_exists subdir/.git/HEAD
|
||||
'
|
||||
|
||||
test_expect_success POSIXPERM 'update-server-info honors core.sharedRepository' '
|
||||
: > a1 &&
|
||||
git add a1 &&
|
||||
|
Reference in New Issue
Block a user