Chromium Code Reviews| Index: gclient_scm.py |
| diff --git a/gclient_scm.py b/gclient_scm.py |
| index 1aeb69dbf7556b2596f15949f775159aa8e30fba..e82c1b344d0f2418173b525d2c4cbe6c59381bad 100644 |
| --- a/gclient_scm.py |
| +++ b/gclient_scm.py |
| @@ -327,6 +327,27 @@ class GitWrapper(SCMWrapper): |
| os.remove(disabled_hook_path) |
| os.rename(os.path.join(hook_dir, f), disabled_hook_path) |
| + def _maybe_break_locks(self, options): |
| + """This removes all .lock files from this repo's .git directory, if the |
| + user passed the --break_repo_locks command line flag. |
| + |
| + In particular, this will cleanup index.lock files, as well as ref lock |
| + files. |
| + """ |
| + if options.break_repo_locks: |
| + git_dir = os.path.join(self.checkout_path, '.git') |
| + for path, _, fils in os.walk(git_dir): |
|
pgervais
2016/04/06 15:53:30
fils?
Suggestion: fils -> filenames ; fname -> fi
iannucci
2016/04/06 17:29:18
Done.
|
| + for fname in fils: |
| + if fname.endswith('.lock'): |
| + to_break = os.path.join(path, fname) |
| + self.Print('breaking lock: %s' % (to_break,)) |
| + try: |
| + os.remove(to_break) |
| + except OSError as ex: |
| + self.Print('FAILED to break lock: %s: %s' % (to_break, ex)) |
| + raise |
| + |
| + |
| def update(self, options, args, file_list): |
| """Runs git to update or transparently checkout the working copy. |
| @@ -433,6 +454,8 @@ class GitWrapper(SCMWrapper): |
| self.Print('________ unmanaged solution; skipping %s' % self.relpath) |
| return self._Capture(['rev-parse', '--verify', 'HEAD']) |
| + self._maybe_break_locks(options) |
| + |
| if mirror: |
| self._UpdateMirror(mirror, options) |