This one is ugly (and not intended to submit to git.git), but it shows how to reproduce the issues. You can run it with arg "--normal" to see it works just fine without GIT_WORK_TREE. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- t/t1502-subworktree.sh | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 109 insertions(+), 0 deletions(-) create mode 100755 t/t1502-subworktree.sh diff --git a/t/t1502-subworktree.sh b/t/t1502-subworktree.sh new file mode 100755 index 0000000..6b8f02f --- /dev/null +++ b/t/t1502-subworktree.sh @@ -0,0 +1,109 @@ +#!/bin/sh + +test_description='test commands on separate work tree' +. ./test-lib.sh + +mkdir -p work/sub/dir || exit 1 +mv .git work +if test "$1" = --normal; then + say "Normal case" +else + say "Worktree case" +fi +test "$1" = --normal || mv work/.git repo.git || exit 1 + +test "$1" = --normal || export GIT_DIR=$(pwd)/repo.git +export GIT_CONFIG="$(pwd)"/$GIT_DIR/config +test "$1" = --normal || export GIT_WORK_TREE=$(pwd)/work + +cd work/sub || exit 1 + +cat >expected <<EOF +100644 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 0 dir/untracked +EOF + +test_expect_success 'git-ls-files' 'test expected = "$(git ls-files --others)"' + +test_expect_success 'git-add' ' + ( : > dir/untracked && + git add dir/untracked && + test dir/untracked = "$(git ls-files)") +' +test_expect_success 'git-update-index' ' + ( echo test > dir/untracked && + git update-index dir/untracked && + git ls-files --stage > check && + cmp expected check) +' + +test_expect_success 'git-commit' 'git commit -m one' + +cat >expected <<EOF +100644 blob 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 dir/untracked +EOF + +test_expect_success 'git-ls-tree' ' + (git ls-tree -r HEAD > check && + cmp expected check) +' +test_expect_success 'git-rm' ' + (git rm --cached dir/untracked && + test -z "$(git ls-files)") +' +test_expect_success 'git-reset' ' + (git reset HEAD -- dir/untracked && + test dir/untracked = "$(git ls-files)") +' +test_expect_success 'git-annotate' 'git annotate dir/untracked' + +test_expect_success 'git-blame' 'git blame dir/untracked' + +cat > patch <<EOF +From b774efc5a2199bfc1c9c18db70363c69a5a10c86 Mon Sep 17 00:00:00 2001 +From: A U Thor <author@xxxxxxxxxxx> +Date: Tue, 23 Oct 2007 21:17:24 +0700 +Subject: bah + +--- + sub/dir/untracked | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/sub/dir/untracked b/sub/dir/untracked +index 9daeafb..c73d3ff 100644 +--- a/sub/dir/untracked ++++ b/sub/dir/untracked +@@ -1 +1,2 @@ + test ++test again +-- +1.5.3.rc4.3.gab089 + +EOF + +cat > expected <<EOF +100644 c73d3ffa5fa32888de8219e49fd45d37dc209677 0 dir/untracked +EOF + +test_expect_success 'git-apply to index' ' + (git apply --index patch && + git ls-files --stage > check && + cmp expected check)' + +test_expect_failure 'git-apply to worktree' 'test -f sub/dir/untracked' + +test_expect_success 'git-reset --hard' '( git reset --hard HEAD && test -z "$(git ls-files -m)")' + +test_expect_failure 'git-am must not be run from subdir' 'git-am -k patch' + +test_expect_success 'git-reset --hard' 'git reset --hard HEAD' + +test_expect_success 'git-am' '(cd .. && git-am -k sub/patch)' + +test_expect_success 'git-format-patch' ' + (git format-patch -k HEAD^ && + sed "1d;/^-- /,\$d" patch > expected && + sed "1d;/^-- /,\$d" 0001-bah.patch > check && + cmp expected check) +' + +test_done -- 1.5.3.rc4.3.gab089 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html