|  | #!/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 |