| Index: git_cache.py
|
| diff --git a/git_cache.py b/git_cache.py
|
| index 753ccde34a46c70c24c9748827311ff0138dbc0e..60dfa1c1fa637b26b2e24556052dfaefac0294c6 100755
|
| --- a/git_cache.py
|
| +++ b/git_cache.py
|
| @@ -38,7 +38,7 @@ except NameError:
|
| class LockError(Exception):
|
| pass
|
|
|
| -class RefsHeadsFailedToFetch(Exception):
|
| +class ClobberNeeded(Exception):
|
| pass
|
|
|
| class Lockfile(object):
|
| @@ -246,7 +246,11 @@ class Mirror(object):
|
| cwd = self.mirror_path
|
|
|
| # Don't run git-gc in a daemon. Bad things can happen if it gets killed.
|
| - self.RunGit(['config', 'gc.autodetach', '0'], cwd=cwd)
|
| + try:
|
| + self.RunGit(['config', 'gc.autodetach', '0'], cwd=cwd)
|
| + except subprocess.CalledProcessError:
|
| + # Hard error, need to clobber.
|
| + raise ClobberNeeded()
|
|
|
| # Don't combine pack files into one big pack file. It's really slow for
|
| # repositories, and there's no way to track progress and make sure it's
|
| @@ -407,7 +411,7 @@ class Mirror(object):
|
| self.RunGit(fetch_cmd + [spec], cwd=rundir, retry=True)
|
| except subprocess.CalledProcessError:
|
| if spec == '+refs/heads/*:refs/heads/*':
|
| - raise RefsHeadsFailedToFetch
|
| + raise ClobberNeeded() # Corrupted cache.
|
| logging.warn('Fetch of %s failed' % spec)
|
|
|
| def populate(self, depth=None, shallow=False, bootstrap=False,
|
| @@ -426,7 +430,7 @@ class Mirror(object):
|
| tempdir = self._ensure_bootstrapped(depth, bootstrap)
|
| rundir = tempdir or self.mirror_path
|
| self._fetch(rundir, verbose, depth)
|
| - except RefsHeadsFailedToFetch:
|
| + 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)
|
|
|