Browse Source

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
maint
Junio C Hamano 7 years ago
parent
commit
f300f5681e
  1. 2
      sequencer.c
  2. 9
      t/t3404-rebase-interactive.sh

2
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; struct child_process cmd = CHILD_PROCESS_INIT;
const char *value; const char *value;


if (flags & CREATE_ROOT_COMMIT) { if ((flags & CREATE_ROOT_COMMIT) && !(flags & AMEND_MSG)) {
struct strbuf msg = STRBUF_INIT, script = STRBUF_INIT; struct strbuf msg = STRBUF_INIT, script = STRBUF_INIT;
const char *author = is_rebase_i(opts) ? const char *author = is_rebase_i(opts) ?
read_author_ident(&script) : NULL; read_author_ident(&script) : NULL;

9
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 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' ' test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '
git reset --hard && git reset --hard &&
git checkout conflict-branch && git checkout conflict-branch &&

Loading…
Cancel
Save