| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import atexit | 5 import atexit |
| 6 import collections | 6 import collections |
| 7 import datetime | 7 import datetime |
| 8 import os | 8 import os |
| 9 import shutil | 9 import shutil |
| 10 import subprocess | 10 import subprocess |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 99 |
| 100 if commit.parents: | 100 if commit.parents: |
| 101 parents = list(commit.parents) | 101 parents = list(commit.parents) |
| 102 self.git('checkout', '--detach', '-q', self[parents[0]]) | 102 self.git('checkout', '--detach', '-q', self[parents[0]]) |
| 103 if len(parents) > 1: | 103 if len(parents) > 1: |
| 104 self.git('merge', '--no-commit', '-q', *[self[x] for x in parents[1:]]) | 104 self.git('merge', '--no-commit', '-q', *[self[x] for x in parents[1:]]) |
| 105 else: | 105 else: |
| 106 self.git('checkout', '--orphan', 'root_%s' % commit.name) | 106 self.git('checkout', '--orphan', 'root_%s' % commit.name) |
| 107 self.git('rm', '-rf', '.') | 107 self.git('rm', '-rf', '.') |
| 108 | 108 |
| 109 env = self.get_git_commit_env(commit_data) | 109 env = os.environ.copy() |
| 110 env.update(self.get_git_commit_env(commit_data)) |
| 110 | 111 |
| 111 for fname, file_data in commit_data.iteritems(): | 112 for fname, file_data in commit_data.iteritems(): |
| 112 deleted = False | 113 deleted = False |
| 113 if 'data' in file_data: | 114 if 'data' in file_data: |
| 114 data = file_data.get('data') | 115 data = file_data.get('data') |
| 115 if data is None: | 116 if data is None: |
| 116 deleted = True | 117 deleted = True |
| 117 self.git('rm', fname) | 118 self.git('rm', fname) |
| 118 else: | 119 else: |
| 119 path = os.path.join(self.repo_path, fname) | 120 path = os.path.join(self.repo_path, fname) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 assert self.repo_path is not None | 161 assert self.repo_path is not None |
| 161 try: | 162 try: |
| 162 with open(os.devnull, 'wb') as devnull: | 163 with open(os.devnull, 'wb') as devnull: |
| 163 output = subprocess.check_output( | 164 output = subprocess.check_output( |
| 164 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs) | 165 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs) |
| 165 return self.COMMAND_OUTPUT(0, output) | 166 return self.COMMAND_OUTPUT(0, output) |
| 166 except subprocess.CalledProcessError as e: | 167 except subprocess.CalledProcessError as e: |
| 167 return self.COMMAND_OUTPUT(e.returncode, e.output) | 168 return self.COMMAND_OUTPUT(e.returncode, e.output) |
| 168 | 169 |
| 169 def git_commit(self, message): | 170 def git_commit(self, message): |
| 170 return self.git('commit', '-am', message, env=self.get_git_commit_env()) | 171 env = os.environ.copy() |
| 172 env.update(self.get_git_commit_env()) |
| 173 return self.git('commit', '-am', message, env=env) |
| 171 | 174 |
| 172 def nuke(self): | 175 def nuke(self): |
| 173 """Obliterates the git repo on disk. | 176 """Obliterates the git repo on disk. |
| 174 | 177 |
| 175 Causes this GitRepo to be unusable. | 178 Causes this GitRepo to be unusable. |
| 176 """ | 179 """ |
| 177 shutil.rmtree(self.repo_path) | 180 shutil.rmtree(self.repo_path) |
| 178 self.repo_path = None | 181 self.repo_path = None |
| 179 | 182 |
| 180 def run(self, fn, *args, **kwargs): | 183 def run(self, fn, *args, **kwargs): |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 else: | 235 else: |
| 233 assert current is not None | 236 assert current is not None |
| 234 hash_to_msg[current] = line | 237 hash_to_msg[current] = line |
| 235 ret.add_partial(line) | 238 ret.add_partial(line) |
| 236 for parent in parents: | 239 for parent in parents: |
| 237 ret.add_partial(line, hash_to_msg[parent]) | 240 ret.add_partial(line, hash_to_msg[parent]) |
| 238 current = None | 241 current = None |
| 239 parents = [] | 242 parents = [] |
| 240 assert current is None | 243 assert current is None |
| 241 return ret | 244 return ret |
| OLD | NEW |