Merge branch 'es/outside-repo-errmsg-hints'
An earlier update to show the location of working tree in the error message did not consider the possibility that a git command may be run in a bare repository, which has been corrected. * es/outside-repo-errmsg-hints: prefix_path: show gitdir if worktree unavailable
This commit is contained in:
@ -438,9 +438,13 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
|
|||||||
} else {
|
} else {
|
||||||
match = prefix_path_gently(prefix, prefixlen,
|
match = prefix_path_gently(prefix, prefixlen,
|
||||||
&prefixlen, copyfrom);
|
&prefixlen, copyfrom);
|
||||||
if (!match)
|
if (!match) {
|
||||||
|
const char *hint_path = get_git_work_tree();
|
||||||
|
if (!hint_path)
|
||||||
|
hint_path = get_git_dir();
|
||||||
die(_("%s: '%s' is outside repository at '%s'"), elt,
|
die(_("%s: '%s' is outside repository at '%s'"), elt,
|
||||||
copyfrom, absolute_path(get_git_work_tree()));
|
copyfrom, absolute_path(hint_path));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item->match = match;
|
item->match = match;
|
||||||
|
8
setup.c
8
setup.c
@ -120,9 +120,13 @@ char *prefix_path_gently(const char *prefix, int len,
|
|||||||
char *prefix_path(const char *prefix, int len, const char *path)
|
char *prefix_path(const char *prefix, int len, const char *path)
|
||||||
{
|
{
|
||||||
char *r = prefix_path_gently(prefix, len, NULL, path);
|
char *r = prefix_path_gently(prefix, len, NULL, path);
|
||||||
if (!r)
|
if (!r) {
|
||||||
|
const char *hint_path = get_git_work_tree();
|
||||||
|
if (!hint_path)
|
||||||
|
hint_path = get_git_dir();
|
||||||
die(_("'%s' is outside repository at '%s'"), path,
|
die(_("'%s' is outside repository at '%s'"), path,
|
||||||
absolute_path(get_git_work_tree()));
|
absolute_path(hint_path));
|
||||||
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
38
t/t6136-pathspec-in-bare.sh
Executable file
38
t/t6136-pathspec-in-bare.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='diagnosing out-of-scope pathspec'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup a bare and non-bare repository' '
|
||||||
|
test_commit file1 &&
|
||||||
|
git clone --bare . bare
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'log and ls-files in a bare repository' '
|
||||||
|
(
|
||||||
|
cd bare &&
|
||||||
|
test_must_fail git log -- .. >out 2>err &&
|
||||||
|
test_must_be_empty out &&
|
||||||
|
test_i18ngrep "outside repository" err &&
|
||||||
|
|
||||||
|
test_must_fail git ls-files -- .. >out 2>err &&
|
||||||
|
test_must_be_empty out &&
|
||||||
|
test_i18ngrep "outside repository" err
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'log and ls-files in .git directory' '
|
||||||
|
(
|
||||||
|
cd .git &&
|
||||||
|
test_must_fail git log -- .. >out 2>err &&
|
||||||
|
test_must_be_empty out &&
|
||||||
|
test_i18ngrep "outside repository" err &&
|
||||||
|
|
||||||
|
test_must_fail git ls-files -- .. >out 2>err &&
|
||||||
|
test_must_be_empty out &&
|
||||||
|
test_i18ngrep "outside repository" err
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Reference in New Issue
Block a user