如何将文件添加到 dvc 跟踪文件夹而不提取整个文件夹的内容?

pbb*_*bhu 5 dvc

假设我正在 git/dvc 存储库中工作。有一个data包含100k小文件的文件夹。我按照文档的建议将 DVC 作为单个元素进行跟踪:

dvc add data
Run Code Online (Sandbox Code Playgroud)

因为根据我的经验,DVC 在逐个跟踪这么多文件时有点慢。

我将存储库克隆到另一个工作区,现在我data.dvc在本地拥有该文件,但内部还没有任何实际文件。我想添加一个名为newfile.txtdata文件夹的文件并使用 DVC 跟踪它。有没有办法在不提取本地全部内容的情况下data做到这一点?

我现在尝试过的:

  1. data再次添加文件夹:

    mkdir data
    mv path/to/newfile.txt data/newfile.txt
    dvc add data
    
    Run Code Online (Sandbox Code Playgroud)

    该文件是从仅包含的data.dvc本地状态再次构建的,因此这不起作用。datanewfile.txt

  2. 将文件添加为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)
  3. 按照建议使用 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

Jor*_*nel 2

我将存储库克隆到另一个工作区,现在我在本地拥有 data.dvc 文件,但内部还没有任何实际文件(尚未dvc pull编辑)。我想将文件添加到数据文件夹并使用 DVC 跟踪它。有没有办法在不将数据的全部内容拉到本地的情况下做到这一点?

有趣的问题。我认为现在没有简单的方法可以做到这一点,因为在另一台机器上,如果您dvc add data再次但其中只有一个文件,DVC 会认为您删除了所有其他文件,创建数据目录的新缓存版本(仅包含新文件),并相应地更新 .dvc 文件(正如您所发现的)。

您可以在https://github.com/iterative/dvc.org/issues中提出功能请求。