3 818c7501 2019-07-11 stsp # Copyright (c) 2019 Stefan Sperling <stsp@openbsd.org>
5 818c7501 2019-07-11 stsp # Permission to use, copy, modify, and distribute this software for any
6 818c7501 2019-07-11 stsp # purpose with or without fee is hereby granted, provided that the above
7 818c7501 2019-07-11 stsp # copyright notice and this permission notice appear in all copies.
9 818c7501 2019-07-11 stsp # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 818c7501 2019-07-11 stsp # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 818c7501 2019-07-11 stsp # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 818c7501 2019-07-11 stsp # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 818c7501 2019-07-11 stsp # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 818c7501 2019-07-11 stsp # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 818c7501 2019-07-11 stsp # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 818c7501 2019-07-11 stsp . ./common.sh
19 818c7501 2019-07-11 stsp function test_rebase_basic {
20 818c7501 2019-07-11 stsp local testroot=`test_init rebase_basic`
22 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
23 818c7501 2019-07-11 stsp echo "modified delta on branch" > $testroot/repo/gamma/delta
24 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to delta on newbranch"
26 818c7501 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
27 818c7501 2019-07-11 stsp (cd $testroot/repo && git rm -q beta)
28 818c7501 2019-07-11 stsp echo "new file on branch" > $testroot/repo/epsilon/new
29 818c7501 2019-07-11 stsp (cd $testroot/repo && git add epsilon/new)
30 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing more changes on newbranch"
32 818c7501 2019-07-11 stsp local orig_commit1=`git_show_parent_commit $testroot/repo`
33 818c7501 2019-07-11 stsp local orig_commit2=`git_show_head $testroot/repo`
35 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
36 818c7501 2019-07-11 stsp echo "modified zeta on master" > $testroot/repo/epsilon/zeta
37 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to zeta on master"
38 818c7501 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
40 818c7501 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
42 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
43 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
47 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout)
49 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q newbranch)
50 818c7501 2019-07-11 stsp local new_commit1=`git_show_parent_commit $testroot/repo`
51 818c7501 2019-07-11 stsp local new_commit2=`git_show_head $testroot/repo`
53 818c7501 2019-07-11 stsp local short_orig_commit1=`trim_obj_id 28 $orig_commit1`
54 818c7501 2019-07-11 stsp local short_orig_commit2=`trim_obj_id 28 $orig_commit2`
55 818c7501 2019-07-11 stsp local short_new_commit1=`trim_obj_id 28 $new_commit1`
56 818c7501 2019-07-11 stsp local short_new_commit2=`trim_obj_id 28 $new_commit2`
58 818c7501 2019-07-11 stsp echo "G gamma/delta" >> $testroot/stdout.expected
59 818c7501 2019-07-11 stsp echo -n "$short_orig_commit1 -> $short_new_commit1" \
60 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
61 818c7501 2019-07-11 stsp echo ": committing to delta on newbranch" >> $testroot/stdout.expected
62 818c7501 2019-07-11 stsp echo "G alpha" >> $testroot/stdout.expected
63 818c7501 2019-07-11 stsp echo "D beta" >> $testroot/stdout.expected
64 818c7501 2019-07-11 stsp echo "A epsilon/new" >> $testroot/stdout.expected
65 818c7501 2019-07-11 stsp echo -n "$short_orig_commit2 -> $short_new_commit2" \
66 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
67 818c7501 2019-07-11 stsp echo ": committing more changes on newbranch" \
68 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
69 818c7501 2019-07-11 stsp echo "Switching work tree to refs/heads/newbranch" \
70 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
72 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
74 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
75 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
76 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
80 818c7501 2019-07-11 stsp echo "modified delta on branch" > $testroot/content.expected
81 818c7501 2019-07-11 stsp cat $testroot/wt/gamma/delta > $testroot/content
82 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
84 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
85 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
86 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
90 818c7501 2019-07-11 stsp echo "modified alpha on branch" > $testroot/content.expected
91 818c7501 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
92 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
94 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
95 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
96 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
100 818c7501 2019-07-11 stsp if [ -e $testroot/wt/beta ]; then
101 818c7501 2019-07-11 stsp echo "removed file beta still exists on disk" >&2
102 818c7501 2019-07-11 stsp test_done "$testroot" "1"
106 818c7501 2019-07-11 stsp echo "new file on branch" > $testroot/content.expected
107 818c7501 2019-07-11 stsp cat $testroot/wt/epsilon/new > $testroot/content
108 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
110 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
111 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
112 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
116 818c7501 2019-07-11 stsp (cd $testroot/wt && got status > $testroot/stdout)
118 818c7501 2019-07-11 stsp echo -n > $testroot/stdout.expected
119 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
121 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
122 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
123 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
127 818c7501 2019-07-11 stsp (cd $testroot/wt && got log -l3 | grep ^commit > $testroot/stdout)
128 818c7501 2019-07-11 stsp echo "commit $new_commit2 (newbranch)" > $testroot/stdout.expected
129 818c7501 2019-07-11 stsp echo "commit $new_commit1" >> $testroot/stdout.expected
130 818c7501 2019-07-11 stsp echo "commit $master_commit (master)" >> $testroot/stdout.expected
131 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
133 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
134 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
136 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
139 818c7501 2019-07-11 stsp function test_rebase_ancestry_check {
140 818c7501 2019-07-11 stsp local testroot=`test_init rebase_ancestry_check`
142 818c7501 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
144 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
145 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
149 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
150 818c7501 2019-07-11 stsp echo "modified delta on branch" > $testroot/repo/gamma/delta
151 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to delta on newbranch"
153 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
154 818c7501 2019-07-11 stsp 2> $testroot/stderr)
156 818c7501 2019-07-11 stsp echo -n > $testroot/stdout.expected
157 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
159 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
160 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
161 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
165 818c7501 2019-07-11 stsp echo -n "got: specified branch resolves to a commit " \
166 818c7501 2019-07-11 stsp > $testroot/stderr.expected
167 818c7501 2019-07-11 stsp echo "which is already contained in work tree's branch" \
168 818c7501 2019-07-11 stsp >> $testroot/stderr.expected
169 818c7501 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
171 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
172 818c7501 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
174 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
177 818c7501 2019-07-11 stsp function test_rebase_continue {
178 818c7501 2019-07-11 stsp local testroot=`test_init rebase_continue`
180 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
181 818c7501 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
182 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on newbranch"
183 818c7501 2019-07-11 stsp local orig_commit1=`git_show_head $testroot/repo`
185 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
186 818c7501 2019-07-11 stsp echo "modified alpha on master" > $testroot/repo/alpha
187 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on master"
188 818c7501 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
190 818c7501 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
192 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
193 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
197 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
198 818c7501 2019-07-11 stsp 2> $testroot/stderr)
200 818c7501 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
201 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
203 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
204 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
205 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
209 11495e04 2019-07-12 stsp echo "got: conflicts must be resolved before rebasing can continue" \
210 818c7501 2019-07-11 stsp > $testroot/stderr.expected
211 818c7501 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
213 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
214 818c7501 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
215 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
219 818c7501 2019-07-11 stsp echo "<<<<<<< commit $orig_commit1" > $testroot/content.expected
220 818c7501 2019-07-11 stsp echo "modified alpha on branch" >> $testroot/content.expected
221 d136cfcb 2019-10-12 stsp echo "|||||||" >> $testroot/content.expected
222 d136cfcb 2019-10-12 stsp echo "alpha" >> $testroot/content.expected
223 818c7501 2019-07-11 stsp echo "=======" >> $testroot/content.expected
224 818c7501 2019-07-11 stsp echo "modified alpha on master" >> $testroot/content.expected
225 818c7501 2019-07-11 stsp echo '>>>>>>> alpha' >> $testroot/content.expected
226 818c7501 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
227 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
229 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
230 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
231 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
235 818c7501 2019-07-11 stsp (cd $testroot/wt && got status > $testroot/stdout)
237 818c7501 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
238 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
240 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
241 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
242 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
246 818c7501 2019-07-11 stsp # resolve the conflict
247 818c7501 2019-07-11 stsp echo "modified alpha on branch and master" > $testroot/wt/alpha
249 f032f1f7 2019-08-04 stsp # test interaction of 'got stage' and rebase -c
250 f032f1f7 2019-08-04 stsp (cd $testroot/wt && got stage alpha > /dev/null)
251 f032f1f7 2019-08-04 stsp (cd $testroot/wt && got rebase -c > $testroot/stdout \
252 f032f1f7 2019-08-04 stsp 2> $testroot/stderr)
254 f032f1f7 2019-08-04 stsp if [ "$ret" == "0" ]; then
255 f032f1f7 2019-08-04 stsp echo "rebase succeeded unexpectedly" >&2
256 f032f1f7 2019-08-04 stsp test_done "$testroot" "1"
259 f032f1f7 2019-08-04 stsp echo -n "got: work tree contains files with staged changes; " \
260 f032f1f7 2019-08-04 stsp > $testroot/stderr.expected
261 f032f1f7 2019-08-04 stsp echo "these changes must be committed or unstaged first" \
262 f032f1f7 2019-08-04 stsp >> $testroot/stderr.expected
263 f032f1f7 2019-08-04 stsp cmp -s $testroot/stderr.expected $testroot/stderr
265 f032f1f7 2019-08-04 stsp if [ "$ret" != "0" ]; then
266 f032f1f7 2019-08-04 stsp diff -u $testroot/stderr.expected $testroot/stderr
267 f032f1f7 2019-08-04 stsp test_done "$testroot" "$ret"
271 f032f1f7 2019-08-04 stsp (cd $testroot/wt && got unstage alpha > /dev/null)
272 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase -c > $testroot/stdout)
274 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q newbranch)
275 818c7501 2019-07-11 stsp local new_commit1=`git_show_head $testroot/repo`
277 818c7501 2019-07-11 stsp local short_orig_commit1=`trim_obj_id 28 $orig_commit1`
278 818c7501 2019-07-11 stsp local short_new_commit1=`trim_obj_id 28 $new_commit1`
280 818c7501 2019-07-11 stsp echo -n "$short_orig_commit1 -> $short_new_commit1" \
281 818c7501 2019-07-11 stsp > $testroot/stdout.expected
282 818c7501 2019-07-11 stsp echo ": committing to alpha on newbranch" >> $testroot/stdout.expected
283 818c7501 2019-07-11 stsp echo "Switching work tree to refs/heads/newbranch" \
284 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
286 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
288 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
289 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
290 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
295 818c7501 2019-07-11 stsp (cd $testroot/wt && got log -l2 | grep ^commit > $testroot/stdout)
296 818c7501 2019-07-11 stsp echo "commit $new_commit1 (newbranch)" > $testroot/stdout.expected
297 818c7501 2019-07-11 stsp echo "commit $master_commit (master)" >> $testroot/stdout.expected
298 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
300 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
301 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
303 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
306 818c7501 2019-07-11 stsp function test_rebase_abort {
307 818c7501 2019-07-11 stsp local testroot=`test_init rebase_abort`
309 818c7501 2019-07-11 stsp local init_commit=`git_show_head $testroot/repo`
311 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
312 818c7501 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
313 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on newbranch"
314 818c7501 2019-07-11 stsp local orig_commit1=`git_show_head $testroot/repo`
316 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
317 818c7501 2019-07-11 stsp echo "modified alpha on master" > $testroot/repo/alpha
318 818c7501 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on master"
319 818c7501 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
321 818c7501 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
323 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
324 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
328 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
329 818c7501 2019-07-11 stsp 2> $testroot/stderr)
331 818c7501 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
332 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
334 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
335 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
336 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
340 11495e04 2019-07-12 stsp echo "got: conflicts must be resolved before rebasing can continue" \
341 818c7501 2019-07-11 stsp > $testroot/stderr.expected
342 818c7501 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
344 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
345 818c7501 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
346 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
350 818c7501 2019-07-11 stsp echo "<<<<<<< commit $orig_commit1" > $testroot/content.expected
351 818c7501 2019-07-11 stsp echo "modified alpha on branch" >> $testroot/content.expected
352 d136cfcb 2019-10-12 stsp echo "|||||||" >> $testroot/content.expected
353 d136cfcb 2019-10-12 stsp echo "alpha" >> $testroot/content.expected
354 818c7501 2019-07-11 stsp echo "=======" >> $testroot/content.expected
355 818c7501 2019-07-11 stsp echo "modified alpha on master" >> $testroot/content.expected
356 818c7501 2019-07-11 stsp echo '>>>>>>> alpha' >> $testroot/content.expected
357 818c7501 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
358 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
360 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
361 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
362 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
366 818c7501 2019-07-11 stsp (cd $testroot/wt && got status > $testroot/stdout)
368 818c7501 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
369 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
371 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
372 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
373 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
377 818c7501 2019-07-11 stsp (cd $testroot/wt && got rebase -a > $testroot/stdout)
379 818c7501 2019-07-11 stsp (cd $testroot/repo && git checkout -q newbranch)
381 818c7501 2019-07-11 stsp echo "Switching work tree to refs/heads/master" \
382 818c7501 2019-07-11 stsp > $testroot/stdout.expected
383 818c7501 2019-07-11 stsp echo 'R alpha' >> $testroot/stdout.expected
384 818c7501 2019-07-11 stsp echo "Rebase of refs/heads/newbranch aborted" \
385 818c7501 2019-07-11 stsp >> $testroot/stdout.expected
387 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
389 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
390 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
391 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
395 818c7501 2019-07-11 stsp echo "modified alpha on master" > $testroot/content.expected
396 818c7501 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
397 818c7501 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
399 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
400 818c7501 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
401 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
405 818c7501 2019-07-11 stsp (cd $testroot/wt && got log -l3 -c newbranch \
406 818c7501 2019-07-11 stsp | grep ^commit > $testroot/stdout)
407 818c7501 2019-07-11 stsp echo "commit $orig_commit1 (newbranch)" > $testroot/stdout.expected
408 818c7501 2019-07-11 stsp echo "commit $init_commit" >> $testroot/stdout.expected
409 818c7501 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
411 818c7501 2019-07-11 stsp if [ "$ret" != "0" ]; then
412 818c7501 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
414 818c7501 2019-07-11 stsp test_done "$testroot" "$ret"
417 ff0d2220 2019-07-11 stsp function test_rebase_no_op_change {
418 ff0d2220 2019-07-11 stsp local testroot=`test_init rebase_no_op_change`
419 ff0d2220 2019-07-11 stsp local init_commit=`git_show_head $testroot/repo`
421 ff0d2220 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
422 ff0d2220 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
423 ff0d2220 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on newbranch"
424 ff0d2220 2019-07-11 stsp local orig_commit1=`git_show_head $testroot/repo`
426 ff0d2220 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
427 ff0d2220 2019-07-11 stsp echo "modified alpha on master" > $testroot/repo/alpha
428 ff0d2220 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on master"
429 ff0d2220 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
431 ff0d2220 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
433 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
434 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
438 ff0d2220 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
439 ff0d2220 2019-07-11 stsp 2> $testroot/stderr)
441 ff0d2220 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
442 ff0d2220 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
444 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
445 ff0d2220 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
446 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
450 11495e04 2019-07-12 stsp echo "got: conflicts must be resolved before rebasing can continue" \
451 ff0d2220 2019-07-11 stsp > $testroot/stderr.expected
452 ff0d2220 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
454 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
455 ff0d2220 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
456 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
460 ff0d2220 2019-07-11 stsp echo "<<<<<<< commit $orig_commit1" > $testroot/content.expected
461 ff0d2220 2019-07-11 stsp echo "modified alpha on branch" >> $testroot/content.expected
462 d136cfcb 2019-10-12 stsp echo "|||||||" >> $testroot/content.expected
463 d136cfcb 2019-10-12 stsp echo "alpha" >> $testroot/content.expected
464 ff0d2220 2019-07-11 stsp echo "=======" >> $testroot/content.expected
465 ff0d2220 2019-07-11 stsp echo "modified alpha on master" >> $testroot/content.expected
466 ff0d2220 2019-07-11 stsp echo '>>>>>>> alpha' >> $testroot/content.expected
467 ff0d2220 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
468 ff0d2220 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
470 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
471 ff0d2220 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
472 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
476 ff0d2220 2019-07-11 stsp (cd $testroot/wt && got status > $testroot/stdout)
478 ff0d2220 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
479 ff0d2220 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
481 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
482 ff0d2220 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
483 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
487 ff0d2220 2019-07-11 stsp # resolve the conflict
488 ff0d2220 2019-07-11 stsp echo "modified alpha on master" > $testroot/wt/alpha
490 ff0d2220 2019-07-11 stsp (cd $testroot/wt && got rebase -c > $testroot/stdout)
492 ff0d2220 2019-07-11 stsp (cd $testroot/repo && git checkout -q newbranch)
493 ff0d2220 2019-07-11 stsp local new_commit1=`git_show_head $testroot/repo`
495 ff0d2220 2019-07-11 stsp local short_orig_commit1=`trim_obj_id 28 $orig_commit1`
497 ff0d2220 2019-07-11 stsp echo -n "$short_orig_commit1 -> no-op change" \
498 ff0d2220 2019-07-11 stsp > $testroot/stdout.expected
499 ff0d2220 2019-07-11 stsp echo ": committing to alpha on newbranch" >> $testroot/stdout.expected
500 ff0d2220 2019-07-11 stsp echo "Switching work tree to refs/heads/newbranch" \
501 ff0d2220 2019-07-11 stsp >> $testroot/stdout.expected
503 ff0d2220 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
505 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
506 ff0d2220 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
507 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
512 ff0d2220 2019-07-11 stsp (cd $testroot/wt && got log -l2 | grep ^commit > $testroot/stdout)
513 ff0d2220 2019-07-11 stsp echo "commit $master_commit (master, newbranch)" \
514 ff0d2220 2019-07-11 stsp > $testroot/stdout.expected
515 ff0d2220 2019-07-11 stsp echo "commit $init_commit" >> $testroot/stdout.expected
516 7d5807f4 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
518 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
519 7d5807f4 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
521 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
524 7d5807f4 2019-07-11 stsp function test_rebase_in_progress {
525 4ba9c4f6 2019-07-11 stsp local testroot=`test_init rebase_in_progress`
526 7d5807f4 2019-07-11 stsp local init_commit=`git_show_head $testroot/repo`
528 7d5807f4 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
529 7d5807f4 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
530 7d5807f4 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on newbranch"
531 7d5807f4 2019-07-11 stsp local orig_commit1=`git_show_head $testroot/repo`
533 7d5807f4 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
534 7d5807f4 2019-07-11 stsp echo "modified alpha on master" > $testroot/repo/alpha
535 7d5807f4 2019-07-11 stsp git_commit $testroot/repo -m "committing to alpha on master"
536 7d5807f4 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
538 7d5807f4 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
540 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
541 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
545 7d5807f4 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
546 7d5807f4 2019-07-11 stsp 2> $testroot/stderr)
548 7d5807f4 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
549 7d5807f4 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
551 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
552 7d5807f4 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
553 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
557 11495e04 2019-07-12 stsp echo "got: conflicts must be resolved before rebasing can continue" \
558 7d5807f4 2019-07-11 stsp > $testroot/stderr.expected
559 7d5807f4 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
561 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
562 7d5807f4 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
563 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
567 7d5807f4 2019-07-11 stsp echo "<<<<<<< commit $orig_commit1" > $testroot/content.expected
568 7d5807f4 2019-07-11 stsp echo "modified alpha on branch" >> $testroot/content.expected
569 d136cfcb 2019-10-12 stsp echo "|||||||" >> $testroot/content.expected
570 d136cfcb 2019-10-12 stsp echo "alpha" >> $testroot/content.expected
571 7d5807f4 2019-07-11 stsp echo "=======" >> $testroot/content.expected
572 7d5807f4 2019-07-11 stsp echo "modified alpha on master" >> $testroot/content.expected
573 7d5807f4 2019-07-11 stsp echo '>>>>>>> alpha' >> $testroot/content.expected
574 7d5807f4 2019-07-11 stsp cat $testroot/wt/alpha > $testroot/content
575 7d5807f4 2019-07-11 stsp cmp -s $testroot/content.expected $testroot/content
577 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
578 7d5807f4 2019-07-11 stsp diff -u $testroot/content.expected $testroot/content
579 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
583 7d5807f4 2019-07-11 stsp (cd $testroot/wt && got status > $testroot/stdout)
585 7d5807f4 2019-07-11 stsp echo "C alpha" > $testroot/stdout.expected
586 ff0d2220 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
588 ff0d2220 2019-07-11 stsp if [ "$ret" != "0" ]; then
589 ff0d2220 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
590 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
594 7d5807f4 2019-07-11 stsp for cmd in update commit; do
595 7d5807f4 2019-07-11 stsp (cd $testroot/wt && got $cmd > $testroot/stdout \
596 7d5807f4 2019-07-11 stsp 2> $testroot/stderr)
598 7d5807f4 2019-07-11 stsp echo -n > $testroot/stdout.expected
599 7d5807f4 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
601 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
602 7d5807f4 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
603 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
607 7d5807f4 2019-07-11 stsp echo -n "got: a rebase operation is in progress in this " \
608 7d5807f4 2019-07-11 stsp > $testroot/stderr.expected
609 7d5807f4 2019-07-11 stsp echo "work tree and must be continued or aborted first" \
610 7d5807f4 2019-07-11 stsp >> $testroot/stderr.expected
611 7d5807f4 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
613 7d5807f4 2019-07-11 stsp if [ "$ret" != "0" ]; then
614 7d5807f4 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
615 7d5807f4 2019-07-11 stsp test_done "$testroot" "$ret"
620 64c6d990 2019-07-11 stsp test_done "$testroot" "$ret"
623 64c6d990 2019-07-11 stsp function test_rebase_path_prefix {
624 64c6d990 2019-07-11 stsp local testroot=`test_init rebase_path_prefix`
626 64c6d990 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
627 64c6d990 2019-07-11 stsp echo "modified delta on branch" > $testroot/repo/gamma/delta
628 64c6d990 2019-07-11 stsp git_commit $testroot/repo -m "committing to delta on newbranch"
630 64c6d990 2019-07-11 stsp local orig_commit1=`git_show_parent_commit $testroot/repo`
631 64c6d990 2019-07-11 stsp local orig_commit2=`git_show_head $testroot/repo`
633 64c6d990 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
634 64c6d990 2019-07-11 stsp echo "modified zeta on master" > $testroot/repo/epsilon/zeta
635 64c6d990 2019-07-11 stsp git_commit $testroot/repo -m "committing to zeta on master"
636 64c6d990 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
638 64c6d990 2019-07-11 stsp got checkout -p epsilon $testroot/repo $testroot/wt > /dev/null
640 64c6d990 2019-07-11 stsp if [ "$ret" != "0" ]; then
641 64c6d990 2019-07-11 stsp test_done "$testroot" "$ret"
645 64c6d990 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch \
646 64c6d990 2019-07-11 stsp > $testroot/stdout 2> $testroot/stderr)
648 64c6d990 2019-07-11 stsp echo -n > $testroot/stdout.expected
649 64c6d990 2019-07-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
651 64c6d990 2019-07-11 stsp if [ "$ret" != "0" ]; then
652 64c6d990 2019-07-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
653 64c6d990 2019-07-11 stsp test_done "$testroot" "$ret"
657 64c6d990 2019-07-11 stsp echo -n "got: cannot rebase branch which contains changes outside " \
658 64c6d990 2019-07-11 stsp > $testroot/stderr.expected
659 64c6d990 2019-07-11 stsp echo "of this work tree's path prefix" >> $testroot/stderr.expected
660 787c8eb6 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
662 787c8eb6 2019-07-11 stsp if [ "$ret" != "0" ]; then
663 787c8eb6 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
665 787c8eb6 2019-07-11 stsp test_done "$testroot" "$ret"
668 787c8eb6 2019-07-11 stsp function test_rebase_preserves_logmsg {
669 787c8eb6 2019-07-11 stsp local testroot=`test_init rebase_preserves_logmsg`
671 787c8eb6 2019-07-11 stsp (cd $testroot/repo && git checkout -q -b newbranch)
672 787c8eb6 2019-07-11 stsp echo "modified delta on branch" > $testroot/repo/gamma/delta
673 787c8eb6 2019-07-11 stsp git_commit $testroot/repo -m "modified delta on newbranch"
675 787c8eb6 2019-07-11 stsp echo "modified alpha on branch" > $testroot/repo/alpha
676 787c8eb6 2019-07-11 stsp git_commit $testroot/repo -m "modified alpha on newbranch"
678 787c8eb6 2019-07-11 stsp (cd $testroot/repo && got log -c newbranch -l2 | grep -v ^date: \
679 787c8eb6 2019-07-11 stsp > $testroot/log.expected)
681 787c8eb6 2019-07-11 stsp local orig_commit1=`git_show_parent_commit $testroot/repo`
682 787c8eb6 2019-07-11 stsp local orig_commit2=`git_show_head $testroot/repo`
684 787c8eb6 2019-07-11 stsp (cd $testroot/repo && git checkout -q master)
685 787c8eb6 2019-07-11 stsp echo "modified zeta on master" > $testroot/repo/epsilon/zeta
686 787c8eb6 2019-07-11 stsp git_commit $testroot/repo -m "committing to zeta on master"
687 787c8eb6 2019-07-11 stsp local master_commit=`git_show_head $testroot/repo`
689 787c8eb6 2019-07-11 stsp got checkout $testroot/repo $testroot/wt > /dev/null
691 787c8eb6 2019-07-11 stsp if [ "$ret" != "0" ]; then
692 787c8eb6 2019-07-11 stsp test_done "$testroot" "$ret"
696 787c8eb6 2019-07-11 stsp (cd $testroot/wt && got rebase newbranch > /dev/null \
697 787c8eb6 2019-07-11 stsp 2> $testroot/stderr)
699 787c8eb6 2019-07-11 stsp (cd $testroot/repo && git checkout -q newbranch)
700 787c8eb6 2019-07-11 stsp local new_commit1=`git_show_parent_commit $testroot/repo`
701 787c8eb6 2019-07-11 stsp local new_commit2=`git_show_head $testroot/repo`
703 787c8eb6 2019-07-11 stsp echo -n > $testroot/stderr.expected
704 64c6d990 2019-07-11 stsp cmp -s $testroot/stderr.expected $testroot/stderr
706 64c6d990 2019-07-11 stsp if [ "$ret" != "0" ]; then
707 64c6d990 2019-07-11 stsp diff -u $testroot/stderr.expected $testroot/stderr
708 787c8eb6 2019-07-11 stsp test_done "$testroot" "$ret"
712 787c8eb6 2019-07-11 stsp (cd $testroot/wt && got log -c newbranch -l2 | grep -v ^date: \
713 787c8eb6 2019-07-11 stsp > $testroot/log)
714 787c8eb6 2019-07-11 stsp sed -i -e "s/$orig_commit1/$new_commit1/" $testroot/log.expected
715 787c8eb6 2019-07-11 stsp sed -i -e "s/$orig_commit2/$new_commit2/" $testroot/log.expected
716 787c8eb6 2019-07-11 stsp cmp -s $testroot/log.expected $testroot/log
718 787c8eb6 2019-07-11 stsp if [ "$ret" != "0" ]; then
719 787c8eb6 2019-07-11 stsp diff -u $testroot/log.expected $testroot/log
722 fc66b545 2019-08-12 stsp test_done "$testroot" "$ret"
725 fc66b545 2019-08-12 stsp function test_rebase_no_commits_to_rebase {
726 fc66b545 2019-08-12 stsp local testroot=`test_init rebase_no_commits_to_rebase`
728 fc66b545 2019-08-12 stsp got checkout $testroot/repo $testroot/wt > /dev/null
730 fc66b545 2019-08-12 stsp if [ "$ret" != "0" ]; then
731 fc66b545 2019-08-12 stsp test_done "$testroot" "$ret"
735 fc66b545 2019-08-12 stsp (cd $testroot/wt && got branch newbranch)
737 fc66b545 2019-08-12 stsp echo "modified alpha on master" > $testroot/wt/alpha
738 fc66b545 2019-08-12 stsp (cd $testroot/wt && got commit -m 'test rebase_no_commits_to_rebase' \
739 fc66b545 2019-08-12 stsp > /dev/null)
740 fc66b545 2019-08-12 stsp (cd $testroot/wt && got update > /dev/null)
742 fc66b545 2019-08-12 stsp (cd $testroot/wt && got rebase newbranch > $testroot/stdout \
743 fc66b545 2019-08-12 stsp 2> $testroot/stderr)
745 fc66b545 2019-08-12 stsp echo "got: no commits to rebase" > $testroot/stderr.expected
746 fc66b545 2019-08-12 stsp cmp -s $testroot/stderr.expected $testroot/stderr
748 fc66b545 2019-08-12 stsp if [ "$ret" != "0" ]; then
749 fc66b545 2019-08-12 stsp diff -u $testroot/stderr.expected $testroot/stderr
750 fc66b545 2019-08-12 stsp test_done "$testroot" "$ret"
754 fc66b545 2019-08-12 stsp echo "Rebase of refs/heads/newbranch aborted" \
755 fc66b545 2019-08-12 stsp > $testroot/stdout.expected
756 fc66b545 2019-08-12 stsp cmp -s $testroot/stdout.expected $testroot/stdout
758 fc66b545 2019-08-12 stsp if [ "$ret" != "0" ]; then
759 fc66b545 2019-08-12 stsp diff -u $testroot/stdout.expected $testroot/stdout
760 fc66b545 2019-08-12 stsp test_done "$testroot" "$ret"
764 fc66b545 2019-08-12 stsp (cd $testroot/wt && got update > $testroot/stdout)
765 fc66b545 2019-08-12 stsp echo "Already up-to-date" > $testroot/stdout.expected
766 fc66b545 2019-08-12 stsp cmp -s $testroot/stdout.expected $testroot/stdout
768 fc66b545 2019-08-12 stsp if [ "$ret" != "0" ]; then
769 fc66b545 2019-08-12 stsp diff -u $testroot/stdout.expected $testroot/stdout
771 ff0d2220 2019-07-11 stsp test_done "$testroot" "$ret"
774 dcf44d04 2019-07-11 stsp run_test test_rebase_basic
775 dcf44d04 2019-07-11 stsp run_test test_rebase_ancestry_check
776 dcf44d04 2019-07-11 stsp run_test test_rebase_continue
777 dcf44d04 2019-07-11 stsp run_test test_rebase_abort
778 ff0d2220 2019-07-11 stsp run_test test_rebase_no_op_change
779 7d5807f4 2019-07-11 stsp run_test test_rebase_in_progress
780 64c6d990 2019-07-11 stsp run_test test_rebase_path_prefix
781 787c8eb6 2019-07-11 stsp run_test test_rebase_preserves_logmsg
782 fc66b545 2019-08-12 stsp run_test test_rebase_no_commits_to_rebase