跳至內容
瀏覽文件

安全性與衝突

設定採新增方式,不會破壞既有內容。 正常執行寫入任何資料之前,會先規劃每個受管理的檔案。

預覽

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

結果會為每個受管理路徑指派一種狀態:

  • create — 檔案不存在,將會建立
  • preserve — 解析後的 JSON 已等於預期值
  • conflict — 無法安全地重用或建立目的位置

試跑會驗證並傳回此計畫,不會寫入。 即使有檔案預計建立,其 changed 值仍為 false。

保留與衝突

JSON 比較會忽略空白和物件鍵順序。 相符的檔案會逐位元組保留,包括格式和時間戳記。 既有檔案絕不會被覆寫。

衝突包括:

  • 格式錯誤或截斷的 JSON
  • 一般檔案的解析值與要求的專案或內建結構定義不同
  • 不支援的協定版本
  • 目的位置不是一般檔案
  • 必要的上層路徑不是目錄
  • 受管理路徑任何位置存在符號連結
  • 既有專案的整合設定已變更

若預先檢查發現任何衝突,即使其他受管理檔案缺失,設定也不會寫入任何內容。 請手動檢視每個檔案的原因。

舊的 .drifts/execution 路徑一律視為衝突。 0.1.0 版使用 .drifts/loop,不會遷移、重新命名、合併或移除舊配置。

寫入與重新執行

缺少的檔案會以排他方式建立,且不跟隨符號連結。 若目的位置在預先檢查後出現,且解析內容相符,設定便會保留它;否則會以 SETUP_CONCURRENT_CHANGE 失敗。

沒有變更的重新執行只會回報 preserve,並傳回 changed: false。 缺少的必要結構定義會在後續安全執行時重新建立。

寫入序列不是檔案系統交易。 若在建立一個或多個檔案後發生 I/O 或並行變更錯誤,已建立的檔案可能會保留,但既有內容仍不會被覆寫。 請檢查回報的計畫、檢視無效檔案,再重新執行設定,以修復其餘缺少的檔案。

在 GitHub 編輯此頁