Re: [PATCH] Support working directory located at root
From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:48:12
2010/2/9 Junio C Hamano [off-list ref]:
Nguyễn Thái Ngọc Duy [off-list ref] writes:quoted
Git should work regardless where the working directory is located, even at root. This patch fixes two places where it assumes working directory always have parent directory. In setup_git_directory_gently(), when Git goes up to root and finds .git there, it happily sets worktree to "".If you mean "instead set it to "/" and things will work much better." I agree with the reasoning (not suggesting to reword---just trying to make sure I understood what you meant).
Yes.
quoted
In prefix_path(), loosen the outside repo check a little bit. Usually when a path XXX is inside worktree /foo, it must be either "/foo", or "/foo/...". When worktree is simply "/", we can safely ignore the check: we have a slash at the beginning already.The logic for the "are we inside?" check above sounds correct. When work_tree is at root, have "/" in it, and len inside the "if orig is absolute" block is 1, so memmove() strips out the leading '/' and makes the result relative to the root level. Am I reading the code right?
You are. But I suspect my change in this code is not enough and caused
the problem (on msys?) for Hannes. If the worktree somehow is '//' and
sanitized is '/etc/resolv.conf', then we could end up eating two
chars, leading to "'tc/resolv.conf' not match" error.
Hannes, can you put a "printf("%s\n", work_tree);" in prefix_path() to
see if it's the case?
--
Duy