在 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: foo
dvc status
会检测到 foo
已发生变化。现在我们将 make_copy
阶段冻结,并查看项目状态的变化:
$ dvc freeze make_copy
$ dvc status
foo.dvc:
changed outs:
modified: foo
DVC 由于跟踪该文件的 foo.dvc
文件(作为 outs
)而知道 foo
已更改,但 make_copy
阶段不再将其依赖项(deps
)中的变更记录在内。
你可以使用
dvc unfreeze
恢复到正常的项目状态。