Direkt zum Inhalt
ColliePWA

07/Documentation

Änderungen: sehen, was ein Agent geändert hat

Was ein Agent in seinem Arbeitsbereich geändert hat: die geänderten Dateien, ihre Diffs und der letzte Commit, aus dem Bereich oder dem Dashboard. Schreibgeschütztes Git, verschachtelte Repositorien und die zwei Einstellungen, die bestimmen, wie weit gesucht wird

Die Ansicht „Änderungen“ zeigt, was sich in den Git-Repositories eines Arbeitsbereichs seit dem letzten Commit geändert hat. Sie können dies auf Ihrem Telefon mitlesen, während der Agent arbeitet: die geänderten Dateien, deren hinzugefügte und entfernte Zeilen sowie das Diff jeder Datei mit Syntaxhervorhebung. Wenn der Agent bereits committet hat, zeigt sie den letzten Commit.

Hinweis. „Änderungen“ liest nur. Es führt niemals Staging, Commits, Bearbeitungen oder Checkouts für Dateien aus (unten).

Öffnen

Es gibt zwei Wege dorthin.

  • Aus einem Bereich. Tippen Sie auf die Schaltfläche „Änderungen“ in der Aktionsleiste des Bereichs, das Symbol links neben der Markierung „Wechseln“. Die Liste deckt den gesamten Arbeitsbereich des Bereichs ab und markiert das eigene Repository des Bereichs.
  • Über das Dashboard. Tippen Sie auf Änderungen in der Fußzeile des Dashboards, neben Bereiche und Fokus. Dort wird eine Zeile pro Arbeitsbereich aufgelistet, zusammen mit der Anzahl der geänderten Dateien sowie der Summe der hinzugefügten und entfernten Zeilen. Ein Arbeitsbereich ohne Änderungen bleibt an seiner Stelle, ausgegraut. Tippen Sie auf eine Zeile, um die Liste dieses Arbeitsbereichs zu öffnen.

Die Dashboard-Zähler werden alle 5 Sekunden aktualisiert, und zwar nur, während der Reiter „Änderungen“ auf dem Bildschirm angezeigt wird. Der ausgewählte Reiter wird gerätespezifisch gespeichert.

Die Liste

Die Liste gruppiert die geänderten Dateien nach Git-Repository. Jede Datei zeigt ihren Status und ihre +added −removed-Zeilenzahlen.

StatusBedeutung
GeändertEine verfolgte Datei wurde geändert
HinzugefügtEine neue Datei, im Staging
GelöschtEine verfolgte Datei ist nicht mehr vorhanden
UmbenanntEine Datei wurde verschoben; ihr Diff nennt den alten Pfad
UnversioniertEine neue Datei, die Git noch nicht erfasst
  • Die Basis ist der letzte Commit. Bereitgestellte und nicht bereitgestellte Änderungen werden zusammen angezeigt. Ein Repository ohne Commits wird mit einem leeren Verzeichnisbaum verglichen.
  • Eine neue Datei wird vollständig als hinzugefügte Zeilen dargestellt. Ein neuer Ordner ist ein einzelner Eintrag: Collie zeigt an, dass der Ordner neu ist, und listet die darin enthaltenen Dateien nicht auf. Dadurch bleibt ein frisch erstelltes node_modules von der Liste fern.
  • Eine Binärdatei wird aufgeführt, die Zeilen werden jedoch nicht angezeigt.
  • Dieser Bereich. Wird aus einem Bereich geöffnet und sind mehrere Repositories aufgelistet, erhält das eigene Repository des Bereichs die Kennzeichnung Dieser Bereich. Beim ersten Laden scrollt die Liste dorthin.
  • Liste oder Baumstruktur. Der Schalter Layout zeigt die Dateien als flache Liste pro Repository oder als Ordnerstruktur an.
  • Dateien filtern. Die Filterschaltfläche grenzt die Liste nach Pfadtext und Status ein. Die Liste gibt anschließend an, wie viele ihrer Dateien angezeigt werden.

