| #!/bin/sh |
| # |
| # Copyright (c) 2006 Yann Dirson, based on t3400 by Amos Waterland |
| # |
| |
| test_description='git rebase should detect patches integrated upstream |
| |
| This test cherry-picks one local change of two into master branch, and |
| checks that git rebase succeeds with only the second patch in the |
| local branch. |
| ' |
| . ./test-lib.sh |
| |
| test_expect_success \ |
| 'prepare repository with topic branch' \ |
| 'echo First > A && |
| git update-index --add A && |
| git commit -m "Add A." && |
| |
| git checkout -b my-topic-branch && |
| |
| echo Second > B && |
| git update-index --add B && |
| git commit -m "Add B." && |
| |
| echo AnotherSecond > C && |
| git update-index --add C && |
| git commit -m "Add C." && |
| |
| git checkout -f master && |
| |
| echo Third >> A && |
| git update-index A && |
| git commit -m "Modify A." |
| ' |
| |
| test_expect_success \ |
| 'pick top patch from topic branch into master' \ |
| 'git cherry-pick my-topic-branch^0 && |
| git checkout -f my-topic-branch && |
| git branch master-merge master && |
| git branch my-topic-branch-merge my-topic-branch |
| ' |
| |
| test_debug \ |
| 'git cherry master && |
| git format-patch -k --stdout --full-index master >/dev/null && |
| gitk --all & sleep 1 |
| ' |
| |
| test_expect_success \ |
| 'rebase topic branch against new master and check git am did not get halted' \ |
| 'git rebase master && test ! -d .git/rebase-apply' |
| |
| test_expect_success \ |
| 'rebase --merge topic branch that was partially merged upstream' \ |
| 'git checkout -f my-topic-branch-merge && |
| git rebase --merge master-merge && |
| test ! -d .git/rebase-merge' |
| |
| test_done |