summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2018-06-16 21:00:38 +0200
committerJunio C Hamano <gitster@pobox.com>2018-06-18 09:36:58 -0700
commit76fda6ebbc721e39ed70625206ba1dab5a9c1340 (patch)
tree1fcc61994bdafbbde4fd18d35ee5d5db782183a4
parentrebase --root: demonstrate a bug while amending root commit messages (diff)
downloadgit-76fda6ebbc721e39ed70625206ba1dab5a9c1340.tar.xz
git-76fda6ebbc721e39ed70625206ba1dab5a9c1340.zip
rebase --root: fix amending root commit messages
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>
-rw-r--r--sequencer.c2
-rwxr-xr-xt/t3404-rebase-interactive.sh2
2 files changed, 2 insertions, 2 deletions
diff --git a/sequencer.c b/sequencer.c
index 8eddda681d1..0f017c058c0 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -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;
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index ca94c688d23..e500d7c3203 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -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 &&