prefix_path: show gitdir when arg is outside repo

When developing a script, it can be painful to understand why Git thinks
something is outside the current repo, if the current repo isn't what
the user thinks it is. Since this can be tricky to diagnose, especially
in cases like submodules or nested worktrees, let's give the user a hint
about which repository is offended about that path.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Acked-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Emily Shaffer 2020-02-14 17:00:13 -08:00 committed by Junio C Hamano
parent d0654dc308
commit e0020b2f82
2 changed files with 4 additions and 2 deletions

View File

@ -439,7 +439,8 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
match = prefix_path_gently(prefix, prefixlen,
&prefixlen, copyfrom);
if (!match)
die(_("%s: '%s' is outside repository"), elt, copyfrom);
die(_("%s: '%s' is outside repository at '%s'"), elt,
copyfrom, absolute_path(get_git_work_tree()));
}
item->match = match;

View File

@ -121,7 +121,8 @@ char *prefix_path(const char *prefix, int len, const char *path)
{
char *r = prefix_path_gently(prefix, len, NULL, path);
if (!r)
die(_("'%s' is outside repository"), path);
die(_("'%s' is outside repository at '%s'"), path,
absolute_path(get_git_work_tree()));
return r;
}