]> git.ipfire.org Git - thirdparty/git.git/commitdiff
get_main_worktree(): allow it to be called in the Git directory
authorHariom Verma <hariom18599@gmail.com>
Sun, 23 Feb 2020 18:57:08 +0000 (18:57 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 24 Feb 2020 19:13:44 +0000 (11:13 -0800)
When called in the Git directory of a non-bare repository, this function
would not return the directory of the main worktree, but of the Git
directory instead.

The reason: when the Git directory is the current working directory, the
absolute path of the common directory will be reported with a trailing
`/.git/.`, which the code of `get_main_worktree()` does not handle
correctly.

Let's fix this.

Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Hariom Verma <hariom18599@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
worktree.c

index 5b4793caa34e3ab981268662efdc1d840ac53390..7c8cd2131713dd53ee3e716df6e5451d67c3ec69 100644 (file)
@@ -51,6 +51,7 @@ static struct worktree *get_main_worktree(void)
        struct strbuf worktree_path = STRBUF_INIT;
 
        strbuf_add_absolute_path(&worktree_path, get_git_common_dir());
+       strbuf_strip_suffix(&worktree_path, "/.");
        if (!strbuf_strip_suffix(&worktree_path, "/.git"))
                strbuf_strip_suffix(&worktree_path, "/.");