Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Unified Diff: bootstrap/win/win_tools.bat

Issue 1827403003: Add logic for git 2.7.4 upgrade. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: preload index too Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bootstrap/win/git.template.bat ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bootstrap/win/win_tools.bat
diff --git a/bootstrap/win/win_tools.bat b/bootstrap/win/win_tools.bat
index 02a1b310bcf7c7c733ff3b5e98cbd3266709e12b..55f85cef9541bb312614fd80cfc1b18a5e3ae255 100644
--- a/bootstrap/win/win_tools.bat
+++ b/bootstrap/win/win_tools.bat
@@ -57,72 +57,114 @@ set ERRORLEVEL=1
goto :END
:GIT_CHECK
-if "%DEPOT_TOOLS_GIT_BLEEDING%" == "1" (
- set GIT_VERSION=1.9.5.chromium.6
-) else (
- set GIT_VERSION=1.9.5.chromium.6
-)
+
+:: See if we're on XP
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
+if %VERMAJOR% equ 5 if %VERMINOR% lss 2 set XP_SUFFIX=-xp
+
+:: Check to see if we're on a 32 or 64 bit system
+reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS_BITS=32 || set OS_BITS=64
+
+if not exist "%WIN_TOOLS_ROOT_DIR%\.git_bleeding_edge" goto :GIT_OLD_FLOW
iannucci 2016/03/29 00:11:12 can't use code blocks here, because we can't rely
+set GIT_PORTABLE_FLOW=1
+set GIT_VERSION=2.7.4-%OS_BITS%
+set GIT_FETCH_URL=https://commondatastorage.googleapis.com/chrome-infra/PortableGit-%GIT_VERSION%-bit.7z.exe
+set GIT_DOWNLOAD_PATH=%ZIP_DIR%\git.7z.exe
+set GIT_BIN_DIR=git-%GIT_VERSION%_bin
+set GIT_INST_DIR=%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%
+set GIT_EXE_PATH=%GIT_INST_DIR%\bin\git.exe
+goto :GIT_CLEANUP
+
+:GIT_OLD_FLOW
+set GIT_VERSION=1.9.5.chromium.6%XP_SUFFIX%
+set GIT_BIN_DIR=git-%GIT_VERSION%_bin
+set GIT_FETCH_URL=https://commondatastorage.googleapis.com/chrome-infra/%GIT_BIN_DIR%.zip
+set GIT_DOWNLOAD_PATH=%ZIP_DIR%\git.zip
+set GIT_INST_DIR=%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%
+set GIT_EXE_PATH=%GIT_INST_DIR%\cmd\git.cmd
+:GIT_CLEANUP
:: 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" (
+ echo Cleaning old git installation %%i
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%
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
+
+if exist "%GIT_EXE_PATH%" (
+ call "%GIT_EXE_PATH%" --version 2>nul 1>nul
if errorlevel 1 goto :GIT_INSTALL
rem Several git versions can live side-by-side; check the top-level
rem batch script to make sure it points to the desired version.
find "%GIT_BIN_DIR%" "%WIN_TOOLS_ROOT_DIR%\git.bat" 2>nul 1>nul
- if errorlevel 1 goto :GIT_COPY_BATCH_FILES
+ if errorlevel 1 goto :GIT_MAKE_BATCH_FILES
goto :SVN_CHECK
)
goto :GIT_INSTALL
-
:GIT_INSTALL
echo Installing git %GIT_VERSION% (avg 1-2 min download) ...
+echo Detected: %OS_BITS% bits
+if defined XP_SUFFIX echo ... Windows XP
+if defined GIT_PORTABLE_FLOW echo ... Portable installation flow
+
:: git is not accessible; check it out and create 'proxy' files.
-if exist "%ZIP_DIR%\git.zip" del "%ZIP_DIR%\git.zip"
-echo Fetching from %GIT_ZIP_URL%
-cscript //nologo //e:jscript "%~dp0get_file.js" %GIT_ZIP_URL% "%ZIP_DIR%\git.zip"
+if exist "%GIT_DOWNLOAD_PATH%" del "%GIT_DOWNLOAD_PATH%"
+echo Fetching from %GIT_FETCH_URL%
+cscript //nologo //e:jscript "%~dp0get_file.js" %GIT_FETCH_URL% "%GIT_DOWNLOAD_PATH%"
if errorlevel 1 goto :GIT_FAIL
-:: Cleanup svn directory if it was existing.
-if exist "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\." rd /q /s "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%"
-:: Will create %GIT_BIN_DIR%\...
-cscript //nologo //e:jscript "%~dp0unzip.js" "%ZIP_DIR%\git.zip" "%WIN_TOOLS_ROOT_DIR%"
-if errorlevel 1 goto :GIT_FAIL
-if not exist "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\." goto :GIT_FAIL
-del "%ZIP_DIR%\git.zip"
-goto :GIT_COPY_BATCH_FILES
+:: Cleanup git directory if it already exists.
+if exist "%GIT_INST_DIR%\." rd /q /s "%GIT_INST_DIR%"
+
+if defined GIT_PORTABLE_FLOW (
+ rem run PortableGit self-extractor
+ rem -y : Be Quiet ("yes")
+ rem -sd1 : Self delete SFX archive
+ rem -InstallPath : Where to put the files
+ rem -Directory : Run the post-extract program with this current-working-directory
+ call "%GIT_DOWNLOAD_PATH%" -y -sd1 -InstallPath="%GIT_INST_DIR%" -Directory="%GIT_INST_DIR%"
+) else (
+ rem Will create %GIT_INST_DIR%\...
+ cscript //nologo //e:jscript "%~dp0unzip.js" "%GIT_DOWNLOAD_PATH%" "%WIN_TOOLS_ROOT_DIR%"
+)
+if errorlevel 1 goto :GIT_FAIL
+del "%GIT_DOWNLOAD_PATH%"
+if not exist "%GIT_INST_DIR%\." goto :GIT_FAIL
-:GIT_COPY_BATCH_FILES
+:GIT_MAKE_BATCH_FILES
:: Create the batch files.
-call copy /y "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\git.bat" "%WIN_TOOLS_ROOT_DIR%\git.bat" 1>nul
-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
+set GIT_TEMPL=%~dp0git.template.bat
+set SED=%GIT_INST_DIR%\usr\bin\sed.exe
+if defined GIT_PORTABLE_FLOW (
+ rem turns out we just installed sed :)
+ call "%SED%" -e "s/GIT_BIN_DIR/%GIT_BIN_DIR%/" -e "s/GIT_PROGRAM/cmd\\\\git.exe/" < %GIT_TEMPL% > "%WIN_TOOLS_ROOT_DIR%\git.bat"
+ call "%SED%" -e "s/GIT_BIN_DIR/%GIT_BIN_DIR%/" -e "s/GIT_PROGRAM/cmd\\\\gitk.exe/" < %GIT_TEMPL% > "%WIN_TOOLS_ROOT_DIR%\gitk.bat"
+ call "%SED%" -e "s/GIT_BIN_DIR/%GIT_BIN_DIR%/" -e "s/GIT_PROGRAM/usr\\\\bin\\\\ssh.exe/" < %GIT_TEMPL% > "%WIN_TOOLS_ROOT_DIR%\ssh.bat"
+ call "%SED%" -e "s/GIT_BIN_DIR/%GIT_BIN_DIR%/" -e "s/GIT_PROGRAM/usr\\\\bin\\\\ssh-keygen.exe/" < %GIT_TEMPL% > "%WIN_TOOLS_ROOT_DIR%\ssh-keygen.bat"
+) else (
+ call copy /y "%WIN_TOOLS_ROOT_DIR%\%GIT_BIN_DIR%\git.bat" "%WIN_TOOLS_ROOT_DIR%\git.bat" 1>nul
+ 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.bat" config --system core.autocrlf false
call "%WIN_TOOLS_ROOT_DIR%\git.bat" config --system core.filemode false
+call "%WIN_TOOLS_ROOT_DIR%\git.bat" config --system core.preloadindex true
+call "%WIN_TOOLS_ROOT_DIR%\git.bat" config --system core.fscache true
goto :SVN_CHECK
:GIT_FAIL
echo ... Failed to checkout git automatically.
-echo You should get the "prebaked" version used at %GIT_ZIP_URL%
+echo You should get the "prebaked" version used at %GIT_FETCH_URL%
set ERRORLEVEL=1
goto :END
« no previous file with comments | « bootstrap/win/git.template.bat ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698