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, 10:32 UTC
Message-ID
<85r6mawedp.fsf@lola.goethe.zz>
In-Reply-To
<7vk5s2mllf.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <gitster@pobox.com> writes:
Show 19 quoted lines
> David Kastrup <dak@gnu.org> writes:
>
>> If filter-branch is entered with an unset GIT_DIR, things are rather
>> fragile.  The GIT_DIR variable setting then points to something like
>> $(pwd)/../.. which is neither guaranteed to be a git directory
>
> I think this comment refers to this part, ...
>
>> -case "$GIT_DIR" in
>> -/*)
>> -	;;
>> -*)
>> -	GIT_DIR="$(pwd)/../../$GIT_DIR"
>> -	;;
>> -esac
>
> ... however, at the beginning of the script, it dot-includes
> git-sh-setup, which sets (but not export) GIT_DIR for the rest
> of the script to use (see the last if..then..else).

Ah, ok. In that case my patch is overengineered. However, one could replace the whole case with

GITDIR=$(cd ../..;cd $GIT_DIR;pwd)
This would work with Windows absolute paths, too.
Show 5 quoted lines
> If you got an unset GIT_DIR when you reached that case statement
> you are removing here, I suspect that there is something else
> going on, but I do not see what it is...
>
> Puzzled...

The problem I saw was that "$(pwd)/../../$GIT_DIR" does no longer exist by the time the end of the script it reached, because what was "$(pwd)" has already been removed. So it is less onerous than I thought, but still a nuisance when the script ends.

Anyway, if $GIT_DIR is a relative path, things would go wrong in some lines earlier, 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?
-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Previous: Junio C HamanoNext: David Kastrup
Message 4 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.