From e1a193f00b312da0943bb775d93ee00d6a13c029 Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Mon, 22 Feb 2021 12:55:00 +0300 Subject: [PATCH] update: forbid updating repo-imports with --to-remote (#5475) --- dvc/stage/imports.py | 7 +++++++ tests/func/test_update.py | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/dvc/stage/imports.py b/dvc/stage/imports.py index 29dc0f987..3a0e90d86 100644 --- a/dvc/stage/imports.py +++ b/dvc/stage/imports.py @@ -1,9 +1,16 @@ import logging +from dvc.exceptions import InvalidArgumentError + logger = logging.getLogger(__name__) def _update_import_on_remote(stage, remote, jobs): + if stage.is_repo_import: + raise InvalidArgumentError( + "Can't update a repo import with --to-remote" + ) + url = stage.deps[0].path_info.url stage.outs[0].hash_info = stage.repo.cloud.transfer( url, jobs=jobs, remote=remote, command="update" diff --git a/tests/func/test_update.py b/tests/func/test_update.py index e2ff7a2ab..d4893e41a 100644 --- a/tests/func/test_update.py +++ b/tests/func/test_update.py @@ -3,6 +3,7 @@ import os import pytest from dvc.dvcfile import Dvcfile +from dvc.exceptions import InvalidArgumentError from tests.unit.fs.test_repo import make_subrepo @@ -317,6 +318,14 @@ def test_update_from_subrepos(tmp_dir, dvc, erepo_dir, is_dvc): } +def test_update_import_to_remote(tmp_dir, dvc, erepo_dir, local_remote): + erepo_dir.scm_gen({"foo": "foo"}, commit="add foo") + stage = dvc.imp(os.fspath(erepo_dir), "foo") + erepo_dir.scm_gen({"foo": "bar"}, commit="update foo") + with pytest.raises(InvalidArgumentError): + dvc.update(stage.path, to_remote=True) + + @pytest.mark.parametrize( "workspace", [