コンテンツにスキップ

.vibe.toml

.vibe.tomlファイルには、通常gitにコミットされてチームで共有される設定が含まれます。

元リポジトリからWorktreeへ個別のファイルをコピー:

[copy]
files = [".env", "config.json"]

files配列はglobパターンに対応しており、柔軟なファイル選択が可能です:

[copy]
files = [
"*.env", # ルートディレクトリの全.envファイル
"**/*.json", # 全JSONファイル(再帰的)
"config/*.txt", # config/内の全.txtファイル
".env.production" # 厳密なパスも引き続き利用可能
]

サポートされるパターン:

パターン 説明
* /以外の任意の文字にマッチ
** /を含む任意の文字にマッチ(再帰的)
? 任意の1文字にマッチ
[abc] ブラケット内の任意の文字にマッチ

ディレクトリ全体を再帰的にコピー:

[copy]
dirs = [
"node_modules", # 厳密なディレクトリパス
".cache", # 隠しディレクトリ
"packages/*" # 複数ディレクトリにマッチするGlobパターン
]

ディレクトリコピーの並列実行数を制御できます:

[copy]
concurrency = 8
  • デフォルト: 4
  • 範囲: 1 から 32
  • 高速なストレージ(NVMe、SSD)を持つシステムでは値を大きくするとコピーが高速化する場合があります
  • 値を小さくするとシステムリソースの使用量が減少します

環境変数によるオーバーライド:

Terminal window
VIBE_COPY_CONCURRENCY=16 vibe start feat/my-feature

環境変数は設定ファイルの値より優先されます。

コピーパフォーマンスの最適化 v0.4.0+

Section titled “コピーパフォーマンスの最適化 ”

vibeはシステムに応じて最適なコピー戦略を自動選択します:

戦略 使用条件 プラットフォーム
Clone (CoW) APFSでのディレクトリコピー macOS
Clone (reflink) Btrfs/XFSでのディレクトリコピー Linux
rsync cloneが利用できない場合のディレクトリコピー macOS/Linux
robocopy (/MT) ディレクトリコピー Windows
Standard ファイルコピー、またはフォールバック 全て

仕組み:

  • ファイルコピー: 単一ファイルの最高パフォーマンスのため、常にネイティブのcopyFile()を使用
  • ディレクトリコピー: 利用可能な最速の方法を自動使用

メリット:

  • Copy-on-Writeは実際のデータではなくメタデータのみをコピーするため非常に高速
  • 設定不要 - 最適な戦略が自動検出されます
  • 自動フォールバックによりコピーは常に動作します

フック設定の詳細はフックを参照してください。

Worktree作成後、親リポジトリのpre_startフックの実行前に、指定した直接サブモジュールの信頼済み.vibe.tomlを読み込みます:

[submodules]
configs = ["libs/foo", "vendor/bar"]
  • デフォルト: []
  • 各エントリは.gitmodules内の直接サブモジュールpathと完全一致する必要があります
  • 新しいWorktree内でgit submodule update --init -- <paths>を実行します
  • 各サブモジュールの.vibe.toml / .vibe.local.tomlは、そのサブモジュール自身のtrust entryで読み込まれます
  • サブモジュール設定内のフックとcopyルールは、サブモジュールルート基準で実行されます
  • --no-hooksはサブモジュールのフックをスキップしますが、サブモジュール初期化はスキップしません
  • --no-copyはサブモジュールのcopyルールをスキップします
  • サブモジュール更新、trust、path検証、setupのいずれかに失敗するとvibe startは中断され、作成済みWorktreeは調査用に残ります

外部スクリプトを使用してWorktreeディレクトリパスをカスタマイズできます。

Worktreeパスを出力するスクリプトを指定:

[worktree]
path_script = "~/.config/vibe/worktree-path.sh"

スクリプトは以下の環境変数を受け取ります:

環境変数 説明
VIBE_REPO_NAME リポジトリ名 my-project
VIBE_BRANCH_NAME ブランチ名 feat/new-feature
VIBE_SANITIZED_BRANCH サニタイズ済みブランチ名(/- feat-new-feature
VIBE_REPO_ROOT リポジトリルートパス /path/to/repo

スクリプト例:

~/.config/vibe/worktree-path.sh
#!/bin/bash
echo "${HOME}/worktrees/${VIBE_REPO_NAME}-${VIBE_SANITIZED_BRANCH}"
[copy]
files = [
".env",
".env.local",
"**/*.secret"
]
dirs = [
"node_modules",
".cache",
"vendor"
]
concurrency = 8
[hooks]
pre_start = ["echo 'Worktreeを準備中...'"]
post_start = [
"pnpm install",
"pnpm db:migrate",
"pnpm build"
]
pre_clean = ["git stash"]
post_clean = ["echo 'クリーンアップ完了'"]
[submodules]
configs = ["libs/foo"]
[worktree]
path_script = "~/.config/vibe/worktree-path.sh"