]>
Commit | Line | Data |
---|---|---|
9929430c EN |
1 | #!/bin/sh |
2 | ||
3 | test_description='test if rebase detects and aborts on incompatible options' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success 'setup' ' | |
7 | test_seq 2 9 >foo && | |
8 | git add foo && | |
9 | git commit -m orig && | |
10 | ||
11 | git branch A && | |
12 | git branch B && | |
13 | ||
14 | git checkout A && | |
15 | test_seq 1 9 >foo && | |
16 | git add foo && | |
17 | git commit -m A && | |
18 | ||
19 | git checkout B && | |
20 | echo "q qfoo();" | q_to_tab >>foo && | |
21 | git add foo && | |
22 | git commit -m B | |
23 | ' | |
24 | ||
25 | # | |
26 | # Rebase has lots of useful options like --whitepsace=fix, which are | |
27 | # actually all built in terms of flags to git-am. Since neither | |
28 | # --merge nor --interactive (nor any options that imply those two) use | |
29 | # git-am, using them together will result in flags like --whitespace=fix | |
30 | # being ignored. Make sure rebase warns the user and aborts instead. | |
31 | # | |
32 | ||
33 | test_rebase_am_only () { | |
34 | opt=$1 | |
35 | shift | |
c840e1af | 36 | test_expect_success "$opt incompatible with --merge" " |
9929430c EN |
37 | git checkout B^0 && |
38 | test_must_fail git rebase $opt --merge A | |
39 | " | |
40 | ||
c840e1af | 41 | test_expect_success "$opt incompatible with --strategy=ours" " |
9929430c EN |
42 | git checkout B^0 && |
43 | test_must_fail git rebase $opt --strategy=ours A | |
44 | " | |
45 | ||
c840e1af | 46 | test_expect_success "$opt incompatible with --strategy-option=ours" " |
9929430c EN |
47 | git checkout B^0 && |
48 | test_must_fail git rebase $opt --strategy-option=ours A | |
49 | " | |
50 | ||
c840e1af | 51 | test_expect_success "$opt incompatible with --interactive" " |
9929430c EN |
52 | git checkout B^0 && |
53 | test_must_fail git rebase $opt --interactive A | |
54 | " | |
55 | ||
c840e1af | 56 | test_expect_success "$opt incompatible with --exec" " |
9929430c EN |
57 | git checkout B^0 && |
58 | test_must_fail git rebase $opt --exec 'true' A | |
59 | " | |
60 | ||
61 | } | |
62 | ||
63 | test_rebase_am_only --whitespace=fix | |
64 | test_rebase_am_only --ignore-whitespace | |
65 | test_rebase_am_only --committer-date-is-author-date | |
66 | test_rebase_am_only -C4 | |
67 | ||
db4a3f26 | 68 | test_expect_success REBASE_P '--preserve-merges incompatible with --signoff' ' |
9929430c EN |
69 | git checkout B^0 && |
70 | test_must_fail git rebase --preserve-merges --signoff A | |
71 | ' | |
72 | ||
db4a3f26 JS |
73 | test_expect_success REBASE_P \ |
74 | '--preserve-merges incompatible with --rebase-merges' ' | |
9929430c EN |
75 | git checkout B^0 && |
76 | test_must_fail git rebase --preserve-merges --rebase-merges A | |
77 | ' | |
78 | ||
9929430c | 79 | test_done |