diff --git a/dvc/repo/tree.py b/dvc/repo/tree.py index b1fb1192c..7b6dd29a3 100644 --- a/dvc/repo/tree.py +++ b/dvc/repo/tree.py @@ -404,10 +404,8 @@ class RepoTree(BaseTree): for root, _, files in self.walk(top): root = PathInfo(root) - dest_dir = root.relative_to(top) - makedirs(dest_dir, exist_ok=True) + makedirs(dest, exist_ok=True) for fname in files: src = root / fname - dest = dest_dir / fname with self.open(src, mode="rb") as fobj: - copy_fobj_to_file(fobj, dest) + copy_fobj_to_file(fobj, dest / fname) diff --git a/tests/func/test_get.py b/tests/func/test_get.py index 232a0d6ab..20ff9f9d6 100644 --- a/tests/func/test_get.py +++ b/tests/func/test_get.py @@ -33,7 +33,9 @@ def test_get_repo_dir(tmp_dir, erepo_dir): trees_equal(erepo_dir / "dir", "dir_imported") -def test_get_git_file(tmp_dir, erepo_dir): +@pytest.mark.parametrize("repo_type", ["git_dir", "erepo_dir"]) +def test_get_git_file(request, tmp_dir, repo_type): + erepo_dir = request.getfixturevalue(repo_type) src = "some_file" dst = "some_file_imported" @@ -45,7 +47,9 @@ def test_get_git_file(tmp_dir, erepo_dir): assert (tmp_dir / dst).read_text() == "hello" -def test_get_git_dir(tmp_dir, erepo_dir): +@pytest.mark.parametrize("repo_type", ["git_dir", "erepo_dir"]) +def test_get_git_dir(request, tmp_dir, repo_type): + erepo_dir = request.getfixturevalue(repo_type) src = "some_directory" dst = "some_directory_imported"