From: Junio C Hamano Date: Tue, 27 Nov 2007 00:24:07 GMT Subject: Re: [PATCH] Make Git accept absolute path names for files within the work tree Message-ID: <7vmyt0edso.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1196119109-27483-1-git-send-email-robin.rosenberg@dewire.com> Robin Rosenberg writes: > 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.