ワークスペースの分離
Verdent が git worktree で並行するコード変更を分離する仕組み
ワークスペースの分離は、git worktree を使って、並行するコード変更をファイルシステムレベルで分離します。ワークスペースには、それぞれ独自のディレクトリ、ブランチのチェックアウト、ファイル、ステージング状態があります。
現在の Verdent Desktop インターフェースでは、手動でのワークスペース作成は提供されていません。New Workspace ボタン、キーボードショートカット、Duplicate to New Workspace は非表示です。レスポンスを複製すると、新しいタスクは現在のワークスペース内に作成されます。
学べること
- ワークスペースの分離が競合を防ぐ仕組み
- git worktree が分離を実現する仕組み
- Base Workspace とワークスペースの違い
- 既存のワークスペースと Verdent が管理するワークスペースがインターフェースにどう表示されるか
- ワークスペース管理のベストプラクティス
ワークスペースの分離とは
Verdent が別々のワークスペースで作業を実行すると、ある worktree の変更は、別の worktree のファイルやステージング状態を変更しません。これにより、並行した実装とレビューをより安全に行えます。
仕組み
| レイヤー | 仕組み |
|---|---|
| ディレクトリ | 各ワークスペースは分離されたディレクトリです |
| ブランチ | 各ワークスペースには独自のブランチチェックアウトがあります |
| ファイル | あるワークスペースでのファイル変更は、他のワークスペースに影響しません |
| ステージング | 各ワークスペースには独自のステージング領域があります |
メリット
干渉なし
ファイル変更は別々の worktree ディレクトリ内に留まります
安全な実験
安定したコードに影響を与えずにリスクのある変更を試せます
明確な比較
git diff を使って、ワークスペース間でアプローチを比較できます
選択的なリベース
信頼できる結果だけをリベースできます
Base Workspace とワークスペース
Base Workspace
Base ワークスペースは元のリポジトリチェックアウトで、デフォルトの開始地点として機能します。
| 特性 | 説明 |
|---|---|
| 場所 | 元の git clone または init の場所 |
| 主ブランチ | 通常は main または開発ブランチ |
| 参照点 | 実験的な作業を比較するための基準 |
Base を使う場面:
- 分離が不要な素早い変更
- 実験的な作業を比較するための参照点
- 変更を直接 main ブランチに入れたい場合
- 並行実行が不要な単純なタスク
ワークスペース
ワークスペースは、git worktree を使って作成される分離された作業環境で、独立したブランチチェックアウトとファイル状態を持ちます。
Verdent は、対応しているワークフローでコード変更の分離が必要な場合にワークスペースを使用できます。既存のワークスペースはプロジェクトとの関連付けを維持し、複数のタスクを含められます。
既存のワークスペースを扱う
すでにプロジェクトに属しているワークスペースは、Projects パネルでそのプロジェクトにグループ化されたまま表示されます。ワークスペースを選択すると、そのタスクとファイル状態を確認できます。
- 同じワークスペース内のタスクはファイルを共有しますが、会話コンテキストは別々に保持されます。
- 別のワークスペースに切り替えると、アクティブな worktree とブランチのコンテキストが変わります。
- レスポンスを複製すると、複製されたタスクは現在のワークスペース内に残ります。
- 必要な作業をコミット、リベース、または別の方法で保存してから、ワークスペースを削除してください。
ワークスペースの変更をリベースする
ワークスペースでの変更を main ブランチに統合する準備ができたら、次の手順を実行します。
Verdent UI を使う
作業を完了する
ワークスペースで作業を完了します
変更を確認する
中央のパネルで Task Changes を選択し、すべての変更を確認します
main ブランチにリベースする
Workspace Bar で Workspace Actions → Rebase to main branch を選択します
競合を解決する
プロンプトが表示された場合は競合を解決します
検証する
確定する前に変更を確認します
ワークスペースを最新に保つ
Workspace Actions → Sync with main branch を使って、main ブランチの最新変更をワークスペースに取り込みます。これにより、リベース時に大きな競合が発生しにくくなります。
ベストプラクティス
ワークスペースのメンテナンス
| 実践 | 理由 |
|---|---|
| リベース済みのワークスペースを削除する | ディスク容量を解放できます |
| 放棄した実験を削除する | ワークスペース一覧を管理しやすく保てます |
| ワークスペース数を適切に保つ | システムリソースには限りがあります |
Git の衛生管理
| 実践 | 理由 |
|---|---|
| こまめにコミットする | 切り替える前に作業中の内容をコミットします |
| 小さくコミットする | 小さなコミットのほうが cherry-pick しやすくなります |
| 定期的に base と同期する | ワークスペースが main ブランチから大きく乖離しないようにします |
| 競合の複雑さを抑える | 定期的な統合により、大きな競合を防げます |
FAQ
各ワークスペースはどのくらいのディスク容量を使いますか
各ワークスペースは作業ファイルを複製しますが、.git ディレクトリは共有します。使用容量は、おおよそワークスペースごとのプロジェクトサイズと同じです。大規模なプロジェクトで多数のワークスペースを並行して使うと、多くのディスク容量を使用します。
ワークスペースを削除できますか
はい。Verdent からワークスペースを削除します。これによりディレクトリは削除されますが、ブランチ上のコミット済みの作業は保持されます。
新しいワークスペースを作成するにはどうすればよいですか
現在の Desktop インターフェースでは、手動作成は利用できません。New Workspace の項目とショートカットは非表示です。Verdent は、対応している分離ワークフローのために内部的にワークスペースを引き続き使用できます。
ワークスペースを削除すると未コミットの変更はどうなりますか
ワークスペースを削除すると、未コミットの変更は失われます。ワークスペースを削除する前に、必ず変更をコミットまたは stash してください。
ワークスペースを base ワークスペースに変換できますか
直接変換することはできませんが、ワークスペースのすべての変更を main ブランチにリベースしてから、ワークスペースを削除できます。ブランチ履歴は保持されます。
worktree はすべての git ホスティングサービスで使えますか
はい。Git の worktree は標準の git 機能です。GitHub、GitLab、Bitbucket、その他の git ホスティングサービスで使用できます。