Merge branch 'kh/pathspec-error-wo-repository-fix'

The pathspec code carelessly dereferenced NULL while emitting an
error message, which has been corrected.

* kh/pathspec-error-wo-repository-fix:
  grep: die gracefully when outside repository
This commit is contained in:
Junio C Hamano 2023-10-30 07:09:57 +09:00
commit 64912cc023
2 changed files with 33 additions and 1 deletions

View file

@ -467,7 +467,12 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
match = prefix_path_gently(prefix, prefixlen,
&prefixlen, copyfrom);
if (!match) {
const char *hint_path = get_git_work_tree();
const char *hint_path;
if (!have_git_dir())
die(_("'%s' is outside the directory tree"),
copyfrom);
hint_path = get_git_work_tree();
if (!hint_path)
hint_path = get_git_dir();
die(_("%s: '%s' is outside repository at '%s'"), elt,

View file

@ -1234,6 +1234,33 @@ test_expect_success 'outside of git repository with fallbackToNoIndex' '
)
'
test_expect_success 'no repository with path outside $cwd' '
test_when_finished rm -fr non &&
rm -fr non &&
mkdir -p non/git/sub non/tig &&
(
GIT_CEILING_DIRECTORIES="$(pwd)/non" &&
export GIT_CEILING_DIRECTORIES &&
cd non/git &&
test_expect_code 128 git grep --no-index search .. 2>error &&
grep "is outside the directory tree" error
) &&
(
GIT_CEILING_DIRECTORIES="$(pwd)/non" &&
export GIT_CEILING_DIRECTORIES &&
cd non/git &&
test_expect_code 128 git grep --no-index search ../tig 2>error &&
grep "is outside the directory tree" error
) &&
(
GIT_CEILING_DIRECTORIES="$(pwd)/non" &&
export GIT_CEILING_DIRECTORIES &&
cd non/git &&
test_expect_code 128 git grep --no-index search ../non 2>error &&
grep "no such path in the working tree" error
)
'
test_expect_success 'inside git repository but with --no-index' '
rm -fr is &&
mkdir -p is/git/sub &&