Don't delete directories that have been superseded by a broader checkout.

BUG=237388

Review URL: https://chromiumcodereview.appspot.com/14583004

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@203384 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index f71eccc..5b159ed 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1134,6 +1134,9 @@
       # Only delete the directory if there are no changes in it, and
       # delete_unversioned_trees is set to true.
       entries = [i.name for i in self.root.subtree(False) if i.url]
+      full_entries = [os.path.join(self.root_dir, e.replace('/', os.path.sep))
+                      for e in entries]
+
       for entry, prev_url in self._ReadEntries().iteritems():
         if not prev_url:
           # entry must have been overridden via .gclient custom_deps
@@ -1152,8 +1155,15 @@
         if (entry not in entries and
             (not any(path.startswith(entry + '/') for path in entries)) and
             os.path.exists(e_dir)):
-          file_list = []
           scm = gclient_scm.CreateSCM(prev_url, self.root_dir, entry_fixed)
+
+          # Check to see if this directory is now part of a higher-up checkout.
+          if scm.GetCheckoutRoot() in full_entries:
+            logging.info('%s is part of a higher level checkout, not '
+                         'removing.', scm.GetCheckoutRoot())
+            continue
+
+          file_list = []
           scm.status(self._options, [], file_list)
           modified_files = file_list != []
           if (not self._options.delete_unversioned_trees or