[v2,1/4] get_main_worktree(): allow it to be called in the Git directory
diff mbox series

Message ID 8718facbc951614f19407afa6ca8d6110507483d.1582410908.git.gitgitgadget@gmail.com
State New
Headers show
Series
  • receive.denyCurrentBranch: respect all worktrees
Related show

Commit Message

Derrick Stolee via GitGitGadget Feb. 22, 2020, 10:35 p.m. UTC
From: Hariom Verma <hariom18599@gmail.com>

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>
---
 worktree.c | 1 +
 1 file changed, 1 insertion(+)

Patch
diff mbox series

diff --git a/worktree.c b/worktree.c
index 5b4793caa34..7c8cd213171 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, "/.");