f4609b896f
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
85 lines
2 KiB
Bash
Executable file
85 lines
2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='rebase should reread the todo file if an exec modifies it'
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-rebase.sh
|
|
|
|
test_expect_success 'setup' '
|
|
test_commit first file &&
|
|
test_commit second file &&
|
|
test_commit third file
|
|
'
|
|
|
|
test_expect_success 'rebase exec modifies rebase-todo' '
|
|
todo=.git/rebase-merge/git-rebase-todo &&
|
|
git rebase HEAD -x "echo exec touch F >>$todo" &&
|
|
test -e F
|
|
'
|
|
|
|
test_expect_success 'loose object cache vs re-reading todo list' '
|
|
GIT_REBASE_TODO=.git/rebase-merge/git-rebase-todo &&
|
|
export GIT_REBASE_TODO &&
|
|
write_script append-todo.sh <<-\EOS &&
|
|
# For values 5 and 6, this yields SHA-1s with the same first two digits
|
|
echo "pick $(git rev-parse --short \
|
|
$(printf "%s\\n" \
|
|
"tree $EMPTY_TREE" \
|
|
"author A U Thor <author@example.org> $1 +0000" \
|
|
"committer A U Thor <author@example.org> $1 +0000" \
|
|
"" \
|
|
"$1" |
|
|
git hash-object -t commit -w --stdin))" >>$GIT_REBASE_TODO
|
|
|
|
shift
|
|
test -z "$*" ||
|
|
echo "exec $0 $*" >>$GIT_REBASE_TODO
|
|
EOS
|
|
|
|
git rebase HEAD -x "./append-todo.sh 5 6"
|
|
'
|
|
|
|
test_expect_success 'todo is re-read after reword and squash' '
|
|
write_script reword-editor.sh <<-\EOS &&
|
|
GIT_SEQUENCE_EDITOR="echo \"exec echo $(cat file) >>actual\" >>" \
|
|
git rebase --edit-todo
|
|
EOS
|
|
|
|
test_write_lines first third >expected &&
|
|
set_fake_editor &&
|
|
GIT_SEQUENCE_EDITOR="$EDITOR" FAKE_LINES="reword 1 squash 2 fixup 3" \
|
|
GIT_EDITOR=./reword-editor.sh git rebase -i --root third &&
|
|
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
|