From 417600749341a5a7bab46dc8858116344bc82efb Mon Sep 17 00:00:00 2001 From: skshetry <18718008+skshetry@users.noreply.github.com> Date: Wed, 8 Feb 2023 17:05:27 +0545 Subject: [PATCH] push: check if versioning is supported or not during checkout on cloud versioning (#8949)Fixes https://github.com/iterative/dvc/issues/8824 * push: check if versioning is supported or not during checkout on cloud versioning * bump dvc-data to 0.38.4 --- dvc/repo/worktree.py | 30 +++++++++++++++++++----------- pyproject.toml | 2 +- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/dvc/repo/worktree.py b/dvc/repo/worktree.py index 154c2ade3..a60baee4b 100644 --- a/dvc/repo/worktree.py +++ b/dvc/repo/worktree.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Set, Tuple, Uni from funcy import first +from dvc.exceptions import DvcException from dvc.fs.callbacks import Callback from dvc.stage.exceptions import StageUpdateError @@ -144,6 +145,7 @@ def push_worktree( ) -> int: from dvc.repo.index import build_data_index from dvc_data.index import checkout + from dvc_data.index.checkout import VersioningNotSupported pushed = 0 stages: Set["Stage"] = set() @@ -176,17 +178,23 @@ def push_worktree( disable=total == 0, ) as cb: cb.set_size(total) - pushed += checkout( - new_index, - remote_obj.path, - remote_obj.fs, - old=old_index, - delete=remote_obj.worktree, - callback=cb, - latest_only=remote_obj.worktree, - jobs=jobs, - **diff_kwargs, - ) + try: + pushed += checkout( + new_index, + remote_obj.path, + remote_obj.fs, + old=old_index, + delete=remote_obj.worktree, + callback=cb, + latest_only=remote_obj.worktree, + jobs=jobs, + **diff_kwargs, + ) + except VersioningNotSupported: + logger.exception("") + raise DvcException( + f"remote {remote_obj.name!r} does not support versioning" + ) from None for out in view.outs: workspace, _key = out.index_key diff --git a/pyproject.toml b/pyproject.toml index e7ab1812c..848acc591 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ dependencies = [ "dvc-render==0.1.1", "dvc-task==0.1.11", "dvclive>=1.2.2", - "dvc-data==0.38.3", + "dvc-data==0.38.4", "dvc-http", "hydra-core>=1.1.0", "iterative-telemetry==0.0.7",