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

Re: [fixed PATCH] git-filter-branch.sh: Fix broken setting of GIT_DIR

From
David Kastrup <dak@gnu.org>
Date
Aug 11, 2007, 12:29 UTC
Message-ID
<851weaw8z6.fsf@lola.goethe.zz>
In-Reply-To
<858x8iw9q1.fsf@lola.goethe.zz>
David Kastrup <dak@gnu.org> writes:
Show 20 quoted lines
> David Kastrup <dak@gnu.org> writes:
>
>> Anyway, if $GIT_DIR is a relative path, things would go wrong in some
>> lines earlier,
>
> and if GIT_DIR were used or exported which it isn't, so we are lucky...
>
>> where the path is already being changed.
>>
>> If git-sh-setup sets GIT_DIR, perhaps it would be sanest if it also
>> made it absolute?
>>
>> Otherwise any script that does "cd" will lose track of GIT_DIR, right?
>
> Actually, wouldn't by far the most straightforward thing be if
> git-rev-parse --git-dir always returned an absolute path (even when
> being passed a relative path in GIT_DIR)?
>
> No need for postprocessing, no need to keep track of changed
> directories.
To illustrate the potential for trouble:
git-commit.sh
has the lines
647:
    cd_to_toplevel
    git rerere
    if test "$ret" = 0
    then
            if test -x "$GIT_DIR"/hooks/post-commit
            then
                    "$GIT_DIR"/hooks/post-commit
            fi

Obviously, this won't work if GIT_DIR has a relative path and the command has not been started from the top level already.

In a similar vein, git-checkout.sh has
263:
     GIT_DIR="$GIT_DIR" git symbolic-ref -m "checkout: moving from $old_branch_name to $branch" HEAD "refs/heads/$branch"
while we have previously cd_to_toplevel in line 154.

And so on. Rather than fixing all those scripts, it would seem safer to let git-rev-parse --git-dir (I don't understand the code in builtin-rev-parse, by the way: why does it look at "prefix"?), or at the very least git-sh-setup.sh return an absolute path.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Previous: David KastrupNext: Junio C Hamano
Message 6 of 15 in “git-filter-branch.sh: Fix broken setting of GIT_DIR”
  1. git-filter-branch.sh: Fix broken setting of GIT_DIRDavid Kastrup, Aug 10, 2007
  2. git-filter-branch.sh: Fix broken setting of GIT_DIRDavid Kastrup, Aug 10, 2007
  3. Junio C HamanoAug 11, 2007
  4. David KastrupAug 11, 2007
  5. David KastrupAug 11, 2007
  6. David KastrupAug 11, 2007
  7. Junio C HamanoAug 11, 2007
  8. David KastrupAug 11, 2007
  9. Add a test for git-commit being confused by relative GIT_DIRDavid Kastrup, Aug 11, 2007
  10. Junio C HamanoAug 12, 2007
  11. David KastrupAug 12, 2007
  12. Junio C HamanoAug 12, 2007
  13. David KastrupAug 12, 2007
  14. Steven GrimmAug 11, 2007
  15. Junio C HamanoAug 11, 2007

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.