DotweaveDotweave
ドキュメントGitHub
DotweaveDotweave
    • はじめに
    • dotweave をインストールする
    • 最初の同期を設定する
    • 2 台目のデバイスを設定する
    • 同期のしくみ
    • ディレクトリとリポジトリの構造
    • 同期モード
    • プロファイル
    • プラットフォーム別パス
    • シークレットと暗号化
    • ファイルとディレクトリのトラッキング
    • 日々の push とコミットの流れ
    • 複数デバイスの同期を保つ
    • シェル補完を有効にする
    • エージェントスキルをインストールする
    • 設定とリポジトリ形式のアップグレード
    • 同期の問題を解決する
    • dotweave init
    • dotweave track
    • dotweave push
    • dotweave pull
    • dotweave status
    • dotweave untrack
    • dotweave cd
    • dotweave profile
    • dotweave doctor
    • dotweave autocomplete
    • dotweave skill
    • manifest.jsonc
    • settings.jsonc
    • 環境変数とパス
    • エラーメッセージ
ドキュメントGitHub
  1. Dotweave/
  2. ディレクトリとリポジトリの構造

ディレクトリとリポジトリの構造

dotweave がアプリデータディレクトリをどこに置くか、同期リポジトリの中に何があるか、artifact のサフィックスがファイル種別をどう表すかをまとめます。

dotweave ホームディレクトリを見つける

dotweave が管理するものは、すべて 1 つのディレクトリの下にあります。macOS、Linux、WSL では既定で $XDG_CONFIG_HOME/dotweave、未設定なら ~/.config/dotweave になります。Windows では既定で %APPDATA%\dotweave です。DOTWEAVE_HOME を設定すると、すべてのプラットフォームでこの選択を上書きします。

フォールバックの全順序は環境変数とパスを参照してください。

この中には 3 つのものがあり、下のツリーにすべて出ています。

  • <dotweave-home>/
    • settings.jsonc
    • keys.txt
    • repository/
      • .git/
        • …
      • .gitattributes
      • .gitignore
      • manifest.jsonc
      • profiles/
        • default/
          • .gitconfig
          • .config/
            • nvim/
              • init.lua
          • .ssh/
            • config.dotweave.secret
        • work/
          • .config/
            • work-tool/
              • config.json

settings.jsonc はこのマシンが使うプロファイルを記録します。keys.txt は age の秘密鍵を保持します。repository/ が同期ディレクトリで、git が追跡するのはこの部分だけです。

keys.txt は意図的に repository/ の外にあるため、コミットされることはありません。dotweave がトラッキングを拒否する唯一のファイルでもあります。必要になる前に別の場所へバックアップしてください。

同期ディレクトリの中

repository/ は普通の git リポジトリです。dotweave はそのルートに 4 つのものを書き込み、それ以外には手を触れません。

manifest.jsonc はトラッキング項目の一覧で、フィールドごとの説明は manifest.jsonc にあります。.gitattributes には * -text が入っており、git が設定ファイルの改行を書き換えないようにします。.gitignore には暗号化された artifact をコミット可能に保つ管理ブロックがあり、init と push のたびに再生成されます。

# BEGIN dotweave managed secret artifact rules
!profiles/
!profiles/**/
!profiles/**/*.dotweave.secret
!profiles/**/*.dotweave.symlink
# END dotweave managed secret artifact rules

リポジトリのルートに自分で追加したものは、管理ブロックの外に書いた .gitignore のルールも含めてそのまま残ります。

profiles 配下の artifact

トラッキング対象の内容は profiles/<profile>/<repoPath> に保存されます。profiles というディレクトリ名は予約されているため、プロファイル名を profiles にはできません。

パスはホームディレクトリをそのまま反映します。トラッキングした ~/.ssh/config は、repoPath を上書きしない限りプロファイルディレクトリ内で .ssh/config になります。

保存されたファイルのサフィックスが、元が何であったかを表します。

保存名元のもの内容
<name>normal モードの通常ファイルバイト列そのままです。
<name>.dotweave.secretsecret モードの通常ファイル-----BEGIN AGE ENCRYPTED FILE----- で始まる ASCII armor 形式の age 暗号文です。
<name>.dotweave.symlinkシンボリックリンクPOSIX のリンク先を保持する通常ファイルです。

この 2 つのサフィックスには意味があるため、トラッキング対象パスのどのセグメントもこれらで終わってはいけません。

プロファイルに割り当てられた項目は、そのプロファイルのディレクトリ配下に入ります。それ以外はすべて default/ の下に入ります。dotweave はほかのプロファイルのディレクトリを削除しないため、1 つのリポジトリがすべてのマシンの設定を並べて保持します。

dotweave が git のために管理するファイル

dotweave は git が正しく振る舞うようにリポジトリを整えますが、git をデータベースとしては使いません。

同期ディレクトリがワークツリーかを確認するために git rev-parse、dotweave init の中で git init または git clone、artifact が不要かを判断する前にコミット済みのプロファイルを調べるために git show HEAD:manifest.jsonc を実行します。コミット、ステージング、fetch、push は行いません。

シンボリックリンクを実体ではなくメタデータファイルとして保存するため、Windows で開発者モードがなくてもリポジトリは同じように clone され、git の差分にはリンク先がテキストとして表示されます。

実装とリファレンス

これらのパスを生む項目フィールドは manifest.jsonc、サフィックスを決めるしくみは同期モードを参照してください。

← 前へコンセプト同期のしくみpush と pull のパイプライン、dotweave が git を代わりに実行しない理由、dry run が報告する内容を説明します。→ 次へコンセプト同期モードnormal、secret、ignore が push で保存される内容と pull で復元される内容をどう変えるかを説明します。

このページの内容

  1. dotweave ホームディレクトリを見つける
  2. 同期ディレクトリの中
  3. profiles 配下の artifact
  4. dotweave が git のために管理するファイル
  5. 実装とリファレンス