t / t6012-rev-list-simplify.shon commit Teach "apply --index-info" to handle rename patches (18cdf80)
   1#!/bin/sh
   2
   3test_description='merge simplification'
   4
   5. ./test-lib.sh
   6
   7note () {
   8        git tag "$1"
   9}
  10
  11unnote () {
  12        git name-rev --tags --stdin | sed -e "s|$_x40 (tags/\([^)]*\)) |\1 |g"
  13}
  14
  15test_expect_success setup '
  16        echo "Hi there" >file &&
  17        git add file &&
  18        test_tick && git commit -m "Initial file" &&
  19        note A &&
  20
  21        git branch other-branch &&
  22
  23        echo "Hello" >file &&
  24        git add file &&
  25        test_tick && git commit -m "Modified file" &&
  26        note B &&
  27
  28        git checkout other-branch &&
  29
  30        echo "Hello" >file &&
  31        git add file &&
  32        test_tick && git commit -m "Modified the file identically" &&
  33        note C &&
  34
  35        echo "This is a stupid example" >another-file &&
  36        git add another-file &&
  37        test_tick && git commit -m "Add another file" &&
  38        note D &&
  39
  40        test_tick && git merge -m "merge" master &&
  41        note E &&
  42
  43        echo "Yet another" >elif &&
  44        git add elif &&
  45        test_tick && git commit -m "Irrelevant change" &&
  46        note F &&
  47
  48        git checkout master &&
  49        echo "Yet another" >elif &&
  50        git add elif &&
  51        test_tick && git commit -m "Another irrelevant change" &&
  52        note G &&
  53
  54        test_tick && git merge -m "merge" other-branch &&
  55        note H &&
  56
  57        echo "Final change" >file &&
  58        test_tick && git commit -a -m "Final change" &&
  59        note I
  60'
  61
  62FMT='tformat:%P         %H | %s'
  63
  64check_result () {
  65        for c in $1
  66        do
  67                echo "$c"
  68        done >expect &&
  69        shift &&
  70        param="$*" &&
  71        test_expect_success "log $param" '
  72                git log --pretty="$FMT" --parents $param |
  73                unnote >actual &&
  74                sed -e "s/^.*   \([^ ]*\) .*/\1/" >check <actual &&
  75                test_cmp expect check || {
  76                        cat actual
  77                        false
  78                }
  79        '
  80}
  81
  82check_result 'I H G F E D C B A' --full-history
  83check_result 'I H E C B A' --full-history -- file
  84check_result 'I H E C B A' --full-history --topo-order -- file
  85check_result 'I H E C B A' --full-history --date-order -- file
  86check_result 'I E C B A' --simplify-merges -- file
  87check_result 'I B A' -- file
  88check_result 'I B A' --topo-order -- file
  89
  90test_done