| Index: ensure_dependencies.py | 
| =================================================================== | 
| --- a/ensure_dependencies.py | 
| +++ b/ensure_dependencies.py | 
| @@ -246,7 +246,7 @@ | 
| for name, repotype in repo_types.iteritems(): | 
| if repotype.istype(repo): | 
| return name | 
| - return 'hg' | 
| + return None | 
| def resolve_npm_dependencies(target, vcs): | 
| @@ -291,8 +291,9 @@ | 
| '--no-package-lock', '--no-optional'] | 
| subprocess.check_output(cmd, cwd=target) | 
| - repo_types[vcs].ignore(os.path.join(target, NPM_LOCKFILE), target) | 
| - repo_types[vcs].ignore(os.path.join(target, 'node_modules'), target) | 
| + if vcs: | 
| + repo_types[vcs].ignore(os.path.join(target, NPM_LOCKFILE), target) | 
| + repo_types[vcs].ignore(os.path.join(target, 'node_modules'), target) | 
| os.remove(lockfile_path) | 
| except OSError as e: | 
| @@ -351,7 +352,8 @@ | 
| return False | 
| -def resolve_deps(repodir, level=0, self_update=True, overrideroots=None, skipdependencies=set()): | 
| +def resolve_deps(repodir, repotype, level=0, self_update=True, | 
| + overrideroots=None, skipdependencies=set()): | 
| config = read_deps(repodir) | 
| if config is None: | 
| if level == 0: | 
| @@ -370,7 +372,7 @@ | 
| continue | 
| target = safe_join(repodir, dir) | 
| - parenttype = get_repo_type(repodir) | 
| + parenttype = repotype or 'hg' | 
| _root = config.get('_root', {}) | 
| for key in sources.keys() + _root.keys(): | 
| @@ -384,11 +386,20 @@ | 
| repo_cloned = ensure_repo(repodir, parenttype, target, vcs, | 
| _root.get(vcs, ''), source) | 
| - repo_updated = update_repo(target, vcs, rev) | 
| + if repo_types[vcs].istype(target): | 
| + repo_updated = update_repo(target, vcs, rev) | 
| + npm_outdated = repo_cloned or repo_updated | 
| + else: | 
| + vcs = None | 
| + npm_outdated = not os.path.exists( | 
| + os.path.join(target, 'node_modules') | 
| + ) | 
| + | 
| recent_npm_failed = os.path.exists(os.path.join(target, NPM_LOCKFILE)) | 
| - if repo_cloned or repo_updated or recent_npm_failed: | 
| + if npm_outdated or recent_npm_failed: | 
| resolve_npm_dependencies(target, vcs) | 
| - resolve_deps(target, level + 1, self_update=False, | 
| + | 
| + resolve_deps(target, vcs, level + 1, self_update=False, | 
| overrideroots=overrideroots, skipdependencies=skipdependencies) | 
| if self_update and '_self' in config and '*' in config['_self']: | 
| @@ -444,4 +455,4 @@ | 
| if not len(repos): | 
| repos = [os.path.dirname(__file__)] | 
| for repo in repos: | 
| - resolve_deps(repo) | 
| + resolve_deps(repo, get_repo_type(repo)) |