Jeff King <p...@peff.net> writes:

> I guessed that this might have come from the conversion of "message"
> form a pointer (which could be NULL) into a strbuf. And indeed, it looks
> like f956853 (builtin-commit: resurrect behavior for multiple -m
> options, 2007-11-11) did that.

Yikes.  That is a quite ancient breakage.

The funny thing is that we did address the same breakage in 25206778
(commit: don't start editor if empty message is given with -m,
2013-05-25), but didn't notice that there are other breakages of the
same nature.

I think all message.len check can and should be have_option_m
instead.

 - The one in the first hunk is a fix for the issue that "-m ''" is
   ignored and we read from use_message etc., which is the original
   issue in this thread.

 - The second one is a fix for your "git commit -m '' -F f" example
   that does not error out.

 - The last one is a fix for "git -c commit.template=f commit -m ''"
   that still uses the template file 'f'.

 builtin/commit.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/builtin/commit.c b/builtin/commit.c
index 98e1527..391126e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -695,7 +695,7 @@ static int prepare_to_commit(const char *index_file, const 
char *prefix,
                }
        }
 
-       if (message.len) {
+       if (have_option_m) {
                strbuf_addbuf(&sb, &message);
                hook_arg1 = "message";
        } else if (logfile && !strcmp(logfile, "-")) {
@@ -1172,9 +1172,9 @@ static int parse_and_validate_options(int argc, const 
char *argv[],
                f++;
        if (f > 1)
                die(_("Only one of -c/-C/-F/--fixup can be used."));
-       if (message.len && f > 0)
+       if (have_option_m && f > 0)
                die((_("Option -m cannot be combined with -c/-C/-F/--fixup.")));
-       if (f || message.len)
+       if (f || have_option_m)
                template_file = NULL;
        if (edit_message)
                use_message = edit_message;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to