Junio C Hamano wrote: > Recently we tweaked this scriptlet to let mingw port redefine "pwd" to > always return Windows-style path, but the code to do so came after the > first use of "pwd" to set up $GIT_DIR shell variable. > > Move the block to define these workaround wrappers, so that everything > everything that executes when the scriptlet is dot-sourced uses the > replacements. > > Noticed-by: Ramsay Jones > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > git-sh-setup.sh | 41 +++++++++++++++++++++-------------------- > 1 file changed, 21 insertions(+), 20 deletions(-) > > diff --git a/git-sh-setup.sh b/git-sh-setup.sh > index 7b3ae75..770a86e 100644 > --- a/git-sh-setup.sh > +++ b/git-sh-setup.sh > @@ -218,27 +218,8 @@ clear_local_git_env() { > unset $(git rev-parse --local-env-vars) > } > > -# Make sure we are in a valid repository of a vintage we understand, > -# if we require to be in a git repository. > -if test -z "$NONGIT_OK" > -then > - GIT_DIR=$(git rev-parse --git-dir) || exit > - if [ -z "$SUBDIRECTORY_OK" ] > - then > - test -z "$(git rev-parse --show-cdup)" || { > - exit=$? > - echo >&2 "You need to run this command from the toplevel of the working tree." > - exit $exit > - } > - fi > - test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || { > - echo >&2 "Unable to determine absolute path of git directory" > - exit 1 > - } > - : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} > -fi > > -# Fix some commands on Windows > +# Platform specific tweaks to work around some commands > case $(uname -s) in > *MINGW*) > # Windows has its own (incompatible) sort and find > @@ -269,3 +250,23 @@ case $(uname -s) in > return 1 > } > esac > + > +# Make sure we are in a valid repository of a vintage we understand, > +# if we require to be in a git repository. > +if test -z "$NONGIT_OK" > +then > + GIT_DIR=$(git rev-parse --git-dir) || exit > + if [ -z "$SUBDIRECTORY_OK" ] > + then > + test -z "$(git rev-parse --show-cdup)" || { > + exit=$? > + echo >&2 "You need to run this command from the toplevel of the working tree." > + exit $exit > + } > + fi > + test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || { > + echo >&2 "Unable to determine absolute path of git directory" > + exit 1 > + } > + : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} > +fi Thanks for doing this. (I would have got around to it, honest! However, it does solve a minor problem for me, since I kinda promised not to post anymore MinGW specific patches. :-D ). I have not done a full test on this patch; I have only run the following tests on MinGW and cygwin: $ git grep -l -e 'git *submodule' -- t t/t5526-fetch-submodules.sh t/t6008-rev-list-submodule.sh t/t7003-filter-branch.sh t/t7400-submodule-basic.sh t/t7401-submodule-summary.sh t/t7403-submodule-sync.sh t/t7405-submodule-merge.sh t/t7406-submodule-update.sh t/t7407-submodule-foreach.sh t/t7408-submodule-reference.sh t/t7506-status-submodule.sh t/t7610-mergetool.sh t/t9300-fast-import.sh t/t9350-fast-export.sh (On MinGW i have to use a "GIT_TEST_CMP='diff -ub'" prefix, otherwise there are some failures caused by "lf/crlf line ending" problems). All of these tests pass. I don't anticipate any problems (especially on cygwin, since it is essentially a noop there), but I have not done a complete test. I probably won't get to it soon, so I'm hoping somebody can beat me to it! ATB, Ramsay Jones -- 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