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

Side by Side Diff: git_cache.py

Issue 499003002: Do threading.Lock the Right Way. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: 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 | Annotate | Revision Log
« 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
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 return target 193 return target
194 if sys.platform.startswith('win'): 194 if sys.platform.startswith('win'):
195 for suffix in ('.bat', '.cmd', '.exe'): 195 for suffix in ('.bat', '.cmd', '.exe'):
196 alt_target = target + suffix 196 alt_target = target + suffix
197 if os.path.isfile(alt_target) and os.access(alt_target, os.X_OK): 197 if os.path.isfile(alt_target) and os.access(alt_target, os.X_OK):
198 return alt_target 198 return alt_target
199 return None 199 return None
200 200
201 @classmethod 201 @classmethod
202 def SetCachePath(cls, cachepath): 202 def SetCachePath(cls, cachepath):
203 cls.cachepath_lock.acquire() 203 with cls.cachepath_lock:
204 setattr(cls, 'cachepath', cachepath) 204 setattr(cls, 'cachepath', cachepath)
205 cls.cachepath_lock.release()
206 205
207 @classmethod 206 @classmethod
208 def GetCachePath(cls): 207 def GetCachePath(cls):
209 cls.cachepath_lock.acquire() 208 with cls.cachepath_lock:
210 if not hasattr(cls, 'cachepath'): 209 if not hasattr(cls, 'cachepath'):
211 try: 210 try:
212 cachepath = subprocess.check_output( 211 cachepath = subprocess.check_output(
213 [cls.git_exe, 'config', '--global', 'cache.cachepath']).strip() 212 [cls.git_exe, 'config', '--global', 'cache.cachepath']).strip()
214 except subprocess.CalledProcessError: 213 except subprocess.CalledProcessError:
215 cachepath = None 214 cachepath = None
216 if not cachepath: 215 if not cachepath:
217 cls.cachepath_lock.release() 216 raise RuntimeError(
218 raise RuntimeError('No global cache.cachepath git configuration found.') 217 'No global cache.cachepath git configuration found.')
219 setattr(cls, 'cachepath', cachepath) 218 setattr(cls, 'cachepath', cachepath)
220 cls.cachepath_lock.release() 219 return getattr(cls, 'cachepath')
221 return getattr(cls, 'cachepath')
222 220
223 def RunGit(self, cmd, **kwargs): 221 def RunGit(self, cmd, **kwargs):
224 """Run git in a subprocess.""" 222 """Run git in a subprocess."""
225 cwd = kwargs.setdefault('cwd', self.mirror_path) 223 cwd = kwargs.setdefault('cwd', self.mirror_path)
226 kwargs.setdefault('print_stdout', False) 224 kwargs.setdefault('print_stdout', False)
227 kwargs.setdefault('filter_fn', self.print) 225 kwargs.setdefault('filter_fn', self.print)
228 env = kwargs.get('env') or kwargs.setdefault('env', os.environ.copy()) 226 env = kwargs.get('env') or kwargs.setdefault('env', os.environ.copy())
229 env.setdefault('GIT_ASKPASS', 'true') 227 env.setdefault('GIT_ASKPASS', 'true')
230 env.setdefault('SSH_ASKPASS', 'true') 228 env.setdefault('SSH_ASKPASS', 'true')
231 self.print('running "git %s" in "%s"' % (' '.join(cmd), cwd)) 229 self.print('running "git %s" in "%s"' % (' '.join(cmd), cwd))
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 return options, args 690 return options, args
693 691
694 692
695 def main(argv): 693 def main(argv):
696 dispatcher = subcommand.CommandDispatcher(__name__) 694 dispatcher = subcommand.CommandDispatcher(__name__)
697 return dispatcher.execute(OptionParser(), argv) 695 return dispatcher.execute(OptionParser(), argv)
698 696
699 697
700 if __name__ == '__main__': 698 if __name__ == '__main__':
701 sys.exit(main(sys.argv[1:])) 699 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