Index: gclient_scm.py |
=================================================================== |
--- gclient_scm.py (revision 121254) |
+++ gclient_scm.py (working copy) |
@@ -914,7 +914,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 +939,18 @@ |
command = self._AddAdditionalUpdateFlags(command, options, revision) |
self._RunAndGetFileList(command, options, file_list, self._root_dir) |
+ # If --force is specified, remove directories which have been removed from |
+ # the repository but which may still exist in the working copy. |
+ if options.force: |
M-A Ruel
2012/02/10 01:43:55
I'd prefer to start with:
if options.force and opt
|
+ # Note that we don't check to see if the directory is ignored, as when |
+ # moving a directory from the main repository to deps/, we'd like to be |
+ # able to set svn:ignore in the same change. |
+ for status in scm.SVN.CaptureStatus(file_list, self.checkout_path, False): |
+ 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(path) |
+ |
def updatesingle(self, options, args, file_list): |
filename = args.pop() |
if scm.SVN.AssertVersion("1.5")[0]: |