Re: [PATCH] Support working directory located at root
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Feb 8, 2010, 21:29 UTC
- Message-ID
- <201002082229.43024.j6t@kdbg.org>
- In-Reply-To
- <1265640810-6361-1-git-send-email-pclouds@gmail.com>
On Montag, 8. Februar 2010, Nguyễn Thái Ngọc Duy wrote:
Show 27 quoted lines
> @@ -25,7 +25,7 @@ const char *prefix_path(const char *prefix, int len,
> const char *path) len = strlen(work_tree);
> total = strlen(sanitized) + 1;
> if (strncmp(sanitized, work_tree, len) ||
> - (sanitized[len] != '\0' && sanitized[len] != '/')) {
> + (len > 1 && sanitized[len] != '\0' && sanitized[len] != '/')) {
> error_out:
> die("'%s' is outside repository", orig);
> }
> @@ -403,7 +403,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
> if (!work_tree_env)
> inside_work_tree = 0;
> if (offset != len) {
> - cwd[offset] = '\0';
> + cwd[offset ? offset : 1] = '\0';
> set_git_dir(cwd);
> } else
> set_git_dir(".");
> @@ -427,6 +427,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
> inside_git_dir = 0;
> if (!work_tree_env)
> inside_work_tree = 1;
> + if (offset == 0) /* reached root, set worktree to '/' */
> + offset = 1;
> git_work_tree_cfg = xstrndup(cwd, offset);
> if (check_repository_format_gently(nongit_ok))
> return NULL;Does not work:
etc@master:1028> ~/Src/git/git/git add resolv.conf fatal: pathspec 'tc/resolv.conf' did not match any files
I wonder how this works on Windows where we do not want to strip the slash from C:/ either.
-- Hannes