get/import: handle NoRepoError with external_repo

This commit is contained in:
Paweł Redzyński
2019-11-12 13:23:14 +01:00
parent deba7e95da
commit 76fb661655
4 changed files with 9 additions and 15 deletions
+2 -2
View File
@@ -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)
)
+6 -1
View File
@@ -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()
-4
View File
@@ -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:
+1 -8
View File
@@ -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)