|
文档
预约演示平台
平台MCPCLI
API工作流
指南更新日志

概览

  • @lingo.dev/cli

快速开始

  • 快速上手
  • 配置

参考

  • lingo push
  • lingo pull
  • 其他命令
  • lingo purge

配置

  • 键级控制
  • 格式
  • Locale

指南

  • 添加语言
  • 现有翻译
  • 重新翻译
  • 翻译备注
  • 运行、状态与恢复
  • CI/CD
  • Monorepo
  • 大型项目

在找旧版 CLI(v0)? 查看旧版 CLI 文档

lingo pull

获取最近一次 push 的输出结果并写入磁盘,同时基于 lockfile 进行冲突检测。

text
lingo pull [--force] [--dry-run]

适用场景#

lingo push 会在运行完成后直接写入输出——所以只有在你没有(或无法)同步等待时,pull 才派得上用场:

  • 翻译过程中关掉了终端。 重新打开后运行 lingo pull——它会从上次运行停下的地方接着继续。
  • 在另一台机器上拉取。 译者在自己的笔记本上运行 push;CI / 团队成员在相同的检出目录、相同的引擎和相同的凭据下运行 pull,就能拿到输出结果。
  • 运行已完成,但 push 还没来得及写入时又恢复了工作。 比如网络短暂抖动、进程被杀掉——pull 可以把剩下的工作补完。

如何定位这次运行#

pull 会读取 ~/.lingo/runs/<hash>.json,其中 <hash> 是根据项目根目录的绝对路径推导出来的。这个文件会记录来自 push 的最近一次 runId。如果没有它,pull 会直接报错:

text
Error: No run state at ~/.lingo/runs/<hash>.json — run `lingo push` first so we
       know which run's outputs to pull.

这个文件按机器区分,存放在仓库之外(原因详见 Configuration)。

冲突检测#

在写入每个目标文件之前,pull 会比较:

  • 磁盘上的本地文件 哈希值
  • 记录在 .lingo/lock.json 中、作为最近一次已知服务器版本的哈希值

如果两者一致 → 说明本地没有修改,可以安全覆盖。如果两者不同 → 说明本地存在修改;执行 pull 会丢失这些改动。此时 pull 会中止:

text
Error: 3 conflict(s) — rerun with --force

这里唯一的事实来源是 lockfile——它记录的是服务器上次写入的内容,而不是源文件内容。对于你希望保留的译文文件手动修改,要么提交到版本控制中(这样它们就不会被 pull 覆盖),要么用 --force 拉取(这样它们会被覆盖)。

参数#

--force / -f#

覆盖那些相对于 lockfile 已发生偏离的本地目标文件。请在你审查完冲突并确认应以服务器版本为准后再使用(例如,其他人推送了应优先采用的术语表更新)。

推荐工作流:

bash
git status                          # stash or commit local edits first
git stash                           # if you want to keep them aside
lingo pull --force
git stash pop                       # re-apply your edits, resolve conflicts manually

--dry-run#

显示 pull 会执行哪些操作,但不会实际改动文件系统:

bash
lingo pull --dry-run

会输出将要写入的文件数量,以及其中已有多少文件处于同步状态。这在 CI 中很实用,可用于断言没有任何内容发生漂移。

输出#

成功:

text
✓ Pulled run run_a8c...: wrote 12 file(s), 4 already in sync.

试运行:

text
Dry run complete. 16 file(s) already in sync.

运行尚未完成:

text
Run run_a8c... is running, not pulling yet.

(pull 不会阻塞等待仍在进行中的运行——稍后再重新执行即可,或者下次改用会等待完成的 push。)

边界情况#

  • 此前没有 push。 会像上面一样报错。这里不存在“拉取服务器上某处已有的翻译”这种概念——pull 始终针对某一次特定运行。
  • 运行状态指向一个已删除或已过期的运行。 引擎会返回 404;pull 会清楚地报告这个问题。删除 ~/.lingo/runs/<hash>.json,然后重新运行 push。
  • .lingo/config.json 中使用的引擎与创建该运行时使用的引擎不同。 这会导致引擎 ID 不匹配——CLI 会在报错信息中显示相关 ID。请针对当前引擎重新运行 push。

这个页面对你有帮助吗?

Max PrilutskiyMax Prilutskiy·已更新 5 天前·1 分钟阅读