path: root/worktree.c
diff options
authorHariom Verma <>2020-02-23 18:57:08 (GMT)
committerJunio C Hamano <>2020-02-24 19:13:44 (GMT)
commit45f274fbb118cc4cb00640c30b4e3069d96755a0 (patch)
treec7ee0fa5735c2f20e57791117e278f98c342346f /worktree.c
parentd0654dc308b0ba76dd8ed7bbb33c8d8f7aacd783 (diff)
get_main_worktree(): allow it to be called in the Git directory
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 <> Signed-off-by: Hariom Verma <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'worktree.c')
1 files changed, 1 insertions, 0 deletions
diff --git a/worktree.c b/worktree.c
index 5b4793c..7c8cd21 100644
--- a/worktree.c
+++ b/worktree.c
@@ -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, "/.");