More fixes for hardcoded git directory paths.

The git path is based on the git version, so it might change whenever git is
updated. Run git.bat instead, since that's updated with new git installs and
should always point to the right path.

The mingw logic is based on similar handling of python.bat in git-cl.

Review URL: https://codereview.chromium.org/166273024

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@252584 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/update_depot_tools b/update_depot_tools
index 4320fdb..1ab8154 100755
--- a/update_depot_tools
+++ b/update_depot_tools
@@ -11,10 +11,18 @@
   exit
 fi
 
-base_dir=$(dirname "$0")
-if [ -L "$base_dir" ]
-then
+# Test if this script is running under a MSys install.  If it is, we will
+# hardcode the paths to SVN and Git where possible.
+OUTPUT="$(uname | grep 'MINGW')"
+MINGW=$?
+
+if [ $MINGW = 0 ]; then
+  base_dir="${0%\\*}"
+else
+  base_dir=$(dirname "$0")
+  if [ -L "$base_dir" ]; then
     base_dir=`cd "$base_dir" && pwd -P`
+  fi
 fi
 
 # Don't try to use Cygwin tools.  Get real win32 tools using the batch script.
@@ -24,11 +32,6 @@
   cmd /c `cygpath -w "$base_dir/bootstrap/win/win_tools.bat"` force
 fi
 
-# Test if this script is running under a MSys install.  If it is, we will
-# hardcode the paths to SVN and Git where possible.
-OUTPUT="$(uname | grep 'MINGW')"
-MINGW=$?
-
 CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools.git"
 
 SVN="svn"
@@ -37,14 +40,14 @@
 fi
 
 GIT="git"
-if [ -d "$base_dir/git-1.8.0_bin" -a $MINGW = 0 ]; then
-  GIT="$base_dir/git-1.8.0_bin/bin/git.exe"
+if [ -e "$base_dir/git.bat" -a $MINGW = 0 ]; then
+  GIT="cmd.exe //c \"$base_dir\\git.bat\""
 fi
 
 # Test git and git --version.
 function test_git {
   local GITV
-  GITV="$("$GIT" --version)" || {
+  GITV="$(eval "$GIT" --version)" || {
     echo "git isn't installed, please install it"
     exit 1
   }
@@ -60,7 +63,7 @@
 # Test git svn and git svn --version.
 function test_git_svn {
   local GITV
-  GITV="$("$GIT" svn --version)" || {
+  GITV="$(eval "$GIT" svn --version)" || {
     echo "git-svn isn't installed, please install it"
     exit 1
   }
@@ -75,11 +78,11 @@
 }
 
 function is_git_clone_repo {
-  "$GIT" config remote.origin.fetch > /dev/null
+  eval "$GIT" config remote.origin.fetch > /dev/null
 }
 
 function update_git_repo {
-  remote_url=$("$GIT" config --get remote.origin.url)
+  remote_url=$(eval "$GIT" config --get remote.origin.url)
   if [ -n "$remote_url" -a "$remote_url" != "$CANONICAL_GIT_URL" ]; then
     echo "Your copy of depot_tools is configured to fetch from an obsolete URL:"
     echo
@@ -91,7 +94,7 @@
     if [[ $STATUS -ne 0 ]]; then
       echo "Timeout; not updating remote URL."
     elif [ -z "$REPLY" -o "$REPLY" = "Y" -o "$REPLY" = "y" ]; then
-      "$GIT" config remote.origin.url "$CANONICAL_GIT_URL"
+      eval "$GIT" config remote.origin.url "$CANONICAL_GIT_URL"
       echo "Remote URL updated."
     fi
   fi
@@ -111,7 +114,7 @@
 
   test_git_svn
   # work around a git-svn --quiet bug
-  OUTPUT=`"$GIT" svn rebase -q -q`
+  OUTPUT=`eval "$GIT" svn rebase -q -q`
   if [[ ! "$OUTPUT" == *Current.branch* ]]; then
     echo $OUTPUT 1>&2
   fi