summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-12-06 23:09:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-12-06 23:09:22 (GMT)
commitf233c9f4550a831a69892e0a38db2a7654beb995 (patch)
treeac12d3bd63de58f9b128729192aed904caa6b4f3
parentef3ce7c4b9f5ed7a13a0efcc576df855c4fd3d0f (diff)
parentbefd4f6a81d382cc2b34186b619f734fa5f8070f (diff)
downloadgit-f233c9f4550a831a69892e0a38db2a7654beb995.zip
git-f233c9f4550a831a69892e0a38db2a7654beb995.tar.gz
git-f233c9f4550a831a69892e0a38db2a7654beb995.tar.bz2
Merge branch 'sg/assume-no-todo-update-in-cherry-pick'
While running "revert" or "cherry-pick --edit" for multiple commits, a recent regression incorrectly detected "nothing to commit, working tree clean", instead of replaying the commits, which has been corrected. * sg/assume-no-todo-update-in-cherry-pick: sequencer: don't re-read todo for revert and cherry-pick
-rw-r--r--sequencer.c2
-rwxr-xr-xt/t3429-rebase-edit-todo.sh30
2 files changed, 31 insertions, 1 deletions
diff --git a/sequencer.c b/sequencer.c
index d18aba6..35d996c 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -3930,7 +3930,7 @@ static int pick_commits(struct repository *r,
item->commit,
arg, item->arg_len,
opts, res, 0);
- } else if (check_todo && !res) {
+ } else if (is_rebase_i(opts) && check_todo && !res) {
struct stat st;
if (stat(get_todo_path(opts), &st)) {
diff --git a/t/t3429-rebase-edit-todo.sh b/t/t3429-rebase-edit-todo.sh
index aaeac6e..7024d49 100755
--- a/t/t3429-rebase-edit-todo.sh
+++ b/t/t3429-rebase-edit-todo.sh
@@ -52,4 +52,34 @@ test_expect_success 'todo is re-read after reword and squash' '
test_cmp expected actual
'
+test_expect_success 're-reading todo doesnt interfere with revert --edit' '
+ git reset --hard third &&
+
+ git revert --edit third second &&
+
+ cat >expect <<-\EOF &&
+ Revert "second"
+ Revert "third"
+ third
+ second
+ first
+ EOF
+ git log --format="%s" >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 're-reading todo doesnt interfere with cherry-pick --edit' '
+ git reset --hard first &&
+
+ git cherry-pick --edit second third &&
+
+ cat >expect <<-\EOF &&
+ third
+ second
+ first
+ EOF
+ git log --format="%s" >actual &&
+ test_cmp expect actual
+'
+
test_done