07/Documentation
変更点: エージェントが変更した内容の確認
ペインやダッシュボードから確認できる、エージェントがワークスペースで行った変更: 変更されたファイル、差分、最新のコミット。読み取り専用git、ネストされたリポジトリ、探索深度を決める2つの設定
変更点ビューには、ワークスペース内の git リポジトリで前回のコミット以降に変更された内容が表示されます。変更されたファイル、追加・削除された行数、構文が色分けされた各ファイルの diff を、エージェントの作業中にスマートフォンから確認できます。エージェントがコミット済みの場合は、最新のコミットが表示されます。
注。 変更点ビューは読み取り専用です。ファイルのステージング、コミット、編集、チェックアウトを行うことはありません (以下)。
開く
開く方法は2つあります。
- ペインから開く ペインのアクションベルトにある変更点ボタン(切り替えマークの左側のアイコン)をタップします。リストにはペインのワークスペース全体が表示され、そのペイン自身のリポジトリに印が付きます。
- ダッシュボードから開く ダッシュボードのフッターにある、ペイン と フォーカス の横の 変更 をタップします。ワークスペースごとに1行ずつ、変更されたファイル数と追加・削除された合計行数が一覧表示されます。変更がないワークスペースは薄く表示されたまま残ります。行をタップすると、そのワークスペースのリストが開きます。
ダッシュボードの件数は5秒ごとに更新され、変更点タブが画面に表示されている間のみ更新されます。選択したタブはデバイスごとに保持されます。
リスト
リストでは、変更されたファイルが git リポジトリごとにグループ化されます。各ファイルにはステータスと +added −removed 行数が表示されます。
| ステータス | 意味 |
|---|---|
| 変更あり | 追跡対象のファイルが変更されました |
| 追加 | ステージングされた新規ファイル |
| 削除 | 追跡対象のファイルが削除されました |
| 名前変更 | ファイルが移動しました。diffには古いパスが表示されます |
| 追跡対象外 | gitがまだ追跡していない新規ファイル |
- ベースは直前のコミットです。 ステージ済みと未ステージの変更がまとめて表示されます。コミットのないリポジトリは空のツリーと比較されます。
- 新規ファイル はすべて追加行として表示されます。新規フォルダ は1つのエントリになります。Collieはフォルダが新規であることのみを示し、内部のファイルは一覧表示しません。これにより、新規作成された
node_modulesがリストに展開されるのを防ぎます。 - バイナリファイル は一覧に表示されますが、行内容は表示されません。
- このペイン。 複数のリポジトリが表示されているペインから開いた場合、そのペイン自身のリポジトリに このペイン ラベルが付きます。初回読み込み時、リストはその位置までスクロールします。
- リストまたはツリー。 レイアウト 切り替えスイッチにより、ファイルをリポジトリごとのフラットなリストまたはフォルダツリーで表示します。
- ファイルを絞り込む。 フィルターボタンで、パス文字列やステータスによるリストの絞り込みが可能です。リストには表示中のファイル数が示されます。
diffを確認する
ファイルをタップしてdiffを確認します。前のファイル と 次のファイル で、リストに戻ることなく前後のファイルに移動できます。
- diffには2列の行番号ガター、追加・削除行の色分け、折り返し行が表示されます。
- 主要言語にはシンタックスハイライトが適用されます: TypeScript、JavaScript、JSON、CSS、HTML、Markdown、Python、Go、Rust、シェルスクリプト、YAML、TOMLなど。その他の言語や2000行を超えるdiffはプレーンテキストのままになります。
- 長すぎるdiffは上限で中断され、その旨が表示されます。
- diffの閲覧中にエージェントがファイルの変更を取り消したりコミットしたりした場合でも、表示は維持され、ヘッダーに 変更なし と表示されます。画面が勝手に切り替わることはありません。
最新のコミット
エージェントは自身で変更をコミットすることが多いため、確認したい変更の直後にリストが空になる場合があります。未コミットの変更がないリポジトリでは、最新のコミットを表示 が表示されます。
コミットビューには、件名、作成者、日時、短いハッシュ、コミットに含まれる各ファイルのdiffが表示されます。コミットは第1親と比較されるため、マージコミットでは取り込まれた変更内容が示されます。最新のコミットのみを読み込み、履歴ブラウザはありません。
- エージェントが再度コミットすると、控えめな より新しいコミットがあります が表示されタップを待ちます。閲覧中のファイルが勝手に置き換わることはありません。
- コミットされていない新しい変更が発生すると、コミットされていない新しい変更 をクリックしたときに一覧画面へ戻ります。
自動更新
Changes画面を開いている間、ページが表示されていれば5秒ごとにgitの再読み込みを行います。diffの表示中には、開いているファイルも再読み込みします。再読み込みで新しい変更が見つからなかった場合、画面上の表示は変わりません。スクロール位置、フィルター、折りたたんだフォルダーの状態はそのまま維持されます。
- ページが非表示になると読み込みを停止し、再度表示されたときに1回だけ読み込みます。
- 更新ボタンを押すと、即座に読み込みを実行します。
- 読み込みが2回連続で失敗すると、ヘッダーに 更新を停止中 と表示され、最後に正常に取得した一覧がそのまま残ります。次に読み込みが成功すると、この表示は消えます。
対象フォルダと対象リポジトリ
一覧には、ペイン自身のフォルダーだけでなく、そのペインが属する ワークスペース 全体が含まれます。そのため、同じワークスペース内のすべてのペインで同じ一覧が表示されます。ヘッダーにはワークスペース名とそのフォルダー名が表示されます。Collieは以下の優先順位でそのフォルダーを選択します。
| 順位 | フォルダー |
|---|---|
| 1 | マルチプレクサがフォルダーを保持している場合は、そのワークスペース自体のフォルダー(Herdrのworktree、tmuxのセッションフォルダー) |
| 2 | ワークスペースのすべてのペインを含む最も深いフォルダー |
| 3 | 上位2つが/、ホームフォルダー、またはそれより上位になる場合は、ペイン自身のフォルダー |
次に、Collieはそのフォルダーを含むリポジトリを特定します。また、その配下にあるフォルダー内のリポジトリも検索します。親リポジトリによって無視(ignore)されているリポジトリも対象です。これにより、ワークスペースのリポジトリ内でメンバーリポジトリが無視されている構成でも、すべてのメンバーの変更が表示されます。
この検索はデバイスごとの2つの設定で制御します。どちらの設定も 設定 → デバイス → 変更点 にあります。
| 設定項目 | デフォルト | 説明 |
|---|---|---|
| このフォルダー内のリポジトリを検索 | オン | ワークスペースフォルダーより下位のフォルダーにあるリポジトリも一覧表示します。親リポジトリが無視しているものも含みます。 |
| 検索する深さ | 2 | ワークスペースフォルダーから何階層下まで検索するか(1〜4) |
検索はシンボリックリンクをたどりません。ドットで始まるフォルダー、node_modules、dist、build、vendor、target をスキップします。リポジトリ数が20件に達するか、フォルダーのエントリ数が5000件に達した時点で検索を停止します。
検索が指定の階層の深さで停止し、さらに下層にリポジトリが存在する場合、一覧の末尾に「2階層で停止しました。さらに下層にリポジトリがあります。」というメッセージと 設定でさらに深く検索する リンクが表示されます。リポジトリ数またはエントリ数の上限に達した場合は、ファイルが欠落している可能性があるため、代わりに「一覧が上限に達しました」と表示されます。
検索で見つかったサブモジュールやネストされたリポジトリは、独立した1つのリポジトリとして表示されます。探索深度より深い場所にあるサブモジュールは、親リポジトリ内の1つのエントリとして表示されます。
読み取り専用で安全
Changesは読み取りのためにgitを実行するだけで、それ以外の操作は行いません。
- ステージング、コミット、編集、チェックアウトを行うことはありません。gitのインデックスキャッシュの更新すら行いません。
- Collieが読み取りを行う際、リポジトリ自身のフック、フィルター、外部diffプログラム、テキスト変換処理は一切実行されません。エージェントが任意のリポジトリをクローンしている可能性があっても、ユーザーは安全にChangesをクリックできます。
- ネットワーク通信は一切行いません。部分クローン(partial clone)で不足しているファイルを取得することもありません。その場合、該当ファイルは変更カウント0、空のdiffとして表示されます。
- diffは、検索で見つかったリポジトリ内で、git自身が変更ありとしてリストしたファイルについてのみ提供されます。
詳細なルールは ADR 0065 に記載されています。
クルーをまたいだ動作
crew では、別マシン上にあるペインやワークスペースの情報は、そのマシン上で読み取られます。リードがリクエストを転送し、該当マシンのgitが応答します。そのマシンでCollie 1.13.0以降を実行している必要があります。
制限事項
- zellijペインにはChangesボタンがありません。 zellijはペインのフォルダーを報告しません。zellijワークスペースのダッシュボード行には「フォルダーなし」と表示されます。
- ペインを保持するマシン上のGitがインストールされている必要があります。
- Git LFSファイルが変更済みとして表示されることがあります。 フィルターが無効な場合、CollieはLFSファイルとそのポインタを比較します。変更が表示されすぎることはあっても、変更が隠れることはありません。
- 1つのワークスペースに1つのフォルダ。 ホームフォルダ配下の無関係なフォルダにペインが分散しているワークスペースでは、マージされたビューではなく、要求元ペイン自身のフォルダを読み取ります。