在 GitHub 上编辑
freeze
冻结指定的 阶段,直到对其使用 dvc unfreeze 为止。被冻结的阶段永远不会被 dvc repro 执行。
概要
usage: dvc freeze [-h] [-q | -v] targets [targets ...]
positional arguments:
targets Stages or .dvc files to freeze描述
使用 dvc freeze 后,作为 targets 指定的 阶段 将被 dvc status 和 dvc repro 视为“未更改”。即使这些阶段的 依赖项 发生了变化,甚至使用了 --force 选项,阶段的重新生成也不会更新其 输出。
冻结某个阶段有助于避免从其 管道 顶端同步数据,从而可以专注于迭代最后面(非冻结)的阶段。
请注意,默认情况下 导入阶段 是处于冻结状态的。请使用 dvc update 将导入内容从数据源更新至最新。如果某个管道需要这些导入阶段的输出,请先将其 解冻,然后再运行 dvc repro。
选项
-
-h,--help- 打印使用说明/帮助信息,然后退出。 -
-q,--quiet- 不向标准输出写入任何内容。如果没有问题则以 0 退出,否则以 1 退出。 -
-v,--verbose- 显示详细的跟踪信息。
示例
首先,我们创建一个简单的阶段,将文件 foo 复制为 bar:
$ echo foo > foo
$ dvc add foo
$ dvc stage add -n make_copy -d foo -o bar cp foo bar更多细节请参见
dvc stage add。
然后,修改阶段 make_copy 所依赖的文件 foo:
$ echo zoo > foo
$ dvc status
make_copy:
changed deps:
modified: foo
foo.dvc:
changed outs:
modified: foodvc status 会检测到 foo 已发生变化。现在我们将 make_copy 阶段冻结,并查看项目状态的变化:
$ dvc freeze make_copy
$ dvc status
foo.dvc:
changed outs:
modified: fooDVC 由于跟踪该文件的 foo.dvc 文件(作为 outs)而知道 foo 已更改,但 make_copy 阶段不再将其依赖项(deps)中的变更记录在内。
你可以使用
dvc unfreeze恢复到正常的项目状态。