Greatly clean up depot_tools handling of git binaries, add bleeding edge support for 1.9.5

R=agable@chromium.org, friedman@google.com, maruel@chromium.org, pgervais@chromium.org, friedman@chromium.org, mmoss@chromium.org, szager@chromium.org, vadimsh@chromium.org
BUG=

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@293480 0039d316-1c4b-4281-b951-d872f2087c98

Conflicts:
	bootstrap/win/win_tools.bat

Change-Id: I6b161da22a30bd92080366008f0fce761b22a550
diff --git a/bootstrap/win/win_tools.bat b/bootstrap/win/win_tools.bat
index 8e6d3b9..128a271 100644
--- a/bootstrap/win/win_tools.bat
+++ b/bootstrap/win/win_tools.bat
@@ -52,71 +52,31 @@
 

 :PYTHON_FAIL

 echo ... Failed to checkout python automatically.

-echo Please visit http://python.org to download the latest python 2.7.x client before

-echo continuing.

-echo You can also get the "prebacked" version used at %WIN_TOOLS_ROOT_URL%/third_party/

+echo You should get the "prebaked" version at %WIN_TOOLS_ROOT_URL%/third_party/

 set ERRORLEVEL=1

 goto :END

 

-

 :GIT_CHECK

-goto :GIT_190_CHECK

-

-

-:GIT_190_CHECK

-set GIT_ERASE_TOP=5

-set GIT_VERSION=1.9.0.chromium.6

-

-if not "%DEPOT_TOOLS_GIT_BLEEDING%" == "1" goto :GIT_190_CHECK_REST

-set GIT_ERASE_TOP=5

-set GIT_VERSION=1.9.0.chromium.6

-

-:GIT_190_CHECK_REST

-if "%DEPOT_TOOLS_GIT_190%" == "0" goto :GIT_1852_CHECK

-:: Clean up a couple of known broken releases

-for /l %%i in (1,1,%GIT_ERASE_TOP%) do if exist "%WIN_TOOLS_ROOT_DIR%\git-1.9.0.chromium.%%i_bin" (

-  rmdir /s /q "%WIN_TOOLS_ROOT_DIR%\git-1.9.0.chromium.%%i_bin"

+if "%DEPOT_TOOLS_GIT_BLEEDING%" == "1" (

+  set GIT_VERSION=1.9.5.chromium.5

+) else (

+  set GIT_VERSION=1.9.0.chromium.6

 )

 for /f "tokens=2 delims=[]" %%i in ('ver') do set VERSTR=%%i

 for /f "tokens=2,3 delims=. " %%i in ("%VERSTR%") do (set VERMAJOR=%%i & set VERMINOR=%%j)

 if %VERMAJOR% lss 5 set GIT_VERSION=%GIT_VERSION%-xp

 if %VERMAJOR% equ 5 if %VERMINOR% lss 2 set GIT_VERSION=%GIT_VERSION%-xp

+

+:: Clean up any release which doesn't match the one we want.

+for /d %%i in (%WIN_TOOLS_ROOT_DIR%\git-*_bin) do (

+  if not %%i == %WIN_TOOLS_ROOT_DIR%\git-%GIT_VERSION%_bin (

+    rmdir /s /q "%%i"

+  )

+)

 set GIT_BIN_DIR=git-%GIT_VERSION%_bin

 set GIT_ZIP_FILE=%GIT_BIN_DIR%.zip

 set GIT_ZIP_URL=https://commondatastorage.googleapis.com/chrome-infra/%GIT_ZIP_FILE%

-goto :GIT_COMMON

 

-

-:GIT_1852_CHECK

-if "%DEPOT_TOOLS_GIT_1852%" == "0" goto :GIT_180_CHECK

-set GIT_VERSION=1.8.5.2.chromium.1

-set GIT_BIN_DIR=git-%GIT_VERSION%_bin

-set GIT_ZIP_FILE=%GIT_BIN_DIR%.zip

-set GIT_ZIP_URL=https://commondatastorage.googleapis.com/chrome-infra/%GIT_ZIP_FILE%

-:: This git uses APIs that target WINVER 0x0502, so refuse to install it on

-:: anything older.

-for /f "tokens=2 delims=[]" %%i in ('ver') do set VERSTR=%%i

-for /f "tokens=2,3 delims=. " %%i in ("%VERSTR%") do (set VERMAJOR=%%i & set VERMINOR=%%j)

-if %VERMAJOR% lss 5 goto :GIT_VER_UNSUPPORTED

-if %VERMAJOR% equ 5 if %VERMINOR% lss 2 goto :GIT_VER_UNSUPPORTED

-goto :GIT_COMMON

-

-

-:GIT_VER_UNSUPPORTED

-echo Git %GIT_VERSION% cannot be installed on:

-ver

-goto :GIT_180_CHECK

-

-

-:GIT_180_CHECK

-set GIT_VERSION=1.8.0

-set GIT_BIN_DIR=git-%GIT_VERSION%_bin

-set GIT_ZIP_FILE=%GIT_BIN_DIR%.zip

-set GIT_ZIP_URL=%WIN_TOOLS_ROOT_URL%/third_party/%GIT_ZIP_FILE%

-goto :GIT_COMMON

-

-

-:GIT_COMMON

 if "%WIN_TOOLS_FORCE%" == "1" goto :GIT_INSTALL

 if exist "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" (

   call "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" --version 2>nul 1>nul

@@ -144,9 +104,6 @@
 if errorlevel 1 goto :GIT_FAIL

 if not exist "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\." goto :GIT_FAIL

 del "%ZIP_DIR%\git.zip"

-:: Ensure autocrlf and filemode are set correctly.

-call "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" config --system core.autocrlf false

-call "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" config --system core.filemode false

 goto :GIT_COPY_BATCH_FILES

 

 

@@ -156,14 +113,16 @@
 call copy /y "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\gitk.bat" "%WIN_TOOLS_ROOT_DIR%\gitk.bat" 1>nul

 call copy /y "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\ssh.bat" "%WIN_TOOLS_ROOT_DIR%\ssh.bat" 1>nul

 call copy /y "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\ssh-keygen.bat" "%WIN_TOOLS_ROOT_DIR%\ssh-keygen.bat" 1>nul

+

+:: Ensure autocrlf and filemode are set correctly.

+call "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" config --system core.autocrlf false

+call "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\cmd\git.cmd" config --system core.filemode false

 goto :SVN_CHECK

 

 

 :GIT_FAIL

 echo ... Failed to checkout git automatically.

-echo Please visit http://code.google.com/p/msysgit to download the latest git

-echo client before continuing.

-echo You can also get the "prebaked" version used at %GIT_ZIP_URL%

+echo You should get the "prebaked" version used at %GIT_ZIP_URL%

 set ERRORLEVEL=1

 goto :END

 

@@ -200,9 +159,7 @@
 

 :SVN_FAIL

 echo ... Failed to checkout svn automatically.

-echo Please visit http://subversion.tigris.org to download the latest subversion client

-echo before continuing.

-echo You can also get the "prebacked" version used at %WIN_TOOLS_ROOT_URL%/third_party/

+echo You should get the "prebaked" version at %WIN_TOOLS_ROOT_URL%/third_party/

 set ERRORLEVEL=1

 goto :END