mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 18:51:29 +00:00
Reset the fetch config in the bots before each run.
If a ref is incorrectly set, it will affect later runs. For example, [1] caused a bad refspec to be added to the fetch config, (+refs/branch-heads/refs/branch-heads/6.7:refs/branch-heads/refs/branch-heads/6.7) which affects all subsequent runs in the same bot: [2], [3]. This makes bot_update clear the fetch config before each run, so it is more robust against these kind of failures. [1] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8942033142534034848%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout [2] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8941307871443322944%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout [3] https://logs.chromium.org/v/?s=v8%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8941333453153279680%2F%2B%2Fsteps%2Fbot_update%2F0%2Fstdout Bug: 862547 Change-Id: I2f849c604656e81ebd7377465d287226b8bdea1a Reviewed-on: https://chromium-review.googlesource.com/1135645 Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org> Reviewed-by: Aaron Gable <agable@chromium.org> Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
This commit is contained in:
19
git_cache.py
19
git_cache.py
@@ -311,10 +311,13 @@ class Mirror(object):
|
||||
self.print('running "git %s" in "%s"' % (' '.join(cmd), cwd))
|
||||
gclient_utils.CheckCallAndFilter([self.git_exe] + cmd, **kwargs)
|
||||
|
||||
def config(self, cwd=None):
|
||||
def config(self, cwd=None, reset_fetch_config=False):
|
||||
if cwd is None:
|
||||
cwd = self.mirror_path
|
||||
|
||||
if reset_fetch_config:
|
||||
self.RunGit(['config', '--unset-all', 'remote.origin.fetch'], cwd=cwd)
|
||||
|
||||
# Don't run git-gc in a daemon. Bad things can happen if it gets killed.
|
||||
try:
|
||||
self.RunGit(['config', 'gc.autodetach', '0'], cwd=cwd)
|
||||
@@ -508,8 +511,8 @@ class Mirror(object):
|
||||
'Shallow fetch requested, but repo cache already exists.')
|
||||
return tempdir
|
||||
|
||||
def _fetch(self, rundir, verbose, depth):
|
||||
self.config(rundir)
|
||||
def _fetch(self, rundir, verbose, depth, reset_fetch_config):
|
||||
self.config(rundir, reset_fetch_config)
|
||||
v = []
|
||||
d = []
|
||||
if verbose:
|
||||
@@ -531,7 +534,8 @@ class Mirror(object):
|
||||
logging.warn('Fetch of %s failed' % spec)
|
||||
|
||||
def populate(self, depth=None, shallow=False, bootstrap=False,
|
||||
verbose=False, ignore_lock=False, lock_timeout=0):
|
||||
verbose=False, ignore_lock=False, lock_timeout=0,
|
||||
reset_fetch_config=False):
|
||||
assert self.GetCachePath()
|
||||
if shallow and not depth:
|
||||
depth = 10000
|
||||
@@ -545,14 +549,14 @@ class Mirror(object):
|
||||
try:
|
||||
tempdir = self._ensure_bootstrapped(depth, bootstrap)
|
||||
rundir = tempdir or self.mirror_path
|
||||
self._fetch(rundir, verbose, depth)
|
||||
self._fetch(rundir, verbose, depth, reset_fetch_config)
|
||||
except ClobberNeeded:
|
||||
# This is a major failure, we need to clean and force a bootstrap.
|
||||
gclient_utils.rmtree(rundir)
|
||||
self.print(GIT_CACHE_CORRUPT_MESSAGE)
|
||||
tempdir = self._ensure_bootstrapped(depth, bootstrap, force=True)
|
||||
assert tempdir
|
||||
self._fetch(tempdir, verbose, depth)
|
||||
self._fetch(tempdir, verbose, depth, reset_fetch_config)
|
||||
finally:
|
||||
if tempdir:
|
||||
if os.path.exists(self.mirror_path):
|
||||
@@ -693,6 +697,8 @@ def CMDpopulate(parser, args):
|
||||
parser.add_option('--ignore_locks', '--ignore-locks',
|
||||
action='store_true',
|
||||
help='Don\'t try to lock repository')
|
||||
parser.add_option('--reset-fetch-config', action='store_true', default=False,
|
||||
help='Reset the fetch config before populating the cache.')
|
||||
|
||||
options, args = parser.parse_args(args)
|
||||
if not len(args) == 1:
|
||||
@@ -706,6 +712,7 @@ def CMDpopulate(parser, args):
|
||||
'bootstrap': not options.no_bootstrap,
|
||||
'ignore_lock': options.ignore_locks,
|
||||
'lock_timeout': options.timeout,
|
||||
'reset_fetch_config': options.reset_fetch_config,
|
||||
}
|
||||
if options.depth:
|
||||
kwargs['depth'] = options.depth
|
||||
|
||||
Reference in New Issue
Block a user