Skip to content

Commit

Permalink
commit: error out for missing commit message template
Browse files Browse the repository at this point in the history
When "git commit" was rewritten in C (v1.5.4-rc0~78^2~30,
2007-11-08), a subtle bug in --template was introduced.  If the
file named by a --template parameter is missing, previously git
would error out with a message:

	Commit template file does not exist.

but in the C version the --template parameter gets ignored and
the default template is used.

t7500 has two tests for this case which would have caught it, except
that with the default $EDITOR, the commit message template is left
unmodified, causing 'git commit' to error out and the test to
succeed.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Feb 25, 2011
1 parent da656f1 commit 2140b14
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion builtin/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
if (strbuf_read_file(&sb, git_path("SQUASH_MSG"), 0) < 0)
die_errno("could not read SQUASH_MSG");
hook_arg1 = "squash";
} else if (template_file && !stat(template_file, &statbuf)) {
} else if (template_file) {
if (strbuf_read_file(&sb, template_file, 0) < 0)
die_errno("could not read '%s'", template_file);
hook_arg1 = "template";
Expand Down
14 changes: 11 additions & 3 deletions t/t7500-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,21 @@ test_expect_success 'a basic commit in an empty tree should succeed' '
test_expect_success 'nonexistent template file should return error' '
echo changes >> foo &&
git add foo &&
test_must_fail git commit --template "$PWD"/notexist
(
GIT_EDITOR="echo hello >\"\$1\"" &&
export GIT_EDITOR &&
test_must_fail git commit --template "$PWD"/notexist
)
'

test_expect_success 'nonexistent template file in config should return error' '
git config commit.template "$PWD"/notexist &&
test_must_fail git commit &&
git config --unset commit.template
test_when_finished "git config --unset commit.template" &&
(
GIT_EDITOR="echo hello >\"\$1\"" &&
export GIT_EDITOR &&
test_must_fail git commit
)
'

# From now on we'll use a template file that exists.
Expand Down

0 comments on commit 2140b14

Please sign in to comment.