Linus Torvalds [off-list ref] writes:
In that rewrite, removing some temporary files seems to have been left
out. At least one: .git/COMMIT_EDITMSG.
In the original commit.sh shell script, we can find this:
rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" "$GIT_DIR/SQUASH_MSG"
after creating the commit. In the C implementation, we do have a
number of "unlink(...)" calls:
...
but no
unlink(git_path_commit_editmsg());
and that *seems* to be an oversight.
Similarly, builtin/tag,c leaves a stale TAG_EDITMSG file behind.
Again, that actually did exist in the original shell script, which
used to do
trap 'rm -f "$GIT_DIR"/TAG_TMP* "$GIT_DIR"/TAG_FINALMSG
"$GIT_DIR"/TAG_EDITMSG' 0
which caused that file to be removed at exit.
I do not think it was intentional---just a bug in the rewrite.