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

Unified Diff: gclient_scm.py

Issue 1867843003: Revert of Revert "Add (another) argument to break git locks in gclient." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gclient.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient_scm.py
diff --git a/gclient_scm.py b/gclient_scm.py
index 1aeb69dbf7556b2596f15949f775159aa8e30fba..9a6f5123419cef246e638dc28ae3caf0679cd4ee 100644
--- a/gclient_scm.py
+++ b/gclient_scm.py
@@ -326,6 +326,27 @@
if os.path.exists(disabled_hook_path):
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, _, filenames in os.walk(git_dir):
+ for filename in filenames:
+ if filename.endswith('.lock'):
+ to_break = os.path.join(path, filename)
+ 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.
@@ -432,6 +453,8 @@
self._UpdateBranchHeads(options, fetch=False)
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)
« no previous file with comments | « gclient.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698