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

Side by Side Diff: checkout.py

Issue 18664004: Create a temporary dir for patch to do its work. (Closed) Base URL: http://src.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Pass named arg to tempfile (patch by ilevy) Created 7 years, 5 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 # coding=utf8 1 # coding=utf8
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 """Manages a project checkout. 5 """Manages a project checkout.
6 6
7 Includes support for svn, git-svn and git. 7 Includes support for svn, git-svn and git.
8 """ 8 """
9 9
10 import ConfigParser 10 import ConfigParser
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 if os.path.isfile(filepath): 197 if os.path.isfile(filepath):
198 raise PatchApplicationFailed( 198 raise PatchApplicationFailed(
199 p, 'File exist but was about to be overwriten') 199 p, 'File exist but was about to be overwriten')
200 shutil.copy2( 200 shutil.copy2(
201 os.path.join(self.project_path, p.source_filename), filepath) 201 os.path.join(self.project_path, p.source_filename), filepath)
202 stdout.append('Copied %s -> %s' % (p.source_filename, p.filename)) 202 stdout.append('Copied %s -> %s' % (p.source_filename, p.filename))
203 if p.diff_hunks: 203 if p.diff_hunks:
204 cmd = ['patch', '-u', '--binary', '-p%s' % p.patchlevel] 204 cmd = ['patch', '-u', '--binary', '-p%s' % p.patchlevel]
205 if verbose: 205 if verbose:
206 cmd.append('--verbose') 206 cmd.append('--verbose')
207 stdout.append( 207 env = os.environ.copy()
208 subprocess2.check_output( 208 env['TMPDIR'] = tempfile.mkdtemp(prefix='crpatch')
209 cmd, 209 try:
210 stdin=p.get(False), 210 stdout.append(
211 stderr=subprocess2.STDOUT, 211 subprocess2.check_output(
212 cwd=self.project_path, 212 cmd,
213 timeout=GLOBAL_TIMEOUT)) 213 stdin=p.get(False),
214 stderr=subprocess2.STDOUT,
215 cwd=self.project_path,
216 timeout=GLOBAL_TIMEOUT,
217 env=env))
218 finally:
219 shutil.rmtree(env['TMPDIR'])
214 elif p.is_new and not os.path.exists(filepath): 220 elif p.is_new and not os.path.exists(filepath):
215 # There is only a header. Just create the file. 221 # There is only a header. Just create the file.
216 open(filepath, 'w').close() 222 open(filepath, 'w').close()
217 stdout.append('Created an empty file.') 223 stdout.append('Created an empty file.')
218 for post in post_processors: 224 for post in post_processors:
219 post(self, p) 225 post(self, p)
220 if verbose: 226 if verbose:
221 print p.filename 227 print p.filename
222 print align_stdout(stdout) 228 print align_stdout(stdout)
223 except OSError, e: 229 except OSError, e:
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 ['copy', p.source_filename, p.filename])) 399 ['copy', p.source_filename, p.filename]))
394 stdout.append('Copied %s -> %s' % (p.source_filename, p.filename)) 400 stdout.append('Copied %s -> %s' % (p.source_filename, p.filename))
395 if p.diff_hunks: 401 if p.diff_hunks:
396 cmd = [ 402 cmd = [
397 'patch', 403 'patch',
398 '-p%s' % p.patchlevel, 404 '-p%s' % p.patchlevel,
399 '--forward', 405 '--forward',
400 '--force', 406 '--force',
401 '--no-backup-if-mismatch', 407 '--no-backup-if-mismatch',
402 ] 408 ]
403 stdout.append( 409 env = os.environ.copy()
404 subprocess2.check_output( 410 env['TMPDIR'] = tempfile.mkdtemp(prefix='crpatch')
405 cmd, 411 try:
406 stdin=p.get(False), 412 stdout.append(
407 cwd=self.project_path, 413 subprocess2.check_output(
408 timeout=GLOBAL_TIMEOUT)) 414 cmd,
415 stdin=p.get(False),
416 cwd=self.project_path,
417 timeout=GLOBAL_TIMEOUT,
418 env=env))
419 finally:
420 shutil.rmtree(env['TMPDIR'])
421
409 elif p.is_new and not os.path.exists(filepath): 422 elif p.is_new and not os.path.exists(filepath):
410 # There is only a header. Just create the file if it doesn't 423 # There is only a header. Just create the file if it doesn't
411 # exist. 424 # exist.
412 open(filepath, 'w').close() 425 open(filepath, 'w').close()
413 stdout.append('Created an empty file.') 426 stdout.append('Created an empty file.')
414 if p.is_new and not p.source_filename: 427 if p.is_new and not p.source_filename:
415 # Do not run it if p.source_filename is defined, since svn copy was 428 # Do not run it if p.source_filename is defined, since svn copy was
416 # using above. 429 # using above.
417 stdout.append( 430 stdout.append(
418 self._check_output_svn( 431 self._check_output_svn(
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 def revisions(self, rev1, rev2): 764 def revisions(self, rev1, rev2):
752 return self.checkout.revisions(rev1, rev2) 765 return self.checkout.revisions(rev1, rev2)
753 766
754 @property 767 @property
755 def project_name(self): 768 def project_name(self):
756 return self.checkout.project_name 769 return self.checkout.project_name
757 770
758 @property 771 @property
759 def project_path(self): 772 def project_path(self):
760 return self.checkout.project_path 773 return self.checkout.project_path
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