[PATCH v4 03/10] Prepare setup_discovered_git_directory() the root directory
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 7, 2017, 14:32 UTC
- Message-ID
- <44b547dd1e7cc57c8612ca12771cca75d5f6c4a0.1488897111.git.johannes.schindelin@gmx.de>
- In-Reply-To
- <cover.1488897111.git.johannes.schindelin@gmx.de>
Currently, the offset parameter (indicating what part of the cwd parameter corresponds to the current directory after discovering the .git/ directory) is set to 0 when we are running in the root directory.
However, in the next patches we will avoid changing the current working directory while searching for the .git/ directory, meaning that the offset corresponding to the root directory will have to be 1 to reflect that this directory is characterized by the path "/" (and not "").
So let's make sure that setup_discovered_git_directory() only tries to append the trailing slash to non-root directories.
Note: the setup_bare_git_directory() does not need a corresponding change, as it does not want to return a prefix.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- setup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/setup.c b/setup.c index 4a15b105676..20a1f0f870e 100644 --- a/setup.c +++ b/setup.c @@ -721,8 +721,10 @@ static const char *setup_discovered_git_dir(const char *gitdir, if (offset == cwd->len) return NULL; - /* Make "offset" point to past the '/', and add a '/' at the end */ - offset++; + /* Make "offset" point past the '/' (already the case for root dirs) */ + if (offset != offset_1st_component(cwd->buf)) + offset++; + /* Add a '/' at the end */ strbuf_addch(cwd, '/'); return cwd->buf + offset; }
-- 2.12.0.windows.1.7.g94dafc3b124