| Index: gclient.py
|
| diff --git a/gclient.py b/gclient.py
|
| index 22a4eb96a369c59ef900c2abff35e331af21ecb9..f6db225c11c0d94e834580728faf3fad74011ed1 100755
|
| --- a/gclient.py
|
| +++ b/gclient.py
|
| @@ -1542,18 +1542,23 @@
|
| # Fix path separator on Windows.
|
| entry_fixed = entry.replace('/', os.path.sep)
|
| e_dir = os.path.join(self.root_dir, entry_fixed)
|
| +
|
| + def _IsParentOfAny(parent, path_list):
|
| + parent_plus_slash = parent + '/'
|
| + return any(
|
| + path[:len(parent_plus_slash)] == parent_plus_slash
|
| + for path in path_list)
|
| +
|
| # Use entry and not entry_fixed there.
|
| if (entry not in entries and
|
| (not any(path.startswith(entry + '/') for path in entries)) and
|
| os.path.exists(e_dir)):
|
| - # The entry has been removed from DEPS.
|
| scm = gclient_scm.CreateSCM(
|
| prev_url, self.root_dir, entry_fixed, self.outbuf)
|
|
|
| # Check to see if this directory is now part of a higher-up checkout.
|
| # The directory might be part of a git OR svn checkout.
|
| scm_root = None
|
| - scm_class = None
|
| for scm_class in (gclient_scm.scm.GIT, gclient_scm.scm.SVN):
|
| try:
|
| scm_root = scm_class.GetCheckoutRoot(scm.checkout_path)
|
| @@ -1566,45 +1571,9 @@
|
| 'determine whether it is part of a higher-level '
|
| 'checkout, so not removing.' % entry)
|
| continue
|
| -
|
| - # This is to handle the case of third_party/WebKit migrating from
|
| - # being a DEPS entry to being part of the main project.
|
| - # If the subproject is a Git project, we need to remove its .git
|
| - # folder. Otherwise git operations on that folder will have different
|
| - # effects depending on the current working directory.
|
| - if scm_class == gclient_scm.scm.GIT and (
|
| - os.path.abspath(scm_root) == os.path.abspath(e_dir)):
|
| - e_par_dir = os.path.join(e_dir, os.pardir)
|
| - if scm_class.IsInsideWorkTree(e_par_dir):
|
| - par_scm_root = scm_class.GetCheckoutRoot(e_par_dir)
|
| - # rel_e_dir : relative path of entry w.r.t. its parent repo.
|
| - rel_e_dir = os.path.relpath(e_dir, par_scm_root)
|
| - if scm_class.IsDirectoryVersioned(par_scm_root, rel_e_dir):
|
| - save_dir = scm.GetGitBackupDirPath()
|
| - # Remove any eventual stale backup dir for the same project.
|
| - if os.path.exists(save_dir):
|
| - gclient_utils.rmtree(save_dir)
|
| - os.rename(os.path.join(e_dir, '.git'), save_dir)
|
| - # When switching between the two states (entry/ is a subproject
|
| - # -> entry/ is part of the outer project), it is very likely
|
| - # that some files are changed in the checkout, unless we are
|
| - # jumping *exactly* across the commit which changed just DEPS.
|
| - # In such case we want to cleanup any eventual stale files
|
| - # (coming from the old subproject) in order to end up with a
|
| - # clean checkout.
|
| - scm_class.CleanupDir(par_scm_root, rel_e_dir)
|
| - assert not os.path.exists(os.path.join(e_dir, '.git'))
|
| - print(('\nWARNING: \'%s\' has been moved from DEPS to a higher '
|
| - 'level checkout. The git folder containing all the local'
|
| - ' branches has been saved to %s.\n'
|
| - 'If you don\'t care about its state you can safely '
|
| - 'remove that folder to free up space.') %
|
| - (entry, save_dir))
|
| - continue
|
| -
|
| if scm_root in full_entries:
|
| - logging.info('%s is part of a higher level checkout, not removing',
|
| - scm.GetCheckoutRoot())
|
| + logging.info('%s is part of a higher level checkout, not '
|
| + 'removing.', scm.GetCheckoutRoot())
|
| continue
|
|
|
| file_list = []
|
|
|