| #!/bin/sh | 
 |  | 
 | test_description='test if rebase detects and aborts on incompatible options' | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 | 	test_seq 2 9 >foo && | 
 | 	git add foo && | 
 | 	git commit -m orig && | 
 |  | 
 | 	git branch A && | 
 | 	git branch B && | 
 |  | 
 | 	git checkout A && | 
 | 	test_seq 1 9 >foo && | 
 | 	git add foo && | 
 | 	git commit -m A && | 
 |  | 
 | 	git checkout B && | 
 | 	echo "q qfoo();" | q_to_tab >>foo && | 
 | 	git add foo && | 
 | 	git commit -m B | 
 | ' | 
 |  | 
 | # | 
 | # Rebase has lots of useful options like --whitepsace=fix, which are | 
 | # actually all built in terms of flags to git-am.  Since neither | 
 | # --merge nor --interactive (nor any options that imply those two) use | 
 | # git-am, using them together will result in flags like --whitespace=fix | 
 | # being ignored.  Make sure rebase warns the user and aborts instead. | 
 | # | 
 |  | 
 | test_rebase_am_only () { | 
 | 	opt=$1 | 
 | 	shift | 
 | 	test_expect_success "$opt incompatible with --merge" " | 
 | 		git checkout B^0 && | 
 | 		test_must_fail git rebase $opt --merge A | 
 | 	" | 
 |  | 
 | 	test_expect_success "$opt incompatible with --strategy=ours" " | 
 | 		git checkout B^0 && | 
 | 		test_must_fail git rebase $opt --strategy=ours A | 
 | 	" | 
 |  | 
 | 	test_expect_success "$opt incompatible with --strategy-option=ours" " | 
 | 		git checkout B^0 && | 
 | 		test_must_fail git rebase $opt --strategy-option=ours A | 
 | 	" | 
 |  | 
 | 	test_expect_success "$opt incompatible with --interactive" " | 
 | 		git checkout B^0 && | 
 | 		test_must_fail git rebase $opt --interactive A | 
 | 	" | 
 |  | 
 | 	test_expect_success "$opt incompatible with --exec" " | 
 | 		git checkout B^0 && | 
 | 		test_must_fail git rebase $opt --exec 'true' A | 
 | 	" | 
 |  | 
 | } | 
 |  | 
 | test_rebase_am_only --whitespace=fix | 
 | test_rebase_am_only -C4 | 
 |  | 
 | test_expect_success REBASE_P '--preserve-merges incompatible with --signoff' ' | 
 | 	git checkout B^0 && | 
 | 	test_must_fail git rebase --preserve-merges --signoff A | 
 | ' | 
 |  | 
 | test_expect_success REBASE_P \ | 
 | 	'--preserve-merges incompatible with --rebase-merges' ' | 
 | 	git checkout B^0 && | 
 | 	test_must_fail git rebase --preserve-merges --rebase-merges A | 
 | ' | 
 |  | 
 | test_done |