我的团队有一个设置,我们在其中跟踪 DVC 中的数据集和模型,并有一个 GitLab 存储库来跟踪我们的代码和 DVC 元数据文件。我们在我们的开发 GitLab 管道中有一项工作(在每次推送到合并请求时运行),其目标是检查以确保开发人员记得运行dvc push
以使 DVC 远程存储保持最新。现在,我们这样做的方式是dvc pull
在 GitLab 运行器上运行,它会失败并显示错误,告诉您哪些文件(新文件或现有文件的最新版本)没有找到。
这种方法的缺点是我们将存储在 DVC 中的全部数据加载到 GitLab 运行器上,并且我们遇到了内存不足的问题,更不用说下载所有数据的运行时间很长了。由于对象的路径和 md5 哈希存储在 DVC 元数据文件中,我认为这就是 DVC 需要能够回答“远程存储系统是最新的”问题所需的所有信息。
它似乎dvc status
与我要求的相似,但比较了缓存或工作区和远程存储。换句话说,它要求文件实际存在于进行调用的任何文件系统上。
是否有某种方法可以实现我上面提出的目标(“通知开发人员他们需要运行dvc push
”)而不从 DVC 中提取所有内容?