|
ドキュメント
デモを予約プラットフォーム
プラットフォームMCPCLI
APIワークフロー
ガイド変更履歴

概要

  • @lingo.dev/cli

はじめに

  • クイックスタート
  • 設定
  • サンプル

リファレンス

  • lingo push
  • lingo pull
  • lingo purge
  • その他のコマンド

設定

  • キー制御
  • フォーマット
  • ロケール

ガイド

  • ロケールを追加する
  • 既存の翻訳
  • 再翻訳
  • 翻訳メモ
  • 実行、状態、復旧
  • CI/CD
  • モノレポ
  • 大規模プロジェクト

旧CLI(v0)をお探しですか? 旧CLIのドキュメントを見る

lingo pull

直近の push の出力を取得し、lockfile との競合を検出しながらディスクに書き込みます。

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

使うタイミング#

lingo push は実行完了時に出力を書き込むため、pull が役立つのは、同期的に待たなかった、または待てなかった場合に限られます。

  • 翻訳の途中でターミナルを閉じてしまった場合。 ターミナルを開き直して lingo pull を実行すれば、実行が止まったところから続きます。
  • 別のマシンから pull する場合。 翻訳者がノートPCで push を実行し、CI やチームメイトが同じ checkout、同じエンジン、同じ認証情報で pull を実行すると、出力を取得できます。
  • 実行完了後、push が書き込む前に作業へ戻った場合。 一時的なネットワーク障害やプロセスの強制終了があっても、pull が残りの処理を完了します。

実行の見つけ方#

pull は ~/.lingo/runs/<hash>.json を読み込みます。ここで <hash> は、プロジェクトルートの絶対パスから導出されます。このファイルには、runId の最後の push が記録されています。これがない場合、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 は次の 2 つを比較します。

  • ディスク上のローカルファイル のハッシュ
  • .lingo/lock.json に最後にサーバー上のバージョンとして記録されたハッシュ

一致していれば → ローカルでの編集はなく、安全に上書きできます。異なっていれば → ローカル編集があり、pull するとそれらは失われます。その場合、pull は中断します。

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

ここでの唯一の信頼できる情報源は lockfile です。追跡しているのはソースコンテンツではなく、サーバーが最後に書き込んだ内容です。残したい翻訳ファイルへの手動編集はコミットしておく(そうすれば pull を実行しても残る)か、--force を付けて pull する(そうすれば上書きされる)必要があります。

フラグ#

--force / -f#

lockfile と差異のあるローカルのターゲットファイルを上書きします。競合をレビューし、サーバー側のバージョンを正と判断したうえで使ってください(例: 他の誰かが glossary の更新を push しており、そちらを優先すべき場合)。

推奨ワークフロー:

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 は実行中の run が終わるまで待機しません。あとで再実行するか、次回は待機する push を使ってください。)

エッジケース#

  • これまでに push が一度もない場合。 上記と同様にエラーになります。「サーバー上のどこかにある翻訳を pull する」という概念はありません。pull は常に特定の run を対象にします。
  • 削除済みまたは期限切れの run を指している実行状態。 エンジンは 404 を返し、pull はそれを分かりやすく報告します。~/.lingo/runs/<hash>.json を削除し、push を再実行してください。
  • .lingo/config.json のエンジンが、その run を作成したときのものと異なる場合。 エンジン ID が一致していないため、CLI は ID を表示してエラーにします。現在のエンジンに対して push を再実行してください。

このページは役に立ちましたか?

Max PrilutskiyMax Prilutskiy·更新済み 19日前·1分で読めます