| Index: gclient_scm.py
|
| ===================================================================
|
| --- gclient_scm.py (revision 121978)
|
| +++ gclient_scm.py (working copy)
|
| @@ -442,6 +442,20 @@
|
| if verbose:
|
| print('Checked out revision %s' % self.revinfo(options, (), None))
|
|
|
| + # If --force and --delete_unversioned_trees are specified, remove any
|
| + # untracked directories.
|
| + if options.force and options.delete_unversioned_trees:
|
| + # GIT.CaptureStatus() uses 'dit diff' to compare to a specific SHA1 (the
|
| + # merge-base by default), so doesn't include untracked files. So we use
|
| + # 'git ls-files --directory --others --exclude-standard' here directly.
|
| + paths = scm.GIT.Capture(
|
| + ['ls-files', '--directory', '--others', '--exclude-standard'],
|
| + self.checkout_path)
|
| + for path in (p for p in paths.splitlines() if p.endswith('/')):
|
| + print('\n_____ removing unversioned directory %s' % path)
|
| + gclient_utils.RemoveDirectory(os.path.join(self.checkout_path, path))
|
| +
|
| +
|
| def revert(self, options, args, file_list):
|
| """Reverts local modifications.
|
|
|
| @@ -914,7 +928,7 @@
|
| if not options.force and not options.reset:
|
| # Look for local modifications but ignore unversioned files.
|
| for status in scm.SVN.CaptureStatus(None, self.checkout_path):
|
| - if status[0] != '?':
|
| + if status[0][0] != '?':
|
| raise gclient_utils.Error(
|
| ('Can\'t switch the checkout to %s; UUID don\'t match and '
|
| 'there is local changes in %s. Delete the directory and '
|
| @@ -939,6 +953,15 @@
|
| command = self._AddAdditionalUpdateFlags(command, options, revision)
|
| self._RunAndGetFileList(command, options, file_list, self._root_dir)
|
|
|
| + # If --force and --delete_unversioned_trees are specified, remove any
|
| + # untracked files and directories.
|
| + if options.force and options.delete_unversioned_trees:
|
| + for status in scm.SVN.CaptureStatus(None, self.checkout_path):
|
| + path = os.path.join(self.checkout_path, status[1])
|
| + if (status[0][0] == '?' and os.path.isdir(path)):
|
| + print('\n_____ removing unversioned directory %s' % status[1])
|
| + gclient_utils.RemoveDirectory(os.path.join(path))
|
| +
|
| def updatesingle(self, options, args, file_list):
|
| filename = args.pop()
|
| if scm.SVN.AssertVersion("1.5")[0]:
|
|
|