Browse Source
When Git wants to spawn a child Git process inside a worktree's subdirectory while `GIT_DIR` is set, we need to take care of specifying the work tree's top-level directory explicitly because it cannot be discovered: the current directory is _not_ the top-level directory of the work tree, and neither is it inside the parent directory of `GIT_DIR`. This fixes the problem where `git stash apply` would report pretty much everything deleted or untracked when run inside a worktree's subdirectory. To make sure that we do not introduce the "reverse problem", i.e. when `GIT_WORK_TREE` is defined but `GIT_DIR` is not, we simply make sure that both are set. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint


2 changed files with 31 additions and 0 deletions
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2019 Johannes E Schindelin |
||||
# |
||||
|
||||
test_description='Test git stash in a worktree' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'setup' ' |
||||
test_commit initial && |
||||
git worktree add wt && |
||||
test_commit -C wt in-worktree |
||||
' |
||||
|
||||
test_expect_success 'apply in subdirectory' ' |
||||
mkdir wt/subdir && |
||||
( |
||||
cd wt/subdir && |
||||
echo modified >../initial.t && |
||||
git stash && |
||||
git stash apply >out |
||||
) && |
||||
grep "\.\.\/initial\.t" wt/subdir/out |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue