|  | #!/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 |