问题描述
假设我在 git/dvc 存储库中工作。有一个文件夹 data
包含 10 万个小文件。我按照文档的建议将 DVC 作为单个元素进行跟踪:
dvc add data
因为根据我的经验,DVC 在一个一个跟踪这么多文件时有点慢。
我将 repo 克隆到另一个工作区,现在我在本地拥有 data.dvc
文件,但其中还没有任何实际文件。我想将名为 newfile.txt
的文件添加到 data
文件夹并使用 DVC 对其进行跟踪。有没有办法做到这一点而无需在本地提取 data
的全部内容?
我目前尝试过的:
-
mkdir data mv path/to/newfile.txt data/newfile.txt dvc add data
data.dvc
文件是从data
的本地状态再次构建的,它只包含newfile.txt
,所以这不起作用。 -
dvc add data/newfile.txt
我明白了:
Cannot add 'data/newfile.txt',because it is overlapping with other DVC tracked output: 'data'. To include 'data/newfile.txt' in 'data',run 'dvc commit data.dvc'
-
按照建议使用 dvc commit
mkdir data mv path/to/newfile.txt data/newfile.txt dvc commit data.dvc
与 1. 类似,从
data.dvc
的本地状态再次重建data
。
解决方法
我将 repo 克隆到另一个工作区,现在我在本地拥有 data.dvc 文件,但里面没有任何实际文件(还没有 dvc pull
ed)。我想将文件添加到数据文件夹并使用 DVC 进行跟踪。有没有办法在不在本地提取数据的全部内容的情况下做到这一点?
有趣的问题。我认为现在没有简单的方法可以做到这一点,因为在另一台机器上,如果您再次 dvc add data
但其中只有一个文件,DVC 会认为您删除了所有其他文件,创建新的数据缓存版本dir(仅包含新文件),并相应地更新 .dvc 文件(如您所见)。
您可以在 https://github.com/iterative/dvc.org/issues 中打开功能请求。