From: Michael J Gruber Date: Fri, 25 Mar 2011 14:17:19 GMT Subject: Re: [PATCH] setup: return correct prefix if worktree is '/' Message-ID: <4D8CA3EF.3010403@drmicha.warpmail.net> In-Reply-To: <1301060989-7246-1-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy venit, vidit, dixit 25.03.2011 14:49: > The same old problem reappears after setup code is reworked. We tend > to assume there is at least one path component in a path and forget > that path can be simply '/'. > > Reported-by: Matthijs Kooijman > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > cache.h | 2 ++ > path.c | 35 +++++++++++++++++++++++++++++++++++ > setup.c | 5 ++--- > 3 files changed, 39 insertions(+), 3 deletions(-) > Wait wait, the bug bisects to 490544b (get_cwd_relative(): do not misinterpret suffix as subdirectory, 2010-05-22) for me, using git bisect run sh -c "make || exit 125; cd /etc; GIT_DIR=/tmp/a/.git ~/src/git/git-add fstab || exit 1" and a repo in /tmp/a/.git with core.worktree set to "/". The issue is that in get_relative_cwd() of dir.c, "dir" (and maybe ("cwd") may or may not end in "/", so even with dir="/etc/" and cwd="/etc" we would not recognize we are within the repo. Patch for that is coming. Note that by doing something like the above, we can test / without being root as long as we have files there which we can rely on being readable, or can rely on /tmp being there. Michael