From: Junio C Hamano Date: Mon, 3 Aug 2015 18:01:14 +0000 (-0700) Subject: Merge branch 'nd/export-worktree' X-Git-Tag: v2.6.0-rc0~111 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a3f4eb1b40457d85ab63168b621e71eaf73bb3c4?hp=54d673f25d571ac2d8f50b1ccea4a7d69ca8a056 Merge branch 'nd/export-worktree' Running an aliased command from a subdirectory when the .git thing in the working tree is a gitfile pointing elsewhere did not work. * nd/export-worktree: setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR --- diff --git a/environment.c b/environment.c index 01cb28dda9..a533aed630 100644 --- a/environment.c +++ b/environment.c @@ -237,6 +237,8 @@ void set_git_work_tree(const char *new_work_tree) } git_work_tree_initialized = 1; work_tree = xstrdup(real_path(new_work_tree)); + if (setenv(GIT_WORK_TREE_ENVIRONMENT, work_tree, 1)) + die("could not set GIT_WORK_TREE to '%s'", work_tree); } const char *get_git_work_tree(void) diff --git a/t/t0002-gitfile.sh b/t/t0002-gitfile.sh index 37e9396e5d..9393322c3e 100755 --- a/t/t0002-gitfile.sh +++ b/t/t0002-gitfile.sh @@ -99,4 +99,21 @@ test_expect_success 'check rev-list' ' test "$SHA" = "$(git rev-list HEAD)" ' +test_expect_success 'setup_git_dir twice in subdir' ' + git init sgd && + ( + cd sgd && + git config alias.lsfi ls-files && + mv .git .realgit && + echo "gitdir: .realgit" >.git && + mkdir subdir && + cd subdir && + >foo && + git add foo && + git lsfi >actual && + echo foo >expected && + test_cmp expected actual + ) +' + test_done