本文へ移動
ドキュメントを探す

安全性と競合

セットアップは追加型で、既存内容を破壊しません。 通常実行で何かを書き込む前に、管理するすべてのファイルを計画します。

プレビュー

langdrift setup \
  --root /path/to/product \
  --project-id proj_example \
  --account-id acc_example \
  --name 'Example Product' \
  --dry-run \
  --json

結果は、管理対象の各パスに 1 つの状態を割り当てます。

  • create — ファイルが存在せず、作成される予定
  • preserve — 解析した JSON が、すでに期待する値と等しい
  • conflict — 出力先を安全に再利用または作成できない

ドライランは書き込まずに計画を検証して返します。 作成予定のファイルがある場合も、changed の値は false です。

保持と競合

JSON の比較では、空白とオブジェクトのキー順序を無視します。 一致するファイルは、書式とタイムスタンプを含めてバイト単位でそのまま保持します。 既存ファイルを上書きすることはありません。

次の状態は競合です。

  • 不正または途中で切れた JSON
  • 解析値が、指定したプロジェクトや同梱スキーマと異なる通常ファイル
  • 未対応のプロトコルバージョン
  • 通常ファイルではない出力先
  • ディレクトリでなければならない親が、ディレクトリではない
  • 管理対象パス内のいずれかの場所にシンボリックリンクがある
  • 既存プロジェクトの連携設定の変更

事前確認で 1 つでも競合が見つかると、他の管理ファイルが不足していても、セットアップは一切書き込みません。 ファイルごとの理由を手動で確認してください。

旧形式の .drifts/execution パスは常に競合になります。 バージョン 0.1.0 は .drifts/loop を使い、旧レイアウトの移行、名前変更、統合、削除は行いません。

書き込みと再実行

不足するファイルは、シンボリックリンクをたどらず排他的に作成します。 事前確認後に出力先が現れた場合、解析した内容が一致すれば保持します。 一致しない場合は SETUP_CONCURRENT_CHANGE で失敗します。

変更のない再実行は preserve だけを報告し、changed: false を返します。 不足する必須スキーマは、後の安全な実行で再作成されます。

書き込みシーケンスは、ファイルシステムのトランザクションではありません。 1 つ以上のファイルを作成した後に I/O や同時変更のエラーが発生すると、それらのファイルが残る場合があります。 それでも既存内容は上書きされません。 報告された計画を確認し、不正なファイルを調べ、セットアップを再実行して残りの不足ファイルを修復してください。

GitHub でこのページを編集