Index: gclient_scm.py |
diff --git a/gclient_scm.py b/gclient_scm.py |
index 148855c89ffc597d645314df55274da19909f303..b2895abddea08cc1da444b594242d84de21cc9e9 100644 |
--- a/gclient_scm.py |
+++ b/gclient_scm.py |
@@ -13,6 +13,7 @@ |
# limitations under the License. |
+import logging |
import os |
import re |
import subprocess |
@@ -218,20 +219,25 @@ class SCMWrapper(object): |
# Don't reuse the args. |
return self.update(options, [], file_list) |
- files = CaptureSVNStatus(path) |
# Batch the command. |
files_to_revert = [] |
- for file in files: |
+ for file in CaptureSVNStatus(path): |
file_path = os.path.join(path, file[1]) |
+ if file_path[0][0] == 'X': |
+ # Ignore externals. |
+ continue |
+ |
print(file_path) |
- # Unversioned file or unexpected unversioned file. |
- if file[0][0] in ('?', '~'): |
- # Remove extraneous file. Also remove unexpected unversioned |
- # directories. svn won't touch them but we want to delete these. |
- file_list.append(file_path) |
+ # Unversioned file, unexpected unversioned files, switched directories |
+ # or conflicted trees. |
+ if file[0][0] in ('?', '~') or file[0][4] == 'S' or file[0][6] == 'C': |
+ # Remove then since svn revert won't touch them. |
try: |
+ # TODO(maruel): Look if it is a file or a directory. |
+ logging.info('os.remove(%s)' % file_path) |
os.remove(file_path) |
except EnvironmentError: |
+ logging.info('gclient_utils.RemoveDirectory(%s)' % file_path) |
gclient_utils.RemoveDirectory(file_path) |
if file[0][0] != '?': |