4

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

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

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

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

4

1 回答 1

3

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

于 2021-05-29T03:09:19.210 回答