Skip to content

Commit

Permalink
init: handle empty "template" parameter
Browse files Browse the repository at this point in the history
If a user passes "--template=", then our template parameter
is blank. Unfortunately, copy_templates() assumes it has at
least one character, and does all sorts of bad things like
reading from template[-1] and then proceeding to link all of
'/' into the .git directory.

This patch just checks for that condition in copy_templates
and aborts. As a side effect, this means that --template=
now has the meaning "don't copy any templates."

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jul 28, 2008
1 parent 8e1db38 commit 172035f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
2 changes: 2 additions & 0 deletions builtin-init-db.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ static void copy_templates(const char *template_dir)
template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
if (!template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
return;
strcpy(template_path, template_dir);
template_len = strlen(template_path);
if (template_path[template_len-1] != '/') {
Expand Down
26 changes: 26 additions & 0 deletions t/t0001-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,30 @@ test_expect_success 'reinit' '
test_cmp again/empty again/err2
'

test_expect_success 'init with --template' '
mkdir template-source &&
echo content >template-source/file &&
(
mkdir template-custom &&
cd template-custom &&
git init --template=../template-source
) &&
test_cmp template-source/file template-custom/.git/file
'

test_expect_success 'init with --template (blank)' '
(
mkdir template-plain &&
cd template-plain &&
git init
) &&
test -f template-plain/.git/info/exclude &&
(
mkdir template-blank &&
cd template-blank &&
git init --template=
) &&
! test -f template-blank/.git/info/exclude
'

test_done

0 comments on commit 172035f

Please sign in to comment.