VS Code 1.141が10月7日に公開された。Chat: Open Worktree Cleanupコマンドは、非アクティブなエージェントセッションのworktreeがどれだけディスクを使っているかを示し、不要になったものを削除できるようにする。
画面では非アクティブな期間でセッションを絞り込み、worktreeごとの大きさを確認して整理する項目を選ぶ。同じ画面で、プルリクエストがマージされたセッションの自動整理と、セッションの保存領域が大きくなったときに整理を提案するかどうかも設定する。
chat.agentSessions.sessionStorageCleanupSuggestion.enabledが有効なら、非アクティブなworktreeが十分にたまるか、ディスクを多く使うようになったときにAgentsウィンドウが知らせる。
整理と復元が実際に行うこと
整理すると、選んだセッションは完了扱いになり、そのworktreeは削除される。後でセッションを復元するとworktreeが作り直され、アクティブ・実行中・入力待ち・ピン留めのセッションは整理から保護される。
Gitのドキュメントによると、1つのリポジトリは複数の作業ツリーを持つことができ、git worktree addで作ったものはリンクされた(linked)worktreeと呼ばれる。git worktree removeは追跡していないファイルや変更のないクリーンなworktreeだけを削除し、そうでなければ--forceが必要だ。
git worktree pruneは、残った管理ファイルを片付ける別のコマンドだ。この背景はチェックアウトを消して容量を得る仕組みを説明するだけで、VS Codeの整理コマンドの内部実装を示すものではない。
作り直すことと取り戻すことの違い
リリースノートの表現は、worktreeを作り直すというものだ。削除した時点で未コミットだったファイルやメモまで戻るという文はない。
マージされたプルリクエストは提出した変更の証拠にすぎず、ローカルのチェックアウトにはメモや生成した入力など、PRに入っていない作業が残っていることがある。
経過時間と大きさが示すもの
古くて大きいworktreeは目立つが、大きさだけでは残っている内容の価値は分からない。古いセッションは放棄された作業かもしれないし、返答を待って止まっている調査かもしれない。
そのため最初の整理では、画面に表示された大きさとあわせて、選んだチェックアウトに残る変更を直接見るほうが安全だ。
自動整理が合う条件
マージ前に必要な変更や調査メモを一時的なチェックアウトの外に残す習慣がチームにあれば、マージ済みPRセッションの自動整理は捨ててよい状態だけを消すことになる。これは運用の提案であり、VS Codeが保証する動作ではない。
開いたままにしておくセッションはピン留めすれば整理から保護されるが、ピン留めは重要な作業の保存場所の代わりにはならない。
注意点:この記事が確かめていないこと
この記事はworktreeを実際に削除・復元しておらず、容量も測っていない。未コミットの状態が復元されるかどうかは確認されていない。
終わったセッションから手作業で整理し、確保した容量と残した作業を再開できるかを確かめてから自動整理を有効にする順番のほうが、リスクが小さい。
VS Code 1.141のworktree整理はセッションを完了扱いにしてチェックアウトを削除し、復元時にはworktreeだけを作り直すため、未コミットのローカル作業は整理の前に別の場所へ残しておく必要がある。
