Hi, On Wed, 27 Feb 2008, Nguyễn Thái Ngọc Duy wrote: > @@ -336,24 +321,21 @@ const char *setup_git_directory_gently(int *nongit_ok) > static char buffer[1024 + 1]; > const char *retval; > > + /* > + * The old behaviour (which we retain here) is to set > + * the work tree root to the cwd, unless overridden by > + * the config, the command line, or GIT_WORK_TREE. > + */ > if (!work_tree_env) { > - retval = set_work_tree(gitdirenv); > - /* config may override worktree */ > - if (check_repository_format_gently(nongit_ok)) > - return NULL; > - return retval; > + char buffer[PATH_MAX + 1]; > + > + if (!getcwd(buffer, sizeof(buffer))) > + die ("Could not get the current working directory"); > + git_work_tree_cfg = xstrdup(buffer); > + inside_work_tree = 1; > } > - if (check_repository_format_gently(nongit_ok)) > - return NULL; > - retval = get_relative_cwd(buffer, sizeof(buffer) - 1, > - get_git_work_tree()); > - if (!retval || !*retval) > - return NULL; > - set_git_dir(make_absolute_path(gitdirenv)); > - if (chdir(work_tree_env) < 0) > - die ("Could not chdir to %s", work_tree_env); > - strcat(buffer, "/"); > - return retval; > + check_repository_format_gently(nongit_ok); > + return NULL; What about the situation where you are in a subdirectory of core.worktree? You return prefix NULL? That's wrong. I am sorry, but with all these intrusive changes, I get a very uneasy feeling. As uneasy as with the original series, which I tried to fix up, not really succeeding. Ciao, Dscho