From 9f015fac1d9831c6decce55ff520ed8790d96883 Mon Sep 17 00:00:00 2001 From: Ned Letcher Date: Tue, 12 May 2020 01:29:35 +1000 Subject: [PATCH] import: check erepo is None before modifying url - fixes #3780 (#3781) * import: check erepo is None before modifying url - fixes #3780 * import: add test to cover this local import --- dvc/repo/imp_url.py | 8 ++++++-- tests/func/test_import.py | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dvc/repo/imp_url.py b/dvc/repo/imp_url.py index 73420eb62..5320ea354 100644 --- a/dvc/repo/imp_url.py +++ b/dvc/repo/imp_url.py @@ -17,8 +17,12 @@ def imp_url(self, url, out=None, fname=None, erepo=None, locked=True): out = resolve_output(url, out) path, wdir, out = resolve_paths(self, out) - # NOTE: when user is importing something from within his own repository - if os.path.exists(url) and path_isin(os.path.abspath(url), self.root_dir): + # NOTE: when user is importing something from within their own repository + if ( + erepo is None + and os.path.exists(url) + and path_isin(os.path.abspath(url), self.root_dir) + ): url = relpath(url, wdir) stage = create_stage( diff --git a/tests/func/test_import.py b/tests/func/test_import.py index 3eddc1148..6ca40fb3c 100644 --- a/tests/func/test_import.py +++ b/tests/func/test_import.py @@ -342,3 +342,9 @@ def test_import_pipeline_tracked_outs( "file:///{}".format(fspath(tmp_dir)), "bar", out="baz" ) assert (erepo_dir / "baz").read_text() == "foo" + + +def test_local_import(tmp_dir, dvc, scm): + tmp_dir.dvc_gen("foo", "foo", commit="init") + (tmp_dir / "outdir").mkdir() + dvc.imp(".", "foo", out="outdir")