t / t2025-checkout-no-overlay.shon commit Merge branch 'vv/merge-squash-with-explicit-commit' into maint (33f2790)
   1#!/bin/sh
   2
   3test_description='checkout --no-overlay <tree-ish> -- <pathspec>'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8        git commit --allow-empty -m "initial"
   9'
  10
  11test_expect_success 'checkout --no-overlay deletes files not in <tree-ish>' '
  12        >file &&
  13        mkdir dir &&
  14        >dir/file1 &&
  15        git add file dir/file1 &&
  16        git checkout --no-overlay HEAD -- file &&
  17        test_path_is_missing file &&
  18        test_path_is_file dir/file1
  19'
  20
  21test_expect_success 'checkout --no-overlay removing last file from directory' '
  22        git checkout --no-overlay HEAD -- dir/file1 &&
  23        test_path_is_missing dir
  24'
  25
  26test_expect_success 'checkout -p --overlay is disallowed' '
  27        test_must_fail git checkout -p --overlay HEAD 2>actual &&
  28        test_i18ngrep "fatal: -p and --overlay are mutually exclusive" actual
  29'
  30
  31test_expect_success '--no-overlay --theirs with D/F conflict deletes file' '
  32        test_commit file1 file1 &&
  33        test_commit file2 file2 &&
  34        git rm --cached file1 &&
  35        echo 1234 >file1 &&
  36        F1=$(git rev-parse HEAD:file1) &&
  37        F2=$(git rev-parse HEAD:file2) &&
  38        {
  39                echo "100644 $F1 1      file1" &&
  40                echo "100644 $F2 2      file1"
  41        } | git update-index --index-info &&
  42        test_path_is_file file1 &&
  43        git checkout --theirs --no-overlay -- file1 &&
  44        test_path_is_missing file1
  45'
  46
  47test_done