t / perf / p3400-rebase.shon commit Merge branch 'nd/diff-parseopt' (4c49dd0)
   1#!/bin/sh
   2
   3test_description='Tests rebase performance'
   4. ./perf-lib.sh
   5
   6test_perf_default_repo
   7
   8test_expect_success 'setup rebasing on top of a lot of changes' '
   9        git checkout -f -B base &&
  10        git checkout -B to-rebase &&
  11        git checkout -B upstream &&
  12        for i in $(seq 100)
  13        do
  14                # simulate huge diffs
  15                echo change$i >unrelated-file$i &&
  16                seq 1000 >>unrelated-file$i &&
  17                git add unrelated-file$i &&
  18                test_tick &&
  19                git commit -m commit$i unrelated-file$i &&
  20                echo change$i >unrelated-file$i &&
  21                seq 1000 | tac >>unrelated-file$i &&
  22                git add unrelated-file$i &&
  23                test_tick &&
  24                git commit -m commit$i-reverse unrelated-file$i ||
  25                break
  26        done &&
  27        git checkout to-rebase &&
  28        test_commit our-patch interesting-file
  29'
  30
  31test_perf 'rebase on top of a lot of unrelated changes' '
  32        git rebase --onto upstream HEAD^ &&
  33        git rebase --onto base HEAD^
  34'
  35
  36test_expect_success 'setup rebasing many changes without split-index' '
  37        git config core.splitIndex false &&
  38        git checkout -B upstream2 to-rebase &&
  39        git checkout -B to-rebase2 upstream
  40'
  41
  42test_perf 'rebase a lot of unrelated changes without split-index' '
  43        git rebase --onto upstream2 base &&
  44        git rebase --onto base upstream2
  45'
  46
  47test_expect_success 'setup rebasing many changes with split-index' '
  48        git config core.splitIndex true
  49'
  50
  51test_perf 'rebase a lot of unrelated changes with split-index' '
  52        git rebase --onto upstream2 base &&
  53        git rebase --onto base upstream2
  54'
  55
  56test_done