Ein Diff lesen

Tippen Sie auf eine Datei, um ihr Diff zu lesen. Mit Vorherige Datei und Nächste Datei wechseln Sie durch die Liste, ohne dorthin zurückzukehren.

  • Das Diff zeigt zwei Zeilennummernspalten, farblich hervorgehobene Zeilen für Hinzufügungen und Löschungen sowie Zeilenumbrüche.
  • Gängige Sprachen erhalten Syntax-Hervorhebung: TypeScript und JavaScript, JSON, CSS, HTML, Markdown, Python, Go, Rust, Shell, YAML, TOML und weitere. Eine Datei in einer anderen Sprache oder ein Diff mit mehr als 2000 Zeilen bleibt unformatiert.
  • Ein sehr langes Diff bricht an einem Grenzwert ab und weist darauf hin.
  • Wenn der Agent die Datei zurücksetzt oder committet, während Sie sie lesen, bleibt das Diff auf dem Bildschirm und seine Kopfzeile zeigt Nicht mehr geändert an. Die Ansicht springt nicht weg.

Der letzte Commit

Agenten committen ihre Arbeit oft selbst, sodass die Liste direkt nach der gewünschten Änderung leer sein kann. Bei einem Repository ohne uncommittete Änderungen bietet die Ansicht Letzten Commit anzeigen an.

Die Commit-Ansicht zeigt den Betreff, den Autor, den Zeitstempel, den Kurz-Hash und die Dateien des Commits, jeweils mit eigenem Diff. Sie vergleicht den Commit mit seinem ersten Eltern-Commit; ein Merge zeigt daher die eingebrachten Änderungen. Es wird nur der neueste Commit gelesen. Es gibt keinen Verlaufs-Browser.

  • Committet der Agent erneut, wartet ein unauffälliges Ein neuerer Commit existiert auf ein Antippen. Die Dateien auf dem Bildschirm ändern sich dabei nicht.
  • Wenn neue nicht committete Änderungen auftreten, bringt Neue nicht committete Änderungen Sie zurück zur Liste.

Bleibt aktuell

Eine geöffnete Änderungen-Ansicht liest git alle 5 Sekunden erneut aus, solange die Seite sichtbar ist. Bei einem Diff wird auch die geöffnete Datei erneut gelesen. Ein erneutes Auslesen ohne neue Änderungen verändert nichts auf dem Bildschirm: Scrollposition, Filter und eingeklappte Ordner bleiben unverändert.

  • Eine ausgeblendete Seite stoppt das Auslesen und liest einmal aus, sobald sie wieder sichtbar ist.
  • Die Schaltfläche zum Aktualisieren liest sofort aus.
  • Schlagen zwei Lesevorgänge nacheinander fehl, zeigt die Kopfzeile Wird nicht aktualisiert an, und die letzte funktionierende Liste bleibt erhalten. Der nächste erfolgreiche Lesevorgang setzt sie zurück.

Welcher Ordner und welche Repositories

Die Liste deckt den Arbeitsbereich des Bereichs ab, nicht nur den eigenen Ordner des Bereichs; jeder Bereich in einem Arbeitsbereich zeigt also dieselbe Liste. Die Kopfzeile benennt den Arbeitsbereich und dessen Ordner. Collie wählt diesen Ordner in folgender Reihenfolge aus:

ReihenfolgeOrdner
1Der eigene Ordner des Arbeitsbereichs, sofern der Multiplexer einen verwaltet: Herdr-Worktree, tmux-Sitzungsordner
2Der tiefste Ordner, der alle Panes des Arbeitsbereichs enthält
3Der eigene Ordner des Panes, falls die ersten beiden Optionen /, Ihr Benutzerverzeichnis oder darüber liegende Verzeichnisse wären

