在 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 statusdvc 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 恢复到正常的项目状态。

内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天