Index: recipe_modules/bot_update/resources/bot_update.py |
diff --git a/recipe_modules/bot_update/resources/bot_update.py b/recipe_modules/bot_update/resources/bot_update.py |
index ca91dbdf98d15876634feeb65406ba9007608523..3211369667372e4ec45a6b52343120b69985a912 100755 |
--- a/recipe_modules/bot_update/resources/bot_update.py |
+++ b/recipe_modules/bot_update/resources/bot_update.py |
@@ -322,7 +322,7 @@ def gclient_configure(solutions, target_os, target_os_only, git_cache_dir): |
solutions, target_os, target_os_only, git_cache_dir)) |
-def gclient_sync(with_branch_heads, shallow): |
+def gclient_sync(with_branch_heads, shallow, break_repo_locks): |
# We just need to allocate a filename. |
fd, gclient_output_file = tempfile.mkstemp(suffix='.json') |
os.close(fd) |
@@ -334,6 +334,8 @@ def gclient_sync(with_branch_heads, shallow): |
cmd += ['--with_branch_heads'] |
if shallow: |
cmd += ['--shallow'] |
+ if break_repo_locks: |
+ cmd += ['--break_repo_locks'] |
try: |
call(*cmd, tries=1) |
@@ -753,10 +755,14 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only, |
# Ensure our build/ directory is set up with the correct .gclient file. |
gclient_configure(solutions, target_os, target_os_only, git_cache_dir) |
+ # Windows sometimes has trouble deleting files. This can make git commands |
+ # that rely on locks fail. |
+ break_repo_locks = True if sys.platform.startswith('win') else False |
# Let gclient do the DEPS syncing. |
# The branch-head refspec is a special case because its possible Chrome |
# src, which contains the branch-head refspecs, is DEPSed in. |
- gclient_output = gclient_sync(BRANCH_HEADS_REFSPEC in refs, shallow) |
+ gclient_output = gclient_sync(BRANCH_HEADS_REFSPEC in refs, shallow, |
+ break_repo_locks) |
# Now that gclient_sync has finished, we should revert any .DEPS.git so that |
# presubmit doesn't complain about it being modified. |