diff options
author | Jeff King <peff@peff.net> | 2017-11-03 13:58:02 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-11-03 23:02:25 +0900 |
commit | fa4d8c783d780191d98fe1f68ad2dea2fe78d19c (patch) | |
tree | cb763d9b256516973511c149fffeb468502c62cf /setup.c | |
parent | 5c4003ca3f0e9ac6d3c8aa3e387ff843bd440411 (diff) | |
download | git-fa4d8c783d780191d98fe1f68ad2dea2fe78d19c.tar.gz |
setup: avoid double slashes when looking for HEADjs/early-config
Andrew Baumann reported that when called outside of any Git worktree,
`git rev-parse --is-inside-work-tree` eventually tries to access
`//HEAD`, i.e. any `HEAD` file in the root directory, but with a double
slash.
This double slash is not only unintentional, but is allowed by the POSIX
standard to have a special meaning. And most notably on Windows, it
does, where it refers to a UNC path of the form `//server/share/`.
As a consequence, afore-mentioned `rev-parse` call not only looks for
the wrong thing, but it also causes serious delays, as Windows will try
to access a server called `HEAD`. Let's simply avoid the unintended
double slash.
Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -283,7 +283,9 @@ int is_git_directory(const char *suspect) size_t len; /* Check worktree-related signatures */ - strbuf_addf(&path, "%s/HEAD", suspect); + strbuf_addstr(&path, suspect); + strbuf_complete(&path, '/'); + strbuf_addstr(&path, "HEAD"); if (validate_headref(path.buf)) goto done; |