You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
depot_tools/update_depot_tools.bat

77 lines
2.3 KiB
Batchfile

@echo off
:: Copyright (c) 2012 The Chromium Authors. All rights reserved.
:: Use of this source code is governed by a BSD-style license that can be
:: found in the LICENSE file.
:: This batch file will try to sync the root directory.
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 "%DEPOT_TOOLS_DIR%bootstrap\win\win_tools.bat" force
if errorlevel 1 goto :EOF
Handle updating depot_tools repos that are git cloned. Until recently, no proper Git clone of depot_tools existed. All Git clones were set up locally via git svn clone. The way repos of that type are updated is via 'git svn rebase'. Now, a supported Git clone of depot_tools exists. The update process for repos of this type is via 'git fetch' and 'git rebase'. Modify the update_depot_tools* scripts so they can update depot_tools for git cloned or git svn cloned methods. This also means that git svn is no longer required, so move that test after we check for git cloned repos. R=maruel@chromium.org TEST=Linux + git clone: on Linux, git clone https://git.chromium.org/chromium/tools/depot_tools.git. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Linux + git svn clone: on Linux, git svn clone svn://svn.chromium.org/chrome/trunk/tools/depot_tools. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git clone: on Windows command prompt, run Linux+git clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git svn clone: on Windows command prompt, run Linux+git svn clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git clone: on Windows command prompt, run Linux+git clone test. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git svn clone: on Windows command prompt, run Linux+git svn clone test. Verify depot_tools is updated to latest available revision + this change. Review URL: https://chromiumcodereview.appspot.com/10263004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@134732 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
:: Now clear errorlevel so it can be set by other programs later.
set errorlevel=
IF "%DEPOT_TOOLS_WIN_TOOLCHAIN%" == "0" GOTO :NOTOOLCHAIN
call python %~dp0win_toolchain\get_toolchain_if_necessary.py
if errorlevel 1 goto :EOF
set errorlevel=
:NOTOOLCHAIN
:: Shall skip automatic update?
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF
:: We need either .\.svn\. or .\.git\. to be able to sync.
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 "%DEPOT_TOOLS_DIR%."
goto :EOF
:GIT_UPDATE
cd /d "%DEPOT_TOOLS_DIR%."
Handle updating depot_tools repos that are git cloned. Until recently, no proper Git clone of depot_tools existed. All Git clones were set up locally via git svn clone. The way repos of that type are updated is via 'git svn rebase'. Now, a supported Git clone of depot_tools exists. The update process for repos of this type is via 'git fetch' and 'git rebase'. Modify the update_depot_tools* scripts so they can update depot_tools for git cloned or git svn cloned methods. This also means that git svn is no longer required, so move that test after we check for git cloned repos. R=maruel@chromium.org TEST=Linux + git clone: on Linux, git clone https://git.chromium.org/chromium/tools/depot_tools.git. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Linux + git svn clone: on Linux, git svn clone svn://svn.chromium.org/chrome/trunk/tools/depot_tools. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git clone: on Windows command prompt, run Linux+git clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git svn clone: on Windows command prompt, run Linux+git svn clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git clone: on Windows command prompt, run Linux+git clone test. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git svn clone: on Windows command prompt, run Linux+git svn clone test. Verify depot_tools is updated to latest available revision + this change. Review URL: https://chromiumcodereview.appspot.com/10263004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@134732 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
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 (
IF not "%%x" == "%GIT_URL%" (
echo Your depot_tools checkout is configured to fetch from an obsolete URL
choice /N /T 60 /D N /M "Would you like to update it? [y/N]: "
IF not errorlevel 2 (
call git config remote.origin.url "%GIT_URL%"
)
)
)
Handle updating depot_tools repos that are git cloned. Until recently, no proper Git clone of depot_tools existed. All Git clones were set up locally via git svn clone. The way repos of that type are updated is via 'git svn rebase'. Now, a supported Git clone of depot_tools exists. The update process for repos of this type is via 'git fetch' and 'git rebase'. Modify the update_depot_tools* scripts so they can update depot_tools for git cloned or git svn cloned methods. This also means that git svn is no longer required, so move that test after we check for git cloned repos. R=maruel@chromium.org TEST=Linux + git clone: on Linux, git clone https://git.chromium.org/chromium/tools/depot_tools.git. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Linux + git svn clone: on Linux, git svn clone svn://svn.chromium.org/chrome/trunk/tools/depot_tools. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git clone: on Windows command prompt, run Linux+git clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git svn clone: on Windows command prompt, run Linux+git svn clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git clone: on Windows command prompt, run Linux+git clone test. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git svn clone: on Windows command prompt, run Linux+git svn clone test. Verify depot_tools is updated to latest available revision + this change. Review URL: https://chromiumcodereview.appspot.com/10263004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@134732 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
call git fetch -q origin > NUL
call git rebase -q origin/master > NUL
if errorlevel 1 echo Failed to update depot_tools.
Handle updating depot_tools repos that are git cloned. Until recently, no proper Git clone of depot_tools existed. All Git clones were set up locally via git svn clone. The way repos of that type are updated is via 'git svn rebase'. Now, a supported Git clone of depot_tools exists. The update process for repos of this type is via 'git fetch' and 'git rebase'. Modify the update_depot_tools* scripts so they can update depot_tools for git cloned or git svn cloned methods. This also means that git svn is no longer required, so move that test after we check for git cloned repos. R=maruel@chromium.org TEST=Linux + git clone: on Linux, git clone https://git.chromium.org/chromium/tools/depot_tools.git. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Linux + git svn clone: on Linux, git svn clone svn://svn.chromium.org/chrome/trunk/tools/depot_tools. Apply and commit this patch locally. Note commit hash of HEAD. Run 'git reset --hard "HEAD^^^"'. Run 'git cherry-pick HASH_OF_UPDATE_CHANGE'. Run './update_depot_tools'. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git clone: on Windows command prompt, run Linux+git clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows command prompt + git svn clone: on Windows command prompt, run Linux+git svn clone test, except use update_depot_tools.bat. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git clone: on Windows command prompt, run Linux+git clone test. Verify depot_tools is updated to latest available revision + this change. TEST=Windows cygwin + git svn clone: on Windows command prompt, run Linux+git svn clone test. Verify depot_tools is updated to latest available revision + this change. Review URL: https://chromiumcodereview.appspot.com/10263004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@134732 0039d316-1c4b-4281-b951-d872f2087c98
13 years ago
goto :EOF
:GIT_SVN_UPDATE
cd /d "%DEPOT_TOOLS_DIR%."
call git svn rebase -q -q
goto :EOF