mirror of
https://github.com/git/git
synced 2024-10-02 14:45:21 +00:00
Fix setup_git_directory_gently() with relative GIT_DIR & GIT_WORK_TREE
There are a few programs, such as config and diff, which allow running without a git repository. Therefore, they have to call setup_git_directory_gently(). However, when GIT_DIR and GIT_WORK_TREE were set, and the current directory was a subdirectory of the work tree, setup_git_directory_gently() would return a bogus NULL prefix. This patch fixes that. Noticed by REPLeffect on IRC. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
33c8d38c78
commit
dd5c8af176
13
setup.c
13
setup.c
|
@ -227,9 +227,20 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||
if (PATH_MAX - 40 < strlen(gitdirenv))
|
||||
die("'$%s' too big", GIT_DIR_ENVIRONMENT);
|
||||
if (is_git_directory(gitdirenv)) {
|
||||
static char buffer[1024 + 1];
|
||||
const char *retval;
|
||||
|
||||
if (!work_tree_env)
|
||||
return set_work_tree(gitdirenv);
|
||||
return NULL;
|
||||
retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
|
||||
get_git_work_tree());
|
||||
if (!retval || !*retval)
|
||||
return NULL;
|
||||
set_git_dir(make_absolute_path(gitdirenv));
|
||||
if (chdir(work_tree_env) < 0)
|
||||
die ("Could not chdir to %s", work_tree_env);
|
||||
strcat(buffer, "/");
|
||||
return retval;
|
||||
}
|
||||
if (nongit_ok) {
|
||||
*nongit_ok = 1;
|
||||
|
|
|
@ -103,4 +103,13 @@ test_expect_success 'repo finds its work tree from work tree, too' '
|
|||
test sub/dir/tracked = "$(git ls-files)")
|
||||
'
|
||||
|
||||
test_expect_success '_gently() groks relative GIT_DIR & GIT_WORK_TREE' '
|
||||
cd repo.git/work/sub/dir &&
|
||||
GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
|
||||
git diff --exit-code tracked &&
|
||||
echo changed > tracked &&
|
||||
! GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
|
||||
git diff --exit-code tracked
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue