t / t6060-merge-index.shon commit Merge branch 'jh/status-v2-porcelain' (00d2793)
   1#!/bin/sh
   2
   3test_description='basic git merge-index / git-merge-one-file tests'
   4. ./test-lib.sh
   5
   6test_expect_success 'setup diverging branches' '
   7        for i in 1 2 3 4 5 6 7 8 9 10; do
   8                echo $i
   9        done >file &&
  10        git add file &&
  11        git commit -m base &&
  12        git tag base &&
  13        sed s/2/two/ <file >tmp &&
  14        mv tmp file &&
  15        git commit -a -m two &&
  16        git tag two &&
  17        git checkout -b other HEAD^ &&
  18        sed s/10/ten/ <file >tmp &&
  19        mv tmp file &&
  20        git commit -a -m ten &&
  21        git tag ten
  22'
  23
  24cat >expect-merged <<'EOF'
  251
  26two
  273
  284
  295
  306
  317
  328
  339
  34ten
  35EOF
  36
  37test_expect_success 'read-tree does not resolve content merge' '
  38        git read-tree -i -m base ten two &&
  39        echo file >expect &&
  40        git diff-files --name-only --diff-filter=U >unmerged &&
  41        test_cmp expect unmerged
  42'
  43
  44test_expect_success 'git merge-index git-merge-one-file resolves' '
  45        git merge-index git-merge-one-file -a &&
  46        git diff-files --name-only --diff-filter=U >unmerged &&
  47        >expect &&
  48        test_cmp expect unmerged &&
  49        test_cmp expect-merged file &&
  50        git cat-file blob :file >file-index &&
  51        test_cmp expect-merged file-index
  52'
  53
  54test_expect_success 'setup bare merge' '
  55        git clone --bare . bare.git &&
  56        (cd bare.git &&
  57         GIT_INDEX_FILE=$PWD/merge.index &&
  58         export GIT_INDEX_FILE &&
  59         git read-tree -i -m base ten two
  60        )
  61'
  62
  63test_expect_success 'merge-one-file fails without a work tree' '
  64        (cd bare.git &&
  65         GIT_INDEX_FILE=$PWD/merge.index &&
  66         export GIT_INDEX_FILE &&
  67         test_must_fail git merge-index git-merge-one-file -a
  68        )
  69'
  70
  71test_expect_success 'merge-one-file respects GIT_WORK_TREE' '
  72        (cd bare.git &&
  73         mkdir work &&
  74         GIT_WORK_TREE=$PWD/work &&
  75         export GIT_WORK_TREE &&
  76         GIT_INDEX_FILE=$PWD/merge.index &&
  77         export GIT_INDEX_FILE &&
  78         git merge-index git-merge-one-file -a &&
  79         git cat-file blob :file >work/file-index
  80        ) &&
  81        test_cmp expect-merged bare.git/work/file &&
  82        test_cmp expect-merged bare.git/work/file-index
  83'
  84
  85test_expect_success 'merge-one-file respects core.worktree' '
  86        mkdir subdir &&
  87        git clone . subdir/child &&
  88        (cd subdir &&
  89         GIT_DIR=$PWD/child/.git &&
  90         export GIT_DIR &&
  91         git config core.worktree "$PWD/child" &&
  92         git read-tree -i -m base ten two &&
  93         git merge-index git-merge-one-file -a &&
  94         git cat-file blob :file >file-index
  95        ) &&
  96        test_cmp expect-merged subdir/child/file &&
  97        test_cmp expect-merged subdir/file-index
  98'
  99
 100test_done