Collie ermittelt anschließend das Repository, das diesen Ordner enthält. Es sucht auch in untergeordneten Ordnern nach Repositories, selbst nach Repositories, die das übergeordnete Repository ignoriert. Dadurch zeigt ein Arbeitsbereich-Repository, in dem dessen Mitglied-Repositories ignoriert werden, dennoch die Änderungen jedes Mitglieds an.

Zwei gerätespezifische Einstellungen steuern diese Suche. Beide befinden sich in Einstellungen → Gerät → Änderungen.

EinstellungStandardFunktion
Nach Repositories in diesem Ordner suchenanListet auch Repositories in Ordnern unterhalb des Arbeitsbereichsordners auf, selbst wenn das übergeordnete Repository diese ignoriert
Suchtiefe2Wie viele Ordnerebenen unterhalb des Arbeitsbereichsordners die Suche umfasst, 1 bis 4

Die Suche folgt niemals einem Symlink. Sie überspringt Punkt-Ordner sowie node_modules, dist, build, vendor und target. Sie stoppt bei 20 Repositories oder 5000 Ordnereinträgen.

Stoppt die Suche bei ihrer Suchtiefe und existieren darunter weitere Repositories, endet die Liste mit „Stopped at 2 levels, with repos further down.“ und einem Tiefer suchen in Einstellungen-Link. Erreicht sie das Repository- oder Eintrags-Limit, endet die Liste stattdessen mit „The list hit a limit“, da möglicherweise Dateien fehlen.

Ein von der Suche gefundenes Submodul oder verschachteltes Repository wird einmal als eigenes Repository angezeigt. Ein Submodul unterhalb der Suchtiefe erscheint als einzelner Eintrag im übergeordneten Repository.

Schreibgeschützt und sicher

Änderungen führt git ausschließlich zum Lesen aus.

  • Es führt niemals Staging, Commits, Bearbeitungen oder Checkouts durch. Es aktualisiert nicht einmal den Index-Cache von git.
  • Eigene Hooks, Filter, externe Diff-Programme und Textkonvertierungen eines Repositories werden beim Auslesen durch Collie niemals ausgeführt. Ein Agent könnte beliebigen Code geklont haben, und Sie haben lediglich auf Änderungen geklickt.
  • Es greift niemals auf das Netzwerk zu, nicht einmal zum Abrufen einer fehlenden Datei in einem partiellen Klon. Diese Datei wird dann mit Zählerständen von null und einem leeren Diff angezeigt.
  • Ein Diff wird nur für eine Datei ausgeliefert, die git selbst als geändert gelistet hat, in einem von der Suche gefundenen Repository.

Die vollständigen Regeln stehen in ADR 0065.

Über eine Crew hinweg

In einer Crew wird ein Bereich oder Arbeitsbereich auf einem anderen Rechner direkt auf diesem Rechner ausgelesen. Der Lead leitet die Anfrage weiter, und das git dieses Rechners antwortet. Auf diesem Rechner muss Collie 1.13.0 oder neuer laufen.

Einschränkungen

  • zellij-Bereiche besitzen keine Änderungen-Schaltfläche. zellij meldet den Ordner eines Bereichs nicht. Die Dashboard-Zeile für einen zellij-Arbeitsbereich zeigt „No folder“ an.
  • Git muss installiert sein auf dem Rechner, dem der Bereich gehört.
  • Git-LFS-Dateien werden möglicherweise als geändert angezeigt. Bei deaktivierten Filtern vergleicht Collie eine LFS-Datei mit ihrem Zeiger. Es kann nur zu viel anzeigen, niemals eine Änderung verbergen.
  • Ein Arbeitsbereich, ein Ordner. Ein Arbeitsbereich, dessen Bereiche in nicht zusammenhängenden Ordnern unter Ihrem Benutzerverzeichnis liegen, liest den eigenen Ordner des anfragenden Bereichs anstelle einer zusammengeführten Ansicht.

Diese Seite auf GitHub bearbeiten

The rest of the documentation