git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2 v2] run-command (Windows): Run dashless "git <cmd>" (solves part of problem with system_path)

From
Steffen Prohaska <prohaska@zib.de>
Date
Jul 29, 2008, 05:51 UTC
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:
Show 16 quoted lines
> Steffen Prohaska <prohaska@zib.de> 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
Previous: Steffen ProhaskaNext: Johannes Schindelin
Message 8 of 9 in “run-command (Windows): Run dashless "git <cmd>" (solves part of problem with system_path)”
  1. 2/2 run-command (Windows): Run dashless "git <cmd>" (solves part of problem with system_path)Steffen Prohaska, Jul 29, 2008
  2. [FOR DEBUGGING] Stop installing BUILT_INSSteffen Prohaska, Jul 29, 2008
  3. Shawn O. PearceJul 29, 2008
  4. Junio C HamanoJul 29, 2008
  5. Steffen ProhaskaJul 29, 2008
  6. Johannes SchindelinJul 29, 2008
  7. Steffen ProhaskaJul 29, 2008
  8. Steffen ProhaskaJul 29, 2008
  9. Johannes SchindelinJul 29, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.