#!/bin/sh # # Copyright (c) 2005 Junio C Hamano # test_description='git checkout-index test. This test registers the following filesystem structure in the cache: path0 - a file path1/file1 - a file in a directory And then tries to checkout in a work tree that has the following: path0/file0 - a file in a directory path1 - a file The git checkout-index command should fail when attempting to checkout path0, finding it is occupied by a directory, and path1/file1, finding path1 is occupied by a non-directory. With "-f" flag, it should remove the conflicting paths and succeed. ' . ./test-lib.sh date >path0 mkdir path1 date >path1/file1 test_expect_success \ 'git update-index --add various paths.' \ 'git update-index --add path0 path1/file1' rm -fr path0 path1 mkdir path0 date >path0/file0 date >path1 test_expect_success \ 'git checkout-index without -f should fail on conflicting work tree.' \ 'test_must_fail git checkout-index -a' test_expect_success \ 'git checkout-index with -f should succeed.' \ 'git checkout-index -f -a' test_expect_success \ 'git checkout-index conflicting paths.' \ 'test -f path0 && test -d path1 && test -f path1/file1' test_expect_success SYMLINKS 'checkout-index -f twice with --prefix' ' mkdir -p tar/get && ln -s tar/get there && echo first && git checkout-index -a -f --prefix=there/ && echo second && git checkout-index -a -f --prefix=there/ ' test_done