diff --git a/dvc/external_repo.py b/dvc/external_repo.py index 5c3958957..b8061a94c 100644 --- a/dvc/external_repo.py +++ b/dvc/external_repo.py @@ -44,6 +44,10 @@ def external_repo(url, rev=None, for_write=False, cache_dir=None, **kwargs): cache_dir=cache_dir or _get_cache_dir(url), **kwargs, ) + + if "fetch" not in conf: + conf["fetch"] = True + repo = ExternalRepo(**conf) try: @@ -149,28 +153,14 @@ class ExternalRepo(Repo): @cached_property def repo_tree(self): - return self._get_tree_for( - self, subrepos=self.subrepos, repo_factory=self.make_repo - ) - - def get_rev(self): - from dvc.tree.local import LocalTree - - assert self.scm - if isinstance(self.tree, LocalTree): - return self.scm.get_rev() - return self.tree.rev - - def _get_tree_for(self, repo, **kwargs): - """ - Provides a combined tree of a single repo with dvc + git/local tree. - """ from dvc.tree.repo import RepoTree - kw = {**self.tree_confs, **kwargs} - if "fetch" not in kw: - kw["fetch"] = True - return RepoTree(repo, **kw) + return RepoTree( + self, + subrepos=self.subrepos, + repo_factory=self.make_repo, + **self.tree_confs, + ) def make_repo(self, path): config = self._cache_config.copy() diff --git a/dvc/repo/__init__.py b/dvc/repo/__init__.py index 186c17bf6..8f2278918 100644 --- a/dvc/repo/__init__.py +++ b/dvc/repo/__init__.py @@ -210,6 +210,14 @@ class Repo: return SCM(self.root_dir, no_scm=True) raise + def get_rev(self): + from dvc.tree.local import LocalTree + + assert self.scm + if isinstance(self.tree, LocalTree): + return self.scm.get_rev() + return self.tree.rev + @cached_property def experiments(self): from dvc.repo.experiments import Experiments