git-submodule takes care of clearing GIT_DIR whenever it operates on a submodule index or configuration, but forgot to unset GIT_WORK_TREE before operating on the submodule worktree, which would lead to failures when GIT_WORK_TREE was set. This only happened in very unusual contexts such as operating on the main worktree from outside of it, but since "git-gui: set GIT_DIR and GIT_WORK_TREE after setup" (a9fa11fe5bd5978bb) such failures could also be provoked by invoking an external tool such as "git submodule update" from the Git GUI in a standard setup. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@xxxxxxxxx> --- git-submodule.sh | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) The bug (git submodules not working in Git GUI since my patch) was spotted by Heiko Voigt working on/with msysgit, and he kindly provided a recipe to replicate it: http://article.gmane.org/gmane.comp.version-control.msysgit/8755 I'm pretty confident fixing this on the submodules side is the more correct approach, since otherwise even a simple $ GIT_WORK_TREE=. git submodule update on the command-line can fail. I also believe this is material for git maint. diff --git a/git-submodule.sh b/git-submodule.sh index 5869c00..69afc84 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -223,6 +223,7 @@ cmd_add() module_clone "$path" "$realrepo" "$reference" || exit ( unset GIT_DIR + unset GIT_WORK_TREE cd "$path" && # ash fails to wordsplit ${branch:+-b "$branch"...} case "$branch" in @@ -279,6 +280,7 @@ cmd_foreach() ( prefix="$prefix$path/" unset GIT_DIR + unset GIT_WORK_TREE cd "$path" && eval "$@" && if test -n "$recursive" @@ -477,7 +479,7 @@ cmd_update() ;; esac - (unset GIT_DIR; cd "$path" && $command "$sha1") || + (unset GIT_DIR; unset GIT_WORK_TREE; cd "$path" && $command "$sha1") || die "Unable to $action '$sha1' in submodule path '$path'" say "Submodule path '$path': $msg '$sha1'" fi @@ -771,6 +773,7 @@ cmd_status() ( prefix="$displaypath/" unset GIT_DIR + unset GIT_WORK_TREE cd "$path" && cmd_status $orig_args ) || -- 1.7.0.199.g49ef3.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html