2

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

dvc add data

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

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

我现在尝试过的:

  1. 再次添加data文件夹:

    mkdir data
    mv path/to/newfile.txt data/newfile.txt
    dvc add data
    

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

  2. 将文件添加为文件夹中的单个元素data

     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'
    
  3. 按照建议使用 dvc commit

     mkdir data
     mv path/to/newfile.txt data/newfile.txt
     dvc commit data.dvc
    

    与 1. 类似,data.dvc从 的本地状态再次重建data

4

1 回答 1

1

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

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

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

于 2021-05-07T01:32:47.010 回答