Imported Upstream version 2.17.5
[platform/upstream/git.git] / t / t0090-cache-tree.sh
index 067f4c6..adfd4f0 100755 (executable)
@@ -22,7 +22,7 @@ generate_expected_cache_tree_rec () {
        # ls-files might have foo/bar, foo/bar/baz, and foo/bar/quux
        # We want to count only foo because it's the only direct child
        subtrees=$(git ls-files|grep /|cut -d / -f 1|uniq) &&
-       subtree_count=$(echo "$subtrees"|awk -v c=0 '$1 {++c} END {print c}') &&
+       subtree_count=$(echo "$subtrees"|awk -v c=0 '$1 != "" {++c} END {print c}') &&
        entries=$(git ls-files|wc -l) &&
        printf "SHA $dir (%d entries, %d subtrees)\n" "$entries" "$subtree_count" &&
        for subtree in $subtrees
@@ -199,6 +199,30 @@ test_expect_success 'checkout -B gives cache-tree' '
        test_cache_tree
 '
 
+test_expect_success 'merge --ff-only maintains cache-tree' '
+       git checkout current &&
+       git checkout -b changes &&
+       test_commit llamas &&
+       test_commit pachyderm &&
+       test_cache_tree &&
+       git checkout current &&
+       test_cache_tree &&
+       git merge --ff-only changes &&
+       test_cache_tree
+'
+
+test_expect_success 'merge maintains cache-tree' '
+       git checkout current &&
+       git checkout -b changes2 &&
+       test_commit alpacas &&
+       test_cache_tree &&
+       git checkout current &&
+       test_commit struthio &&
+       test_cache_tree &&
+       git merge changes2 &&
+       test_cache_tree
+'
+
 test_expect_success 'partial commit gives cache-tree' '
        git checkout -b partial no-children &&
        test_commit one &&
@@ -218,4 +242,14 @@ test_expect_success 'no phantom error when switching trees' '
        ! test -s errors
 '
 
+test_expect_success 'switching trees does not invalidate shared index' '
+       git update-index --split-index &&
+       >split &&
+       git add split &&
+       test-dump-split-index .git/index | grep -v ^own >before &&
+       git commit -m "as-is" &&
+       test-dump-split-index .git/index | grep -v ^own >after &&
+       test_cmp before after
+'
+
 test_done