Re: [PATCH] Make Git accept absolute path names for files within the work tree
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 27, 2007, 00:24 UTC
- Message-ID
- <7vmyt0edso.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1196119109-27483-1-git-send-email-robin.rosenberg@dewire.com>
Robin Rosenberg <robin.rosenberg@dewire.com> writes:
Show 27 quoted lines
> Was it this simple?
>
> diff --git a/setup.c b/setup.c
> index 43cd3f9..9b3a9ff 100644
> --- a/setup.c
> +++ b/setup.c
> @@ -6,6 +6,22 @@ static int inside_work_tree = -1;
>
> const char *prefix_path(const char *prefix, int len, const char *path)
> {
> + if (is_absolute_path(path)) {
> + const char *work_tree = get_git_work_tree();
> + int n = strlen(work_tree);
> + if (!strncmp(path, work_tree, n) && (path[n] == '/' || !path[n])) {
> + if (path[n])
> + path += 1;
> + path += n;
> + if (prefix && !strncmp(path, prefix, len - 1)) {
> + if (path[len - 1] == '/')
> + path += len;
> + else
> + if (!path[len - 1])
> + path += len - 1;
> + }
> + }
> + }
> const char *orig = path;Decl after statement.
I do not think there is fundamental reason to object to this change, as long as the prefixing is done to the path that is trying to name a path in the working tree.
Also some codepath that does not require any work tree may want to call prefix_path(). I do not know what would happen in such a case.
Although I didn't look at all the callers, I think the caller from config.c is not talking about a path in the work tree, and not all users of config.c need to have work-tree.