summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorEmily Shaffer <emilyshaffer@google.com>2020-03-03 04:05:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-03-15 16:35:46 (GMT)
commit5c20398699165a91af2d81ea2d20385bc8dd3627 (patch)
tree7ee6a11bb7465d2c938a39410c958acfb9639a43 /setup.c
parente0020b2f82910f50bc697d86aff70c3796fbdc41 (diff)
downloadgit-5c20398699165a91af2d81ea2d20385bc8dd3627.zip
git-5c20398699165a91af2d81ea2d20385bc8dd3627.tar.gz
git-5c20398699165a91af2d81ea2d20385bc8dd3627.tar.bz2
prefix_path: show gitdir if worktree unavailable
If there is no worktree at present, we can still hint the user about Git's current directory by showing them the absolute path to the Git directory. Even though the Git directory doesn't make it as easy to locate the worktree in question, it can still help a user figure out what's going on while developing a script. This fixes a segmentation fault introduced in e0020b2f ("prefix_path: show gitdir when arg is outside repo", 2020-02-14). Signed-off-by: Emily Shaffer <emilyshaffer@google.com> [jc: added minimum tests, with help from Szeder Gábor] Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/setup.c b/setup.c
index 17814a0..f489728 100644
--- a/setup.c
+++ b/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 *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,
- absolute_path(get_git_work_tree()));
+ absolute_path(hint_path));
+ }
return r;
}