是否可以在不拉取文件的情况下检查 DVC 元数据文件跟踪的文件版本是否存在于远程存储中?

emc*_*rds 7 git continuous-integration gitlab dvc

我的团队有一个设置,其中我们跟踪 DVC 中的数据集和模型,并有一个 GitLab 存储库用于跟踪我们的代码和 DVC 元数据文件。我们的开发 GitLab 管道中有一项工作(在每次推送合并请求时运行),其目标是检查以确保开发人员记得运行dvc push以保持 DVC 远程存储最新。目前,我们执行此操作的方法是dvc pull在 GitLab 运行程序上运行,该运行程序将失败并显示错误,告诉您未找到哪些文件(新文件或现有文件的最新版本)。

这种方法的缺点是,我们将存储在 DVC 中的全部数据加载到 GitLab 运行器上,并且我们遇到了内存不足的问题,更不用说下载所有数据的运行时间很长了。由于对象的路径和 md5 哈希存储在 DVC 元数据文件中,我认为这就是 DVC 需要能够回答“远程存储系统是否是最新的”问题的所有信息。

看起来dvc status与我所要求的类似,但比较了缓存或工作区和远程存储。换句话说,它要求文件实际存在于进行调用的任何文件系统上。

有没有什么方法可以实现我上面列出的目标(“通知开发人员他们需要运行dvc push”)而不从 DVC 中提取所有内容?

Jor*_*nel 6

看来 dvc 状态与我要求的类似

dvc status --cloud如果尚未将其推送到(默认)远程,则会为您提供“新”文件的列表。但它不会出错,因此您的 CI 脚本应该会失败,具体取决于标准输出消息。

更多信息: https: //dvc.org/doc/command-reference/status#options

我还要求每个人运行dvc install,这将设置一些 Git 挂钩,包括自动dvc pushgit push.

请参阅https://dvc.org/doc/command-reference/install