是否可以在不提取文件的情况下检查远程存储中是否存在 DVC 元数据文件跟踪的文件版本?
Is it possible to check that the version of a file tracked by a DVC metadata file exists in remote storage without pulling the file?
我的团队有一个设置,我们在其中跟踪 DVC 中的数据集和模型,并有一个 GitLab 存储库来跟踪我们的代码和 DVC 元数据文件。我们在开发 GitLab 管道中有一项工作(每次推送合并请求时 运行),其目标是检查以确保开发人员记得 运行 dvc push
以保留 DVC远程存储是最新的。现在,我们执行此操作的方法是在 GitLab 运行ner 上使用 运行ning dvc pull
,这将失败并显示错误告诉您哪些文件(新文件或现有文件的最新版本)未找到。
这种方法的缺点是我们将存储在 DVC 中的全部数据加载到 GitLab 运行ner 上,并且我们 运行 遇到内存不足的问题,更不用说下载所有数据的漫长 运行 时间了。由于对象的路径和 md5 哈希存储在 DVC 元数据文件中,我认为这就是 DVC 需要能够回答“远程存储系统是最新的”这个问题的所有信息。
似乎 dvc status
与我要求的类似,但比较了缓存或工作区和远程存储。换句话说,它要求文件实际存在于进行调用的任何文件系统上。
有没有什么方法可以实现我上面提出的目标(“通知开发人员他们需要 运行 dvc push
”)而不需要从 DVC 中提取所有内容?
It seems like dvc status is similar to what I'm asking for
dvc status --cloud
将为您提供尚未推送到(默认)远程的“新”文件列表。不过它不会出错,因此您的 CI 脚本应该会失败,具体取决于标准输出消息。
更多信息:https://dvc.org/doc/command-reference/status#options
我还请大家 运行 dvc install
,这将设置一些 Git 挂钩,包括自动 dvc push
和 git push
。
我的团队有一个设置,我们在其中跟踪 DVC 中的数据集和模型,并有一个 GitLab 存储库来跟踪我们的代码和 DVC 元数据文件。我们在开发 GitLab 管道中有一项工作(每次推送合并请求时 运行),其目标是检查以确保开发人员记得 运行 dvc push
以保留 DVC远程存储是最新的。现在,我们执行此操作的方法是在 GitLab 运行ner 上使用 运行ning dvc pull
,这将失败并显示错误告诉您哪些文件(新文件或现有文件的最新版本)未找到。
这种方法的缺点是我们将存储在 DVC 中的全部数据加载到 GitLab 运行ner 上,并且我们 运行 遇到内存不足的问题,更不用说下载所有数据的漫长 运行 时间了。由于对象的路径和 md5 哈希存储在 DVC 元数据文件中,我认为这就是 DVC 需要能够回答“远程存储系统是最新的”这个问题的所有信息。
似乎 dvc status
与我要求的类似,但比较了缓存或工作区和远程存储。换句话说,它要求文件实际存在于进行调用的任何文件系统上。
有没有什么方法可以实现我上面提出的目标(“通知开发人员他们需要 运行 dvc push
”)而不需要从 DVC 中提取所有内容?
It seems like dvc status is similar to what I'm asking for
dvc status --cloud
将为您提供尚未推送到(默认)远程的“新”文件列表。不过它不会出错,因此您的 CI 脚本应该会失败,具体取决于标准输出消息。
更多信息:https://dvc.org/doc/command-reference/status#options
我还请大家 运行 dvc install
,这将设置一些 Git 挂钩,包括自动 dvc push
和 git push
。