Execute a temp copy of update_depot_tools.bat
Windows will sometimes freak out if a file is rewritten while
it's being executed. That can happen when update_depot_tools.bat
runs.
[email protected],[email protected]
BUG=
Review URL: https://codereview.chromium.org/12755033
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@189429 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/update_depot_tools.bat b/update_depot_tools.bat
index f880d9b..20ac0d7 100644
--- a/update_depot_tools.bat
+++ b/update_depot_tools.bat
@@ -7,13 +7,25 @@
setlocal
+:: Windows freaks out if a file is overwritten while it's being executed. Copy
+:: this script off to a temporary location and reinvoke from there before
+:: running any svn or git commands.
+IF %~nx0==update_depot_tools.bat (
+ COPY /Y %~dp0update_depot_tools.bat %TEMP%\update_depot_tools_tmp.bat >nul
+ if errorlevel 1 goto :EOF
+ %TEMP%\update_depot_tools_tmp.bat %~dp0 %*
+)
+
+set DEPOT_TOOLS_DIR=%1
+SHIFT
+
set GIT_URL=https://chromium.googlesource.com/chromium/tools/depot_tools.git
:: Will download svn and python.
:: If you don't want to install the depot_tools version of these tools, remove
:: the 'force' option on the next command. The tools will be installed only if
:: not already in the PATH environment variable.
-call "%~dp0bootstrap\win\win_tools.bat" force
+call "%DEPOT_TOOLS_DIR%bootstrap\win\win_tools.bat" force
if errorlevel 1 goto :EOF
:: Now clear errorlevel so it can be set by other programs later.
set errorlevel=
@@ -22,19 +34,19 @@
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF
:: We need either .\.svn\. or .\.git\. to be able to sync.
-IF EXIST "%~dp0.svn\." GOTO :SVN_UPDATE
-IF EXIST "%~dp0.git\." GOTO :GIT_UPDATE
+IF EXIST "%DEPOT_TOOLS_DIR%.svn\." GOTO :SVN_UPDATE
+IF EXIST "%DEPOT_TOOLS_DIR%.git\." GOTO :GIT_UPDATE
echo Error updating depot_tools, no revision tool found.
goto :EOF
:SVN_UPDATE
-call svn up -q "%~dp0."
+call svn up -q "%DEPOT_TOOLS_DIR%."
goto :EOF
:GIT_UPDATE
-cd /d "%~dp0."
+cd /d "%DEPOT_TOOLS_DIR%."
call git config remote.origin.fetch > NUL
if errorlevel 1 goto :GIT_SVN_UPDATE
for /F %%x in ('git config --get remote.origin.url') DO (
@@ -51,6 +63,6 @@
goto :EOF
:GIT_SVN_UPDATE
-cd /d "%~dp0."
+cd /d "%DEPOT_TOOLS_DIR%."
call git svn rebase -q -q
goto :EOF