From 2b7d3ed286d03877e910d76dafe0e4668c5cc971 Mon Sep 17 00:00:00 2001 From: "vadimsh@chromium.org" Date: Fri, 20 Jun 2014 18:15:37 +0000 Subject: [PATCH] Allow gclient sync to overwrite untracked files when moving detached git HEAD. Do it only when both --force and --delete_unversioned_trees are specified. BUG=386878 R=iannucci@chromium.org Review URL: https://codereview.chromium.org/334633004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@278770 0039d316-1c4b-4281-b951-d872f2087c98 --- gclient_scm.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gclient_scm.py b/gclient_scm.py index a9a3019b6..ece6413e5 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -498,7 +498,12 @@ class GitWrapper(SCMWrapper): if self._Capture(['rev-list', '-n', '1', 'HEAD']) == revision: self.Print('Up-to-date; skipping checkout.') else: - self._Capture(['checkout', '--quiet', '%s' % revision]) + # 'git checkout' may need to overwrite existing untracked files. Allow + # it only when nuclear options are enabled. + if options.force and options.delete_unversioned_trees: + self._Capture(['checkout', '--force', '--quiet', '%s' % revision]) + else: + self._Capture(['checkout', '--quiet', '%s' % revision]) if not printed_path: self.Print('_____ %s%s' % (self.relpath, rev_str), timestamp=False) elif current_type == 'hash':