commit: error out for missing commit message template
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>
This commit is contained in:
parent
da656f17d3
commit
2140b14064
@ -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";
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user