Merge git://github.com/vnwildman/git
[gitweb.git] / git-sh-setup.sh
index 69472e4125ae6b9962fc47c73bcb3f9ecc3a1772..ee0e0bc045bb7d92045a3afb0a042748834e6163 100644 (file)
@@ -222,27 +222,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
@@ -252,6 +233,10 @@ case $(uname -s) in
        find () {
                /usr/bin/find "$@"
        }
+       # git sees Windows-style pwd
+       pwd () {
+               builtin pwd -W
+       }
        is_absolute_path () {
                case "$1" in
                [/\\]* | [A-Za-z]:*)
@@ -269,3 +254,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