2010/2/9 Junio C Hamano <gitster@xxxxxxxxx>: > Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > >> 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. > >> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html