假设我正在 git/dvc 存储库中工作。有一个data包含100k小文件的文件夹。我按照文档的建议将 DVC 作为单个元素进行跟踪:
dvc add data
Run Code Online (Sandbox Code Playgroud)
因为根据我的经验,DVC 在逐个跟踪这么多文件时有点慢。
我将存储库克隆到另一个工作区,现在我data.dvc在本地拥有该文件,但内部还没有任何实际文件。我想添加一个名为newfile.txt该data文件夹的文件并使用 DVC 跟踪它。有没有办法在不提取本地全部内容的情况下data做到这一点?
我现在尝试过的:
data再次添加文件夹:
mkdir data
mv path/to/newfile.txt data/newfile.txt
dvc add data
Run Code Online (Sandbox Code Playgroud)
该文件是从仅包含的data.dvc本地状态再次构建的,因此这不起作用。datanewfile.txt
将文件添加为data文件夹中的单个元素:
dvc add data/newfile.txt
Run Code Online (Sandbox Code Playgroud)
我得到:
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'
Run Code Online (Sandbox Code Playgroud)
按照建议使用 dvc commit
mkdir data
mv path/to/newfile.txt data/newfile.txt
dvc commit data.dvc
Run Code Online (Sandbox Code Playgroud)
与 1. 类似, 是data.dvc从 的本地状态再次重建的data。
我将存储库克隆到另一个工作区,现在我在本地拥有 data.dvc 文件,但内部还没有任何实际文件(尚未
dvc pull编辑)。我想将文件添加到数据文件夹并使用 DVC 跟踪它。有没有办法在不将数据的全部内容拉到本地的情况下做到这一点?
有趣的问题。我认为现在没有简单的方法可以做到这一点,因为在另一台机器上,如果您dvc add data再次但其中只有一个文件,DVC 会认为您删除了所有其他文件,创建数据目录的新缓存版本(仅包含新文件),并相应地更新 .dvc 文件(正如您所发现的)。
您可以在https://github.com/iterative/dvc.org/issues中提出功能请求。