From: Philippe Blain Date: Sat, 29 Feb 2020 01:42:52 GMT Subject: Re: GIT_DIR in aliases [Re: Spurious GIT_DIR set when in a worktree [was Re: Nested submodule status bug] Message-ID: <6D4FEE68-EF3C-491E-A7C1-3454B88977C3@gmail.com> In-Reply-To: <20200227155057.7idpa447ixo6sf6j@feanor> Hi Damien, > Le 27 févr. 2020 à 10:50, Damien Robert 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.