]>
Commit | Line | Data |
---|---|---|
294c695d AW |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Amos Waterland | |
4 | # | |
5 | ||
6 | test_description='git rebase should not destroy author information | |
7 | ||
8 | This test runs git rebase and checks that the author information is not lost. | |
9 | ' | |
10 | . ./test-lib.sh | |
11 | ||
0e46e704 BD |
12 | GIT_AUTHOR_EMAIL=bogus_email_address |
13 | export GIT_AUTHOR_EMAIL | |
294c695d AW |
14 | |
15 | test_expect_success \ | |
1308c17b | 16 | 'prepare repository with topic branches' \ |
3ec7371f JS |
17 | 'git config core.logAllRefUpdates true && |
18 | echo First > A && | |
5be60078 | 19 | git update-index --add A && |
0cb0e143 | 20 | git commit -m "Add A." && |
294c695d AW |
21 | git checkout -b my-topic-branch && |
22 | echo Second > B && | |
5be60078 | 23 | git update-index --add B && |
0cb0e143 | 24 | git commit -m "Add B." && |
294c695d AW |
25 | git checkout -f master && |
26 | echo Third >> A && | |
5be60078 | 27 | git update-index A && |
0cb0e143 | 28 | git commit -m "Modify A." && |
1308c17b JS |
29 | git checkout -b side my-topic-branch && |
30 | echo Side >> C && | |
31 | git add C && | |
32 | git commit -m "Add C" && | |
33 | git checkout -b nonlinear my-topic-branch && | |
34 | echo Edit >> B && | |
35 | git add B && | |
36 | git commit -m "Modify B" && | |
37 | git merge side && | |
38 | git checkout -b upstream-merged-nonlinear && | |
39 | git merge master && | |
294c695d | 40 | git checkout -f my-topic-branch && |
1308c17b JS |
41 | git tag topic |
42 | ' | |
43 | ||
44 | test_expect_success 'rebase against master' ' | |
294c695d AW |
45 | git rebase master' |
46 | ||
41ac414e | 47 | test_expect_success \ |
294c695d | 48 | 'the rebase operation should not have destroyed author information' \ |
bbf08124 | 49 | '! (git log | grep "Author:" | grep "<>")' |
294c695d | 50 | |
2559bff3 JS |
51 | test_expect_success 'HEAD was detached during rebase' ' |
52 | test $(git rev-parse HEAD@{1}) != $(git rev-parse my-topic-branch@{1}) | |
53 | ' | |
54 | ||
1308c17b JS |
55 | test_expect_success 'rebase after merge master' ' |
56 | git reset --hard topic && | |
57 | git merge master && | |
58 | git rebase master && | |
bbf08124 | 59 | ! (git show | grep "^Merge:") |
1308c17b JS |
60 | ' |
61 | ||
62 | test_expect_success 'rebase of history with merges is linearized' ' | |
63 | git checkout nonlinear && | |
64 | test 4 = $(git rev-list master.. | wc -l) && | |
65 | git rebase master && | |
66 | test 3 = $(git rev-list master.. | wc -l) | |
67 | ' | |
68 | ||
69 | test_expect_success \ | |
70 | 'rebase of history with merges after upstream merge is linearized' ' | |
71 | git checkout upstream-merged-nonlinear && | |
72 | test 5 = $(git rev-list master.. | wc -l) && | |
73 | git rebase master && | |
74 | test 3 = $(git rev-list master.. | wc -l) | |
75 | ' | |
76 | ||
ece7b749 JS |
77 | test_expect_success 'rebase a single mode change' ' |
78 | git checkout master && | |
79 | echo 1 > X && | |
80 | git add X && | |
81 | test_tick && | |
82 | git commit -m prepare && | |
83 | git checkout -b modechange HEAD^ && | |
84 | echo 1 > X && | |
85 | git add X && | |
1f553918 | 86 | test_chmod +x A && |
ece7b749 | 87 | test_tick && |
1f553918 | 88 | git commit -m modechange && |
ece7b749 JS |
89 | GIT_TRACE=1 git rebase master |
90 | ' | |
91 | ||
3ec7371f JS |
92 | test_expect_success 'Show verbose error when HEAD could not be detached' ' |
93 | : > B && | |
94 | test_must_fail git rebase topic 2> output.err > output.out && | |
95 | grep "Untracked working tree file .B. would be overwritten" output.err | |
96 | ' | |
97 | ||
294c695d | 98 | test_done |