summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-06-18 18:23:22 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-06-18 18:23:22 (GMT)
commitf300f5681e88fdf1058139100cbb8f990f5029c5 (patch)
treebb7801bfa5b0e2b629ba9e3607c1f9049e74091a
parentf35f43f565c99d5cbbac210b82448d9f445c9607 (diff)
parent76fda6ebbc721e39ed70625206ba1dab5a9c1340 (diff)
downloadgit-f300f5681e88fdf1058139100cbb8f990f5029c5.zip
git-f300f5681e88fdf1058139100cbb8f990f5029c5.tar.gz
git-f300f5681e88fdf1058139100cbb8f990f5029c5.tar.bz2
Merge branch 'js/rebase-i-root-fix'
A regression to "rebase -i --root" introduced during this cycle has been fixed. * js/rebase-i-root-fix: rebase --root: fix amending root commit messages rebase --root: demonstrate a bug while amending root commit messages
-rw-r--r--sequencer.c2
-rwxr-xr-xt/t3404-rebase-interactive.sh9
2 files changed, 10 insertions, 1 deletions
diff --git a/sequencer.c b/sequencer.c
index cca9680..4034c04 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 c65826d..e500d7c 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -971,6 +971,15 @@ test_expect_success 'rebase -i --root fixup root commit' '
test 0 = $(git cat-file commit HEAD | grep -c ^parent\ )
'
+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 &&
+ FAKE_LINES="reword 1 2" FAKE_COMMIT_MESSAGE="A changed" \
+ git rebase -i --root &&
+ git show HEAD^ | grep "A changed"
+'
+
test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '
git reset --hard &&
git checkout conflict-branch &&