rebase --root: fix amending root commit messages
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 16 Jun 2018 19:00:38 +0000 (21:00 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Jun 2018 16:36:58 +0000 (09:36 -0700)
The code path that triggered that "BUG" really does not want to run
without an explicit commit message. In the case where we want to amend a
commit message, we have an *implicit* commit message, though: the one of
the commit to amend. Therefore, this code path should not even be
entered.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sequencer.c
t/t3404-rebase-interactive.sh

index 8eddda6..0f017c0 100644 (file)
@@ -784,7 +784,7 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts,
        struct child_process cmd = CHILD_PROCESS_INIT;
        const char *value;
 
-       if (flags & CREATE_ROOT_COMMIT) {
+       if ((flags & CREATE_ROOT_COMMIT) && !(flags & AMEND_MSG)) {
                struct strbuf msg = STRBUF_INIT, script = STRBUF_INIT;
                const char *author = is_rebase_i(opts) ?
                        read_author_ident(&script) : NULL;
index ca94c68..e500d7c 100755 (executable)
@@ -971,7 +971,7 @@ test_expect_success 'rebase -i --root fixup root commit' '
        test 0 = $(git cat-file commit HEAD | grep -c ^parent\ )
 '
 
-test_expect_failure 'rebase -i --root reword root commit' '
+test_expect_success 'rebase -i --root reword root commit' '
        test_when_finished "test_might_fail git rebase --abort" &&
        git checkout -b reword-root-branch master &&
        set_fake_editor &&