@@ -14,140 +14,164 @@ GIT_AUTHOR_NAME=author@name
1414GIT_AUTHOR_EMAIL=bogus@email@address
1515export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
1616
17- test_expect_success \
18- ' prepare repository with topic branches' \
19- ' git config core.logAllRefUpdates true &&
20- echo First > A &&
21- git update-index --add A &&
22- git commit -m "Add A." &&
23- git checkout -b my-topic-branch &&
24- echo Second > B &&
25- git update-index --add B &&
26- git commit -m "Add B." &&
27- git checkout -f master &&
28- echo Third >> A &&
29- git update-index A &&
30- git commit -m "Modify A." &&
31- git checkout -b side my-topic-branch &&
32- echo Side >> C &&
33- git add C &&
34- git commit -m "Add C" &&
35- git checkout -b nonlinear my-topic-branch &&
36- echo Edit >> B &&
37- git add B &&
38- git commit -m "Modify B" &&
39- git merge side &&
40- git checkout -b upstream-merged-nonlinear &&
41- git merge master &&
42- git checkout -f my-topic-branch &&
43- git tag topic
17+ test_expect_success ' prepare repository with topic branches' '
18+ git config core.logAllRefUpdates true &&
19+ echo First >A &&
20+ git update-index --add A &&
21+ git commit -m "Add A." &&
22+ git checkout -b force-3way &&
23+ echo Dummy >Y &&
24+ git update-index --add Y &&
25+ git commit -m "Add Y." &&
26+ git checkout -b filemove &&
27+ git reset --soft master &&
28+ mkdir D &&
29+ git mv A D/A &&
30+ git commit -m "Move A." &&
31+ git checkout -b my-topic-branch master &&
32+ echo Second >B &&
33+ git update-index --add B &&
34+ git commit -m "Add B." &&
35+ git checkout -f master &&
36+ echo Third >>A &&
37+ git update-index A &&
38+ git commit -m "Modify A." &&
39+ git checkout -b side my-topic-branch &&
40+ echo Side >>C &&
41+ git add C &&
42+ git commit -m "Add C" &&
43+ git checkout -b nonlinear my-topic-branch &&
44+ echo Edit >>B &&
45+ git add B &&
46+ git commit -m "Modify B" &&
47+ git merge side &&
48+ git checkout -b upstream-merged-nonlinear &&
49+ git merge master &&
50+ git checkout -f my-topic-branch &&
51+ git tag topic
4452'
4553
4654test_expect_success ' rebase on dirty worktree' '
47- echo dirty >> A &&
48- test_must_fail git rebase master'
55+ echo dirty >>A &&
56+ test_must_fail git rebase master
57+ '
4958
5059test_expect_success ' rebase on dirty cache' '
51- git add A &&
52- test_must_fail git rebase master'
60+ git add A &&
61+ test_must_fail git rebase master
62+ '
5363
5464test_expect_success ' rebase against master' '
55- git reset --hard HEAD &&
56- git rebase master'
65+ git reset --hard HEAD &&
66+ git rebase master
67+ '
5768
5869test_expect_success ' rebase against master twice' '
59- git rebase master >out &&
60- grep "Current branch my-topic-branch is up to date" out
70+ git rebase master >out &&
71+ grep "Current branch my-topic-branch is up to date" out
6172'
6273
6374test_expect_success ' rebase against master twice with --force' '
64- git rebase --force-rebase master >out &&
65- grep "Current branch my-topic-branch is up to date, rebase forced" out
75+ git rebase --force-rebase master >out &&
76+ grep "Current branch my-topic-branch is up to date, rebase forced" out
6677'
6778
6879test_expect_success ' rebase against master twice from another branch' '
69- git checkout my-topic-branch^ &&
70- git rebase master my-topic-branch >out &&
71- grep "Current branch my-topic-branch is up to date" out
80+ git checkout my-topic-branch^ &&
81+ git rebase master my-topic-branch >out &&
82+ grep "Current branch my-topic-branch is up to date" out
7283'
7384
7485test_expect_success ' rebase fast-forward to master' '
75- git checkout my-topic-branch^ &&
76- git rebase my-topic-branch >out &&
77- grep "Fast-forwarded HEAD to my-topic-branch" out
86+ git checkout my-topic-branch^ &&
87+ git rebase my-topic-branch >out &&
88+ grep "Fast-forwarded HEAD to my-topic-branch" out
7889'
7990
80- test_expect_success \
81- ' the rebase operation should not have destroyed author information ' \
82- ' ! (git log | grep "Author:" | grep "<>") '
91+ test_expect_success ' the rebase operation should not have destroyed author information ' '
92+ ! (git log | grep "Author:" | grep "<>")
93+ '
8394
84- test_expect_success \
85- ' the rebase operation should not have destroyed author information (2)' \
86- " git log -1 | grep 'Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL >'"
95+ test_expect_success ' the rebase operation should not have destroyed author information (2)' "
96+ git log -1 |
97+ grep 'Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL >'
98+ "
8799
88100test_expect_success ' HEAD was detached during rebase' '
89- test $(git rev-parse HEAD@{1}) != $(git rev-parse my-topic-branch@{1})
101+ test $(git rev-parse HEAD@{1}) != $(git rev-parse my-topic-branch@{1})
90102'
91103
92104test_expect_success ' rebase after merge master' '
93- git reset --hard topic &&
94- git merge master &&
95- git rebase master &&
96- ! (git show | grep "^Merge:")
105+ git reset --hard topic &&
106+ git merge master &&
107+ git rebase master &&
108+ ! (git show | grep "^Merge:")
97109'
98110
99111test_expect_success ' rebase of history with merges is linearized' '
100- git checkout nonlinear &&
101- test 4 = $(git rev-list master.. | wc -l) &&
102- git rebase master &&
103- test 3 = $(git rev-list master.. | wc -l)
112+ git checkout nonlinear &&
113+ test 4 = $(git rev-list master.. | wc -l) &&
114+ git rebase master &&
115+ test 3 = $(git rev-list master.. | wc -l)
104116'
105117
106- test_expect_success \
107- ' rebase of history with merges after upstream merge is linearized' '
108- git checkout upstream-merged-nonlinear &&
109- test 5 = $(git rev-list master.. | wc -l) &&
110- git rebase master &&
111- test 3 = $(git rev-list master.. | wc -l)
118+ test_expect_success ' rebase of history with merges after upstream merge is linearized' '
119+ git checkout upstream-merged-nonlinear &&
120+ test 5 = $(git rev-list master.. | wc -l) &&
121+ git rebase master &&
122+ test 3 = $(git rev-list master.. | wc -l)
112123'
113124
114125test_expect_success ' rebase a single mode change' '
115- git checkout master &&
116- echo 1 > X &&
117- git add X &&
118- test_tick &&
119- git commit -m prepare &&
120- git checkout -b modechange HEAD^ &&
121- echo 1 > X &&
122- git add X &&
123- test_chmod +x A &&
124- test_tick &&
125- git commit -m modechange &&
126- GIT_TRACE=1 git rebase master
126+ git checkout master &&
127+ echo 1 >X &&
128+ git add X &&
129+ test_tick &&
130+ git commit -m prepare &&
131+ git checkout -b modechange HEAD^ &&
132+ echo 1 >X &&
133+ git add X &&
134+ test_chmod +x A &&
135+ test_tick &&
136+ git commit -m modechange &&
137+ GIT_TRACE=1 git rebase master
138+ '
139+
140+ test_expect_success ' rebase is not broken by diff.renames' '
141+ git config diff.renames copies &&
142+ test_when_finished "git config --unset diff.renames" &&
143+ git checkout filemove &&
144+ GIT_TRACE=1 git rebase force-3way
145+ '
146+
147+ test_expect_success ' setup: recover' '
148+ test_might_fail git rebase --abort &&
149+ git reset --hard &&
150+ git checkout modechange
127151'
128152
129153test_expect_success ' Show verbose error when HEAD could not be detached' '
130- : > B &&
131- test_must_fail git rebase topic 2> output.err > output.out &&
132- grep "Untracked working tree file .B. would be overwritten" output.err
154+ > B &&
155+ test_must_fail git rebase topic 2>output.err >output.out &&
156+ grep "Untracked working tree file .B. would be overwritten" output.err
133157'
134158rm -f B
135159
136160test_expect_success ' dump usage when upstream arg is missing' '
137- git checkout -b usage topic &&
138- test_must_fail git rebase 2>error1 &&
139- grep "[Uu]sage" error1 &&
140- test_must_fail git rebase --abort 2>error2 &&
141- grep "No rebase in progress" error2 &&
142- test_must_fail git rebase --onto master 2>error3 &&
143- grep "[Uu]sage" error3 &&
144- ! grep "can.t shift" error3
161+ git checkout -b usage topic &&
162+ test_must_fail git rebase 2>error1 &&
163+ grep "[Uu]sage" error1 &&
164+ test_must_fail git rebase --abort 2>error2 &&
165+ grep "No rebase in progress" error2 &&
166+ test_must_fail git rebase --onto master 2>error3 &&
167+ grep "[Uu]sage" error3 &&
168+ ! grep "can.t shift" error3
145169'
146170
147171test_expect_success ' rebase -q is quiet' '
148- git checkout -b quiet topic &&
149- git rebase -q master > output.out 2>&1 &&
150- test ! -s output.out
172+ git checkout -b quiet topic &&
173+ git rebase -q master >output.out 2>&1 &&
174+ test ! -s output.out
151175'
152176
153177test_expect_success ' Rebase a commit that sprinkles CRs in' '
0 commit comments