diff --git a/dvc/exceptions.py b/dvc/exceptions.py index 9bab2eeaf..7a70821ac 100644 --- a/dvc/exceptions.py +++ b/dvc/exceptions.py @@ -330,8 +330,8 @@ class CollectCacheError(DvcException): pass -class RemoteNotSpecifiedInTargetRepoError(DvcException): +class RemoteNotSpecifiedInExternalRepoError(DvcException): def __init__(self, url): - super(RemoteNotSpecifiedInTargetRepoError, self).__init__( + super(RemoteNotSpecifiedInExternalRepoError, self).__init__( "No DVC remote is specified in target repository '{}'".format(url) ) diff --git a/dvc/external_repo.py b/dvc/external_repo.py index ccdadf6e6..6fab519df 100644 --- a/dvc/external_repo.py +++ b/dvc/external_repo.py @@ -7,6 +7,8 @@ from distutils.dir_util import copy_tree from funcy import retry +from dvc.config import NoRemoteError +from dvc.exceptions import RemoteNotSpecifiedInExternalRepoError from dvc.utils import remove @@ -19,7 +21,10 @@ def external_repo(url=None, rev=None, rev_lock=None, cache_dir=None): path = _external_repo(url=url, rev=rev_lock or rev, cache_dir=cache_dir) repo = Repo(path) - yield repo + try: + yield repo + except NoRemoteError: + raise RemoteNotSpecifiedInExternalRepoError(url) repo.close() diff --git a/dvc/repo/get.py b/dvc/repo/get.py index 1f1afdb6d..011700684 100644 --- a/dvc/repo/get.py +++ b/dvc/repo/get.py @@ -3,11 +3,9 @@ import os import shortuuid -from dvc.config import NoRemoteError from dvc.exceptions import GetDVCFileError from dvc.exceptions import NotDvcRepoError from dvc.exceptions import OutputNotFoundError -from dvc.exceptions import RemoteNotSpecifiedInTargetRepoError from dvc.exceptions import UrlNotDvcRepoError from dvc.external_repo import external_repo from dvc.path_info import PathInfo @@ -58,8 +56,6 @@ def get(url, path, out=None, rev=None): with o.repo.state: o.checkout() - except NoRemoteError: - raise RemoteNotSpecifiedInTargetRepoError(url) except NotDvcRepoError: raise UrlNotDvcRepoError(url) except OutputNotFoundError: diff --git a/dvc/repo/imp.py b/dvc/repo/imp.py index d15697dbd..68ead389b 100644 --- a/dvc/repo/imp.py +++ b/dvc/repo/imp.py @@ -1,13 +1,6 @@ -from dvc.config import NoRemoteError -from dvc.exceptions import RemoteNotSpecifiedInTargetRepoError - - def imp(self, url, path, out=None, rev=None): erepo = {"url": url} if rev is not None: erepo["rev"] = rev - try: - return self.imp_url(path, out=out, erepo=erepo, locked=True) - except NoRemoteError: - raise RemoteNotSpecifiedInTargetRepoError(url) + return self.imp_url(path, out=out, erepo=erepo, locked=True)