| #!/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' ' | 
 | 	test_commit A && | 
 | 	git checkout -b my-topic-branch && | 
 | 	test_commit B && | 
 | 	test_commit C && | 
 | 	git checkout -f master && | 
 | 	test_commit A2 A.t | 
 | ' | 
 |  | 
 | test_expect_success 'pick top patch from topic branch into master' ' | 
 | 	git cherry-pick C && | 
 | 	git checkout -f 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_path_is_missing .git/rebase-apply | 
 | ' | 
 |  | 
 | test_expect_success 'rebase --merge topic branch that was partially merged upstream' ' | 
 | 	git reset --hard C && | 
 | 	git rebase --merge master && | 
 | 	test_path_is_missing .git/rebase-merge | 
 | ' | 
 |  | 
 | test_expect_success 'rebase ignores empty commit' ' | 
 | 	git reset --hard A && | 
 | 	git commit --allow-empty -m empty && | 
 | 	test_commit D && | 
 | 	git rebase C && | 
 | 	test "$(git log --format=%s C..)" = "D" | 
 | ' | 
 |  | 
 | test_expect_success 'rebase --keep-empty' ' | 
 | 	git reset --hard D && | 
 | 	git rebase --keep-empty C && | 
 | 	test "$(git log --format=%s C..)" = "D | 
 | empty" | 
 | ' | 
 |  | 
 | test_expect_success 'rebase --keep-empty keeps empty even if already in upstream' ' | 
 | 	git reset --hard A && | 
 | 	git commit --allow-empty -m also-empty && | 
 | 	git rebase --keep-empty D && | 
 | 	test "$(git log --format=%s A..)" = "also-empty | 
 | D | 
 | empty" | 
 | ' | 
 |  | 
 | test_done |