t / t6060-merge-index.shon commit Merge branch 'rj/sparse-flags' (fe8e686)
   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        test_must_be_empty unmerged &&
  48        test_cmp expect-merged file &&
  49        git cat-file blob :file >file-index &&
  50        test_cmp expect-merged file-index
  51'
  52
  53test_expect_success 'setup bare merge' '
  54        git clone --bare . bare.git &&
  55        (cd bare.git &&
  56         GIT_INDEX_FILE=$PWD/merge.index &&
  57         export GIT_INDEX_FILE &&
  58         git read-tree -i -m base ten two
  59        )
  60'
  61
  62test_expect_success 'merge-one-file fails without a work tree' '
  63        (cd bare.git &&
  64         GIT_INDEX_FILE=$PWD/merge.index &&
  65         export GIT_INDEX_FILE &&
  66         test_must_fail git merge-index git-merge-one-file -a
  67        )
  68'
  69
  70test_expect_success 'merge-one-file respects GIT_WORK_TREE' '
  71        (cd bare.git &&
  72         mkdir work &&
  73         GIT_WORK_TREE=$PWD/work &&
  74         export GIT_WORK_TREE &&
  75         GIT_INDEX_FILE=$PWD/merge.index &&
  76         export GIT_INDEX_FILE &&
  77         git merge-index git-merge-one-file -a &&
  78         git cat-file blob :file >work/file-index
  79        ) &&
  80        test_cmp expect-merged bare.git/work/file &&
  81        test_cmp expect-merged bare.git/work/file-index
  82'
  83
  84test_expect_success 'merge-one-file respects core.worktree' '
  85        mkdir subdir &&
  86        git clone . subdir/child &&
  87        (cd subdir &&
  88         GIT_DIR=$PWD/child/.git &&
  89         export GIT_DIR &&
  90         git config core.worktree "$PWD/child" &&
  91         git read-tree -i -m base ten two &&
  92         git merge-index git-merge-one-file -a &&
  93         git cat-file blob :file >file-index
  94        ) &&
  95        test_cmp expect-merged subdir/child/file &&
  96        test_cmp expect-merged subdir/file-index
  97'
  98
  99test_done