dotweave push
トラッキング項目のローカルファイルを同期ディレクトリに反映し、secret 対象は書き込む前に暗号化します。
使い方
dotweave push [--dry-run] [--profile <profile>] [--with-git] [--message <message>]
トラッキング項目のローカルパスの現在の状態を読み取り、profiles/<profile>/ 配下の artifact をその状態に合わせて書き直します。
フラグ
| フラグ | 型と既定値 | 用途 |
|---|---|---|
--dry-run | boolean、manifest または false | 何も書き込まず計画だけを表示します。manifest の既定値が true の場合は --no-dry-run で上書きできます。 |
--profile | string、manifest またはなし | settings.jsonc のアクティブなプロファイルの代わりに登録済みプロファイルを使います。 |
--with-git | boolean、manifest または false | 更新した artifact をコミットして git リモートへ push します。manifest の既定値が true の場合は --no-with-git で上書きできます。 |
--message、-m | 空でない string、manifest または自動生成 | --with-git で使うコミットメッセージを指定します。前後の空白は取り除きます。 |
動作
リポジトリ形式のマイグレーションは計画よりも先に実行されるため、計画はマイグレーション後の状態を反映します。この処理はリポジトリに書き込むので、--dry-run では省略されます。
push は書き込む前に内容を比較するため、変更のないファイルは一切書き込みません。secret 項目では保存された暗号文を復号して平文どうしを比較します。そのため内容が同じシークレットは再暗号化されず、git の履歴に無意味な差分が積み上がりません。
書き込みは決まった順序で進みます。管理 .gitignore ブロックを更新し、不要になった置き換え用ディレクトリのルートを削除し、不要になった artifact キーを削除してから artifact を書き込みます。別プラットフォームの override や別プロファイルが所有する artifact は保護されるので、ある端末から push しても別の端末が保存した内容は消えません。
dotweave push
· Pushing changes...
✔ Push complete
plain: 2
encrypted: 1
symlinks: 0
dirs: 1
0 stale artifacts removed
dry run でも同じ件数を表示します。プレビューであることを示すため、結果の行と stale artifact の行だけ表現が変わります。
dotweave push --dry-run
· Pushing changes...
~ Push preview (dry run)
plain: 2
encrypted: 1
symlinks: 0
dirs: 1
0 stale artifacts would be removed
--with-git を使うと、更新した同期ディレクトリをコミットして設定済みリモートへ push します。自動生成されるコミットメッセージは dotweave: sync configuration です。--dry-run ではすべての git 操作を省略します。コマンドラインフラグは manifest.jsonc の既定値より優先されます。
エラー
push は、同期ディレクトリが git のワークツリーでない場合、manifest.jsonc が存在しない・読み取れない・妥当でない場合に失敗します。未適用のリポジトリ形式マイグレーションを完了できない場合、および保存された artifact がトラッキング項目と食い違う場合にも失敗します。secret 項目の artifact が暗号化されずに保存されているケースがその一例です。各メッセージと対処はエラーメッセージのパスと artifact の節を参照してください。
関連コマンド
同じ計画を書き込みなしで確認するには dotweave status、両方向が共有するスナップショットの考え方は同期のしくみを参照してください。