diff --git a/dvc/remote/base.py b/dvc/remote/base.py index 56ff49a6b..73d0710ac 100644 --- a/dvc/remote/base.py +++ b/dvc/remote/base.py @@ -379,6 +379,7 @@ class RemoteBASE(object): link_method = getattr(self, link_types[0]) try: self._do_link(from_info, to_info, link_method) + self.cache_type_confirmed = True return except DvcException as exc: diff --git a/dvc/remote/local/__init__.py b/dvc/remote/local/__init__.py index 59b201470..3a4192721 100644 --- a/dvc/remote/local/__init__.py +++ b/dvc/remote/local/__init__.py @@ -115,143 +115,6 @@ class RemoteLOCAL(RemoteBASE): def makedirs(self, path_info): makedirs(path_info, exist_ok=True, mode=self._dir_mode) -<<<<<<< HEAD -||||||| merged common ancestors - def link(self, from_info, to_info): - self._link(from_info, to_info, self.cache_types) - - def _link(self, from_info, to_info, link_types): - from_path = from_info.fspath - to_path = to_info.fspath - - assert os.path.isfile(from_path) - - dname = os.path.dirname(to_path) - if not os.path.exists(dname): - os.makedirs(dname) - - # NOTE: just create an empty file for an empty cache - if os.path.getsize(from_path) == 0: - open(to_path, "w+").close() - - msg = "Created empty file: {} -> {}".format(from_path, to_path) - logger.debug(msg) - return - - self._try_links(from_info, to_info, link_types) - - @classmethod - def _get_link_method(cls, link_type): - try: - return cls.CACHE_TYPE_MAP[link_type] - except KeyError: - raise DvcException( - "Cache type: '{}' not supported!".format(link_type) - ) - - def _do_link(self, from_info, to_info, link_method): - if self.exists(to_info): - raise DvcException("Link '{}' already exists!".format(to_info)) - else: - link_method(from_info.fspath, to_info.fspath) - - if self.protected: - self.protect(to_info) - - msg = "Created {}'{}': {} -> {}".format( - "protected " if self.protected else "", - self.cache_types[0], - from_info, - to_info, - ) - logger.debug(msg) - - @slow_link_guard - def _try_links(self, from_info, to_info, link_types): - i = len(link_types) - while i > 0: - link_method = self._get_link_method(link_types[0]) - try: - self._do_link(from_info, to_info, link_method) - return - - except DvcException as exc: - msg = "Cache type '{}' is not supported: {}" - logger.debug(msg.format(link_types[0], str(exc))) - del link_types[0] - i -= 1 - - raise DvcException("no possible cache types left to try out.") - -======= - def link(self, from_info, to_info): - self._link(from_info, to_info, self.cache_types) - - def _link(self, from_info, to_info, link_types): - from_path = from_info.fspath - to_path = to_info.fspath - - assert os.path.isfile(from_path) - - dname = os.path.dirname(to_path) - if not os.path.exists(dname): - os.makedirs(dname) - - # NOTE: just create an empty file for an empty cache - if os.path.getsize(from_path) == 0: - open(to_path, "w+").close() - - msg = "Created empty file: {} -> {}".format(from_path, to_path) - logger.debug(msg) - return - - self._try_links(from_info, to_info, link_types) - - @classmethod - def _get_link_method(cls, link_type): - try: - return cls.CACHE_TYPE_MAP[link_type] - except KeyError: - raise DvcException( - "Cache type: '{}' not supported!".format(link_type) - ) - - def _do_link(self, from_info, to_info, link_method): - if self.exists(to_info): - raise DvcException("Link '{}' already exists!".format(to_info)) - else: - link_method(from_info.fspath, to_info.fspath) - - if self.protected: - self.protect(to_info) - - msg = "Created {}'{}': {} -> {}".format( - "protected " if self.protected else "", - self.cache_types[0], - from_info, - to_info, - ) - logger.debug(msg) - - @slow_link_guard - def _try_links(self, from_info, to_info, link_types): - i = len(link_types) - while i > 0: - link_method = self._get_link_method(link_types[0]) - try: - self._do_link(from_info, to_info, link_method) - self.cache_type_confirmed = True - return - - except DvcException as exc: - msg = "Cache type '{}' is not supported: {}" - logger.debug(msg.format(link_types[0], str(exc))) - del link_types[0] - i -= 1 - - raise DvcException("no possible cache types left to try out.") - ->>>>>>> master def already_cached(self, path_info): assert path_info.scheme in ["", "local"]