Re: [PATCH 2/2] merge: make sure to terminate message with newline
From: Luca Weiss <hidden>
Date: 2021-07-21 11:27:31
On Samstag, 17. Juli 2021 19:47:20 CEST Jeff King wrote:
On Sat, Jul 17, 2021 at 02:40:55PM +0100, Phillip Wood wrote:quoted
quoted
which would cover that case. But Phillip mentioned that our own fmt_merge_msg() does not include a newline.I mentioned that we remove the newline that is added by fmt_merge_msg(), not that there is no newline added by fmt_merge_msg() - maybe I wasn't clear enough. In builtin/merge.c:prepare_merge_message() we do fmt_merge_msg(merge_names, merge_msg, &opts); if (merge_msg->len) strbuf_setlen(merge_msg, merge_msg->len - 1);Of maybe I didn't read carefully enough. :) Either way, thanks for clarifying. Doing something like: cat >.git/hooks/commit-msg <<\EOF #!/bin/sh xxd "$1" EOF chmod +x .git/hooks/commit-msg git merge --no-edit ... shows off the problem; the hook sees that intermediate state. Likewise if we do: git merge -m "foo" ... which similarly suppresses the editor. There are actually two interesting cases here: - if merge.log is not set, then we'd see "foo" with no newline - if it is set, we'll get a newline after "foo", but with no newline after the log data Likewise for: printf foo >no-newline git merge -F no-newline ... So I think we'd probably want to see a 3-patch series: 1. Make interpret-trailers handle input missing the final newline. This isn't strictly necessary after patches 2 and 3, but it makes sense to be more robust with unexpected input. 2. Drop the newline-stripping from prepare_merge_message(). The examples above show some ways we could cover this in the tests. This will help --no-edit case, but also using merge.log with "-m" or "-F". 3. Teach prepare_to_commit() to add the extra newline before letting hooks see the message. This should probably be done only when cleanup_mode != COMMIT_MSG_CLEANUP_NONE. Luca, do you want to try revising your series in that direction? -Peff
Hi Peff, if you have a good idea on how to create these patches, feel free to do so. If not, I can take a shot at it this or next week. Regards Luca