mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
![Eric Sunshine](/assets/img/avatar_default.png)
Failures within `for` and `while` loops can go unnoticed if not detected and signaled manually since the loop itself does not abort when a contained command fails, nor will a failure necessarily be detected when the loop finishes since the loop returns the exit code of the last command it ran on the final iteration, which may not be the command which failed. Therefore, detect and signal failures manually within loops using the idiom `|| return 1` (or `|| exit 1` within subshells). Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
57 lines
1.4 KiB
Bash
Executable file
57 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='Tests rebase performance'
|
|
. ./perf-lib.sh
|
|
|
|
test_perf_default_repo
|
|
|
|
test_expect_success 'setup rebasing on top of a lot of changes' '
|
|
git checkout -f -B base &&
|
|
git checkout -B to-rebase &&
|
|
git checkout -B upstream &&
|
|
for i in $(test_seq 100)
|
|
do
|
|
# simulate huge diffs
|
|
echo change$i >unrelated-file$i &&
|
|
test_seq 1000 >>unrelated-file$i &&
|
|
git add unrelated-file$i &&
|
|
test_tick &&
|
|
git commit -m commit$i unrelated-file$i &&
|
|
echo change$i >unrelated-file$i &&
|
|
test_seq 1000 | sort -nr >>unrelated-file$i &&
|
|
git add unrelated-file$i &&
|
|
test_tick &&
|
|
git commit -m commit$i-reverse unrelated-file$i ||
|
|
return 1
|
|
done &&
|
|
git checkout to-rebase &&
|
|
test_commit our-patch interesting-file
|
|
'
|
|
|
|
test_perf 'rebase on top of a lot of unrelated changes' '
|
|
git rebase --onto upstream HEAD^ &&
|
|
git rebase --onto base HEAD^
|
|
'
|
|
|
|
test_expect_success 'setup rebasing many changes without split-index' '
|
|
git config core.splitIndex false &&
|
|
git checkout -B upstream2 to-rebase &&
|
|
git checkout -B to-rebase2 upstream
|
|
'
|
|
|
|
test_perf 'rebase a lot of unrelated changes without split-index' '
|
|
git rebase --onto upstream2 base &&
|
|
git rebase --onto base upstream2
|
|
'
|
|
|
|
test_expect_success 'setup rebasing many changes with split-index' '
|
|
git config core.splitIndex true
|
|
'
|
|
|
|
test_perf 'rebase a lot of unrelated changes with split-index' '
|
|
git rebase --onto upstream2 base &&
|
|
git rebase --onto base upstream2
|
|
'
|
|
|
|
test_done
|