Commit e6c00f3f authored by maruel@chromium.org's avatar maruel@chromium.org

Fix git depot_tools update flow.

In Windows (already worked correctly in posix): gclient wouldn't correctly update depot_tools when called.

Refactored away the bootstrap depot_tools update flow which only still existed in Windows.

Patch contributed by gab@chromium.org

R=maruel@chromium.org
BUG=
TEST=Running `gclient sync` from src/ and see depot_tools being correctly updated under a git depot_tools checkout.

Review URL: https://chromiumcodereview.appspot.com/9751009

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@132191 0039d316-1c4b-4281-b951-d872f2087c98
parent f9b1fdb9
...@@ -33,7 +33,7 @@ This package contains: ...@@ -33,7 +33,7 @@ This package contains:
Note: svn and python will be installed automatically if not accessible (on Note: svn and python will be installed automatically if not accessible (on
Windows only). Windows only).
To update this distribution manually, run bootstrap\gclient.bat on Windows, To update this distribution manually, run .\update_depot_tools.bat on Windows,
or bootstrap/gclient.sh on Linux or Mac. or ./update_depot_tools on Linux or Mac.
To disable automatic updating, set the environment variable DEPOT_TOOLS_UPDATE=0 To disable automatic updating, set the environment variable DEPOT_TOOLS_UPDATE=0
@echo off @echo off
:: Copyright (c) 2009 The Chromium Authors. All rights reserved. :: Copyright (c) 2012 The Chromium Authors. All rights reserved.
:: Use of this source code is governed by a BSD-style license that can be :: Use of this source code is governed by a BSD-style license that can be
:: found in the LICENSE file. :: found in the LICENSE file.
:: Synchronize the root directory before deferring control back up to it. :: IMPORTANT NOTE:
call "%~dp0\update_depot_tools.bat" :: The bootstrap flow has been removed. This file's only purpose is to make the
:: transition smooth as the previous update script called bootstrap\gclient.bat
:: The current flow took place on March 21, 2012. This file should be removed
:: when it is believed everyone has updated since then.
:: Defer control. :: At this point we know %DEPOT_TOOLS_UPDATE% != 0 as in the previous script
python "%~dp0\..\gclient.py" %* :: bootstrap\gclient.bat was only called if this was the case.
:: Update the root directory. The previous version only supported svn so there
:: is no need looking for git here (i.e. if someone has git they can't get to
:: this point where the bootstrap dir is gone during the update anyways...)
IF NOT EXIST "%~dp0..\.svn\." GOTO :EOF
call svn up -q "%~dp0.."
:: Call the updated gclient.bat in the root directory to wrap the update.
call "%~dp0..\gclient.bat"
#!/bin/sh
# Copyright (c) 2009 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 script will try to sync the root and bootstrap directories.
base_dir=$(dirname "$0")
# Skip if $DEPOT_TOOLS_UPDATE==0 or ../.svn/. doesn't exist.
if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/../.svn" ]
then
# Update the root directory.
svn -q up "$base_dir/.."
fi
exec python "$base_dir/../gclient.py" "$@"
@echo off
:: Copyright (c) 2010 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.
:: Shall skip automatic update?
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF
:: We can't sync if ..\.svn\. doesn't exist.
IF NOT EXIST "%~dp0..\.svn\." GOTO :EOF
:: Sync the .. directory to update the bootstrap at the same time.
call svn -q up "%~dp0.."
@echo off @echo off
:: Copyright (c) 2009 The Chromium Authors. All rights reserved. :: Copyright (c) 2012 The Chromium Authors. All rights reserved.
:: Use of this source code is governed by a BSD-style license that can be :: Use of this source code is governed by a BSD-style license that can be
:: found in the LICENSE file. :: found in the LICENSE file.
:: This file is a stub to sync .\bootstrap first and defer control to :: Synchronize the root directory before deferring control back to gclient.py.
:: .\bootstrap\gclient.bat, which will sync back '.'. This is unless auto call "%~dp0\update_depot_tools.bat"
:: update is disabled, were gclient.py is directly called.
setlocal
:: This is required with cygwin only. :: Defer control.
PATH=%~dp0;%PATH%
:: 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 won't be installed only if
:: not already in the PATH environment variable.
call "%~dp0bootstrap\win\win_tools.bat" force
if errorlevel 1 goto :EOF
:: Shall skip automatic update?
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :SKIP_UPDATE
:: We can't sync if .\.svn\. doesn't exist.
IF NOT EXIST "%~dp0.svn\." GOTO :SKIP_UPDATE
:: Sync the bootstrap directory.
call svn up -q "%~dp0bootstrap"
:: still continue even in case of error.
goto :UPDATE
:SKIP_UPDATE
:: Don't bother to try to update any thing.
python "%~dp0\gclient.py" %* python "%~dp0\gclient.py" %*
goto :EOF
:UPDATE
:: Transfer control to ease the update process. The following lines won't be
:: executed so don't add any! Specifically, don't use 'call' in the following
:: line.
"%~dp0bootstrap\gclient.bat" %*
goto :EOF
...@@ -85,8 +85,7 @@ fi ...@@ -85,8 +85,7 @@ fi
# We're on POSIX. We can now safely look for svn checkout. # We're on POSIX. We can now safely look for svn checkout.
if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.svn" ] if [ "X$DEPOT_TOOLS_UPDATE" != "X0" -a -e "$base_dir/.svn" ]
then then
# Update the bootstrap directory to stay up-to-date with the latest # Update the root directory to stay up-to-date with the latest depot_tools.
# depot_tools.
BEFORE_REVISION=$(get_svn_revision) BEFORE_REVISION=$(get_svn_revision)
"$SVN" -q up "$base_dir" "$SVN" -q up "$base_dir"
AFTER_REVISION=$(get_svn_revision) AFTER_REVISION=$(get_svn_revision)
......
@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
:: 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
if errorlevel 1 goto :EOF
:: Shall skip automatic update?
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
echo Error updating depot_tools, no revision tool found.
goto :EOF
:SVN_UPDATE
call svn up -q "%~dp0."
goto :EOF
:GIT_UPDATE
cd /d "%~dp0."
call git svn rebase -q -q
goto :EOF
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment