From: Steffen Prohaska Date: Tue, 29 Jul 2008 05:51:42 GMT Subject: Re: [PATCH 2/2 v2] run-command (Windows): Run dashless "git " (solves part of problem with system_path) Message-ID: <10AD8BDA-72E8-437D-8CFC-CDD71BB016F8@zib.de> In-Reply-To: <20080729052459.GC11947@spearce.org> On Jul 29, 2008, at 7:24 AM, Shawn O. Pearce wrote: > Steffen Prohaska wrote: >> We prefer running the dashless form, so we should use it in MinGW's >> start_command(), too. > ... >> - We have non-builtins that are implemented in C, e.g. fast-import.c. >> These non-builtins will still compute wrong paths. > > This feels wrong to me. fast-import probably won't be adversly > impacted by not being able to read /etc/gitconfig, unless the user > has set something like core.deltaBaseCacheLimit and is doing an > incremental import. But other non-builtins may be impacted. > > It feels like we're fixing this in the wrong place. If the issue > is we don't find our installation directory correctly, we should > find our installation directory correctly, not work around it by > calling builtins through the git wrapper. For builtins it is not a work around but a real solution. The solution however needs to be tested without builtins installed in libexec/git-core. Note that Unix runs builtins using the git wrapper too (see execv_git_cmd), so the patch makes the MinGW port behaving more like the Unix version. My patch however does not solve the problem for non-builtins, so I agree that we are not fixing the real problem. Maybe we could do the following: - Add a switch RELOCATABLE_PREFIX to the Makefile. - If RELOCATABLE_PREFIX is defined, system paths will not be interpreted as is, but a prefix will be computed at runtime. For example, if git is installed in /some/patch/bin/git, then system_path("/etc") will return "/some/path/etc". - As Dscho proposed, system_path() needs to be intelligent enough to find the prefix for executables located either in bindir or in gitexecdir. Adding a switch to the Makefile would make the relocation magic explicit, instead of relying on relative paths. This has also the advantage that we can just use the default paths for gitexecdir, template_dir, ... , instead of overriding them in MINGW section of the Makefile. We only would set RELOCATABLE_PREFIX there. Actually some more work is needed because prefix is used for defining system paths and also for defining the installation directory. Maybe we could add installprefix to explicitly distinguish between the two purposes. Steffen