コンテンツにスキップ
Dotweave Dotweave v0.39.7

プロファイル

デバイスや環境ごとに同期対象を選択的に管理する方法。

すべての設定ファイルがすべてのマシンに必要なわけではありません。仕事用のノートPCには仕事のクレデンシャルが、個人のデスクトップにはGPU設定が、LinuxサーバーにはmacOSの設定は不要です。プロファイルを使えば、トラッキングエントリを名前付きグループに分類し、各マシンが必要なものだけを同期できます — すべて1つのリポジトリから。


ファイルをトラッキングする際に、--profilesを使って1つまたは複数のプロファイルに割り当てることができます。プロファイルが指定されていないエントリはdefaultプロファイルに入り、すべてのマシンで同期されます。

# defaultプロファイル — すべてのマシンで同期
dotweave track ~/.gitconfig
dotweave track ~/.zshrc
# "work"プロファイルがアクティブなときだけ同期
dotweave track ~/.config/work-vpn --profiles work
# "personal"プロファイルがアクティブなときだけ同期
dotweave track ~/.config/personal-tool --profiles personal

defaultプロファイルと名前付きプロファイル

Section titled “defaultプロファイルと名前付きプロファイル”
  • defaultプロファイル: --profilesなしのエントリはdefault/ディレクトリに入り、すべてのマシンで同期されます。
  • 名前付きプロファイル: --profiles workを指定したエントリはwork/に入り、そのプロファイルがアクティブなときだけ同期されます。

1つのエントリに複数のプロファイルを割り当てることもできます — いずれかがアクティブであれば同期されます:

dotweave track ~/.config/shared-tool --profiles work,personal

アクティブプロファイルの設定

Section titled “アクティブプロファイルの設定”

現在のマシンで使用するプロファイルをdotweaveに指示します:

dotweave profile use work

これ以降、このマシンのdotweave pushdotweave pullにはdefaultエントリに加えてworkプロファイルに割り当てられたエントリが含まれます。


sync設定に存在するすべてのプロファイルを確認できます:

dotweave profile list

manifest.jsoncに登場するすべてのプロファイル名と、現在アクティブなプロファイルが表示されます。


# 共通設定 — プロファイルなし、すべてのマシンで同期
dotweave track ~/.gitconfig
dotweave track ~/.zshrc
# 仕事専用ファイル
dotweave track ~/.config/work-vpn --profiles work
dotweave track ~/.ssh/work-key --mode secret --profiles work
# 個人専用ファイル
dotweave track ~/.config/personal-app --profiles personal

仕事用ノートPCでworkプロファイルを設定してpush:

dotweave profile use work
dotweave push # default + workエントリをpush

個人マシンでpersonalプロファイルを設定してpull:

dotweave profile use personal
dotweave pull # default + personalエントリのみpull

仕事のマシンには個人の設定が入らず、個人のマシンには仕事のクレデンシャルが入りません。きれいに分離しつつ、リポジトリは1つです。


プロファイルの使い方は仕事と個人の分離に限りません。他にもこんなパターンがあります:

  • OS別プロファイル: --profiles linux--profiles macosでOS固有の設定を管理
  • 共通ベース+マシン固有: 共通設定はプロファイルなしでトラッキングし、マシン固有のエントリは--profiles desktop--profiles serverで管理

sync-directory/
├── manifest.jsonc
├── default/ ← defaultプロファイルのエントリ
│ ├── .gitconfig
│ └── .zshrc
├── work/ ← workプロファイルのエントリ
│ ├── .config/
│ │ └── work-vpn/
│ └── .ssh/
│ └── work-key.age
└── personal/ ← personalプロファイルのエントリ
└── .config/
└── personal-app/