| OLD | NEW |
| 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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 else: | 306 else: |
| 307 if p.source_filename: | 307 if p.source_filename: |
| 308 if not p.is_new: | 308 if not p.is_new: |
| 309 raise PatchApplicationFailed( | 309 raise PatchApplicationFailed( |
| 310 p.filename, | 310 p.filename, |
| 311 'File has a source filename specified but is not new') | 311 'File has a source filename specified but is not new') |
| 312 # Copy the file first. | 312 # Copy the file first. |
| 313 if os.path.isfile(filepath): | 313 if os.path.isfile(filepath): |
| 314 raise PatchApplicationFailed( | 314 raise PatchApplicationFailed( |
| 315 p.filename, 'File exist but was about to be overwriten') | 315 p.filename, 'File exist but was about to be overwriten') |
| 316 shutil.copy2( | 316 self._check_output_svn( |
| 317 os.path.join(self.project_path, p.source_filename), filepath) | 317 [ |
| 318 'copy', |
| 319 os.path.join(self.project_path, p.source_filename), |
| 320 filepath |
| 321 ]) |
| 318 if p.diff_hunks: | 322 if p.diff_hunks: |
| 319 cmd = ['patch', '-p%s' % p.patchlevel, '--forward', '--force'] | 323 cmd = ['patch', '-p%s' % p.patchlevel, '--forward', '--force'] |
| 320 stdout += subprocess2.check_output( | 324 stdout += subprocess2.check_output( |
| 321 cmd, stdin=p.get(False), cwd=self.project_path) | 325 cmd, stdin=p.get(False), cwd=self.project_path) |
| 322 elif p.is_new and not os.path.exists(filepath): | 326 elif p.is_new and not os.path.exists(filepath): |
| 323 # There is only a header. Just create the file if it doesn't | 327 # There is only a header. Just create the file if it doesn't |
| 324 # exist. | 328 # exist. |
| 325 open(filepath, 'w').close() | 329 open(filepath, 'w').close() |
| 326 if p.is_new: | 330 if p.is_new and not p.source_filename: |
| 331 # Do not run it if p.source_filename is defined, since svn copy was |
| 332 # using above. |
| 327 stdout += self._check_output_svn( | 333 stdout += self._check_output_svn( |
| 328 ['add', p.filename, '--force'], credentials=False) | 334 ['add', p.filename, '--force'], credentials=False) |
| 329 for prop in p.svn_properties: | 335 for prop in p.svn_properties: |
| 330 stdout += self._check_output_svn( | 336 stdout += self._check_output_svn( |
| 331 ['propset', prop[0], prop[1], p.filename], credentials=False) | 337 ['propset', prop[0], prop[1], p.filename], credentials=False) |
| 332 for prop, values in self.svn_config.auto_props.iteritems(): | 338 for prop, values in self.svn_config.auto_props.iteritems(): |
| 333 if fnmatch.fnmatch(p.filename, prop): | 339 if fnmatch.fnmatch(p.filename, prop): |
| 334 for value in values.split(';'): | 340 for value in values.split(';'): |
| 335 if '=' not in value: | 341 if '=' not in value: |
| 336 params = [value, '*'] | 342 params = [value, '*'] |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 user, message)) | 753 user, message)) |
| 748 return 'FAKE' | 754 return 'FAKE' |
| 749 | 755 |
| 750 @property | 756 @property |
| 751 def project_name(self): | 757 def project_name(self): |
| 752 return self.checkout.project_name | 758 return self.checkout.project_name |
| 753 | 759 |
| 754 @property | 760 @property |
| 755 def project_path(self): | 761 def project_path(self): |
| 756 return self.checkout.project_path | 762 return self.checkout.project_path |
| OLD | NEW |