安全性與衝突
設定採新增方式,不會破壞既有內容。 正常執行寫入任何資料之前,會先規劃每個受管理的檔案。
預覽
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 或並行變更錯誤,已建立的檔案可能會保留,但既有內容仍不會被覆寫。 請檢查回報的計畫、檢視無效檔案,再重新執行設定,以修復其餘缺少的檔案。