[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git
Subject:    Re: GIT_DIR in aliases [Re: Spurious GIT_DIR set when in a worktree [was Re: Nested submodule status
From:       Philippe Blain <levraiphilippeblain () gmail ! com>
Date:       2020-02-29 1:42:52
Message-ID: 6D4FEE68-EF3C-491E-A7C1-3454B88977C3 () gmail ! com
[Download RAW message or body]

Hi Damien,

> Le 27 févr. 2020 à 10:50, Damien Robert <damien.olivier.robert@gmail.com> a \
> écrit : 
> So one might argue that the behaviour I observed is not a bug, but it is
> still surprising for me (as a user), and maybe this could be stated more
> clearly in the docs?

It sure is surprising, and not super intuitive.

> 
> Furthermore there is a question of consistency. GIT_DIR will not always be set
> before running a shell alias. Looking at `setup_discovered_git_dir`, it will
> be set if we are in a bare dir, or core.worktree / WORK_TREE is set, or if
> we have a gitfile.
> 
> The annoying side effect is that I cannot use as an alias a command that
> iterate over submodules and run git commands inside them, because in this
> alias GIT_DIR will be set sometimes, and sometimes not (a quick fix would be to
> unset GIT_DIR in my alias).

If that's what your are trying to do, ‘git submodule foreach' [1] seems like a \
better way to go.  For example I have an alias ‘st-sub' that calls git status in \
the superproject and then recursively in the submodules:

    $ cat ~/.gitconfig | grep st-sub
          st-sub = !git status "$@" && git sub foreach --recursive git status "$@"

[1] https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt-foreach--recursiveltcommandgt


> 
> So what would be the best way to handle this?
> Thanks,
> Damien

Cheers,
Philippe.=


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic