Index: gclient.py |
diff --git a/gclient.py b/gclient.py |
index 6147447da9d4bc80c8f755e99e51685ed761b575..3ac66e7639a12a0c75912130bdb970eb8e266a66 100755 |
--- a/gclient.py |
+++ b/gclient.py |
@@ -1314,7 +1314,21 @@ want to set 'managed': False in .gclient. |
prev_url, self.root_dir, entry_fixed, self.outbuf) |
# Check to see if this directory is now part of a higher-up checkout. |
- if scm.GetCheckoutRoot() in full_entries: |
+ # The directory might be part of a git OR svn checkout. |
+ scm_root = None |
+ for scm_class in (gclient_scm.scm.GIT, gclient_scm.scm.SVN): |
+ try: |
+ scm_root = scm_class.GetCheckoutRoot(scm.checkout_path) |
+ except subprocess2.CalledProcessError: |
+ pass |
+ if scm_root: |
+ break |
+ else: |
+ logging.warning('Could not find checkout root for %s. Unable to ' |
+ 'determine whether it is part of a higher-level ' |
+ 'checkout, so not removing.' % entry) |
+ continue |
+ if scm_root in full_entries: |
logging.info('%s is part of a higher level checkout, not ' |
'removing.', scm.GetCheckoutRoot()) |
continue |