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

Re: git diff-index with relative git-dir does not work

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Feb 9, 2010, 11:58 UTC
Message-ID
<fcaeb9bf1002090358v3d7f69d5ra80c186d30a1304d@mail.gmail.com>
In-Reply-To
<871vguy8hz.wl@dns1.atmark-techno.com>
On 2/9/10, Yasushi SHOJI <yashi@atmark-techno.com> wrote:
Show 11 quoted lines
>  ...
>  This is because static variable 'base' in sha1_file_name is already
>  assigned _before_ setup_work_tree() from cmd_diff_index() is
>  called. setup_work_tree() eventually chdir to the given work tree dir,
>  but we use the old base to generate object file path. And that cause
>  open(2) to fail because the object file path and the current dir is
>  not in sync any more.
>
>  So, is it correct to assume that we must call setup_work_tree()
>  _before_ any function which call getter/setter in environment.c?  This
>  including open_sha1_file, in this case.

We must if gitdir is relative to cwd (and will be moved by setup_work_tree). Or just make gitdir absolute path.

>  Also, would it be a good idea to make all builtin command to
>  _explicitly_ call setup_* functions, so that we can find calling order
>  bug?

If you agree that writing "RUN_SETUP" in git.c is explicit, then all builtin commands do explictly call setup_*. It's about relative directories and cwd being moved around.

>  In that case, we must change the setup functions signature to
>  allow marking "not interested" or something.
I'm not sure I get your idea.
-- 
Duy
Previous: Yasushi SHOJINext: Yasushi SHOJI
Message 2 of 4 in “git diff-index with relative git-dir does not work”
  1. Yasushi SHOJIFeb 9, 2010
  2. Nguyen Thai Ngoc DuyFeb 9, 2010
  3. Yasushi SHOJIFeb 9, 2010
  4. Nguyen Thai Ngoc DuyFeb 11, 2010

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.