Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: git_cache.py

Issue 538993002: Make git cache delete a defunct directory instead of moving it (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: lint Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """A git command for managing a local cache of git repositories.""" 6 """A git command for managing a local cache of git repositories."""
7 7
8 from __future__ import print_function 8 from __future__ import print_function
9 import errno 9 import errno
10 import logging 10 import logging
11 import optparse 11 import optparse
12 import os 12 import os
13 import re 13 import re
14 import tempfile 14 import tempfile
15 import threading 15 import threading
16 import time 16 import time
17 import shutil
18 import subprocess 17 import subprocess
19 import sys 18 import sys
20 import urlparse 19 import urlparse
21 import zipfile 20 import zipfile
22 21
23 from download_from_google_storage import Gsutil 22 from download_from_google_storage import Gsutil
24 import gclient_utils 23 import gclient_utils
25 import subcommand 24 import subcommand
26 25
27 # Analogous to gc.autopacklimit git config. 26 # Analogous to gc.autopacklimit git config.
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 336
338 should_bootstrap = (force or 337 should_bootstrap = (force or
339 not os.path.exists(config_file) or 338 not os.path.exists(config_file) or
340 len(pack_files) > GC_AUTOPACKLIMIT) 339 len(pack_files) > GC_AUTOPACKLIMIT)
341 if should_bootstrap: 340 if should_bootstrap:
342 tempdir = tempfile.mkdtemp( 341 tempdir = tempfile.mkdtemp(
343 prefix='_cache_tmp', suffix=self.basedir, dir=self.GetCachePath()) 342 prefix='_cache_tmp', suffix=self.basedir, dir=self.GetCachePath())
344 bootstrapped = not depth and bootstrap and self.bootstrap_repo(tempdir) 343 bootstrapped = not depth and bootstrap and self.bootstrap_repo(tempdir)
345 if bootstrapped: 344 if bootstrapped:
346 # Bootstrap succeeded; delete previous cache, if any. 345 # Bootstrap succeeded; delete previous cache, if any.
347 try: 346 gclient_utils.rmtree(self.mirror_path)
348 # Try to move folder to tempdir if possible.
349 defunct_dir = tempfile.mkdtemp()
350 shutil.move(self.mirror_path, defunct_dir)
351 self.print('Moved defunct directory for repository %s from %s to %s'
352 % (self.url, self.mirror_path, defunct_dir))
353 except Exception:
354 gclient_utils.rmtree(self.mirror_path)
355 elif not os.path.exists(config_file): 347 elif not os.path.exists(config_file):
356 # Bootstrap failed, no previous cache; start with a bare git dir. 348 # Bootstrap failed, no previous cache; start with a bare git dir.
357 self.RunGit(['init', '--bare'], cwd=tempdir) 349 self.RunGit(['init', '--bare'], cwd=tempdir)
358 else: 350 else:
359 # Bootstrap failed, previous cache exists; warn and continue. 351 # Bootstrap failed, previous cache exists; warn and continue.
360 logging.warn( 352 logging.warn(
361 'Git cache has a lot of pack files (%d). Tried to re-bootstrap ' 353 'Git cache has a lot of pack files (%d). Tried to re-bootstrap '
362 'but failed. Continuing with non-optimized repository.' 354 'but failed. Continuing with non-optimized repository.'
363 % len(pack_files)) 355 % len(pack_files))
364 gclient_utils.rmtree(tempdir) 356 gclient_utils.rmtree(tempdir)
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 return options, args 684 return options, args
693 685
694 686
695 def main(argv): 687 def main(argv):
696 dispatcher = subcommand.CommandDispatcher(__name__) 688 dispatcher = subcommand.CommandDispatcher(__name__)
697 return dispatcher.execute(OptionParser(), argv) 689 return dispatcher.execute(OptionParser(), argv)
698 690
699 691
700 if __name__ == '__main__': 692 if __name__ == '__main__':
701 sys.exit(main(sys.argv[1:])) 693 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698