Skip to content

Commit

Permalink
commit: don't start editor if empty message is given with -m
Browse files Browse the repository at this point in the history
If an empty message is specified with the option -m of git commit then
the editor is started.  That's unexpected and unnecessary.  Instead of
using the length of the message string for checking if the user
specified one, directly remember if the option -m was given.

Reported-by: Mislav Marohnić <mislav.marohnic@gmail.com>
Signed-off-by: René Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
René Scharfe authored and Junio C Hamano committed May 28, 2013
1 parent 92758dd commit 2520677
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
10 changes: 6 additions & 4 deletions builtin/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ static const char *cleanup_arg;

static enum commit_whence whence;
static int use_editor = 1, include_status = 1;
static int show_ignored_in_status;
static int show_ignored_in_status, have_option_m;
static const char *only_include_assumed;
static struct strbuf message = STRBUF_INIT;

Expand All @@ -121,9 +121,11 @@ static enum {
static int opt_parse_m(const struct option *opt, const char *arg, int unset)
{
struct strbuf *buf = opt->value;
if (unset)
if (unset) {
have_option_m = 0;
strbuf_setlen(buf, 0);
else {
} else {
have_option_m = 1;
if (buf->len)
strbuf_addch(buf, '\n');
strbuf_addstr(buf, arg);
Expand Down Expand Up @@ -975,7 +977,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
if (force_author && renew_authorship)
die(_("Using both --reset-author and --author does not make sense"));

if (logfile || message.len || use_message || fixup_message)
if (logfile || have_option_m || use_message || fixup_message)
use_editor = 0;
if (0 <= edit_flag)
use_editor = edit_flag;
Expand Down
17 changes: 17 additions & 0 deletions t/t7502-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,23 @@ test_expect_success !AUTOIDENT 'do not fire editor when committer is bogus' '
test_cmp expect .git/result
'

test_expect_success 'do not fire editor if -m <msg> was given' '
echo tick >file &&
git add file &&
echo "editor not started" >.git/result &&
(GIT_EDITOR="\"$(pwd)/.git/FAKE_EDITOR\"" git commit -m tick) &&
test "$(cat .git/result)" = "editor not started"
'

test_expect_success 'do not fire editor if -m "" was given' '
echo tock >file &&
git add file &&
echo "editor not started" >.git/result &&
(GIT_EDITOR="\"$(pwd)/.git/FAKE_EDITOR\"" \
git commit -m "" --allow-empty-message) &&
test "$(cat .git/result)" = "editor not started"
'

test_expect_success 'do not fire editor in the presence of conflicts' '
git clean -f &&
Expand Down

0 comments on commit 2520677

Please sign in to comment.