Aller au contenu
ColliePWA

07/Documentation

Modifications : voir ce qu'un agent a modifié

Ce qu'un agent a modifié dans son espace de travail : les fichiers modifiés, leurs diffs et le dernier commit, depuis le panneau ou le tableau de bord. Git en lecture seule, dépôts imbriqués et les deux paramètres qui déterminent la profondeur d'analyse

La vue Modifications affiche ce qui a changé dans les dépôts git d'un espace de travail depuis le dernier commit. Consultez-la sur votre téléphone pendant que l'agent travaille : les fichiers modifiés, leurs lignes ajoutées et supprimées, ainsi que le diff coloré de chaque fichier. Quand l'agent a déjà commité, elle affiche le dernier commit.

Remarque. Modifications fonctionne en lecture seule. La vue ne prépare jamais de commit, ne commite pas, ne modifie pas et n'extrait aucun fichier (ci-dessous).

Ouvrir la vue

Il existe deux accès.

  • Depuis un volet. Appuyez sur le bouton Modifications dans le bandeau d'actions du volet, l'icône à gauche du sélecteur Switch. La liste couvre l'ensemble de l'espace de travail du volet et signale le dépôt propre à ce volet.
  • Depuis le tableau de bord. Appuyez sur Modifications dans le pied de page du tableau de bord, à côté de Volets et Focus. Il affiche une ligne par espace de travail avec le nombre de fichiers modifiés et le total des lignes ajoutées et supprimées. Un espace de travail sans modifications reste à sa place, grisé. Appuyez sur une ligne pour ouvrir la liste de cet espace de travail.

Les compteurs du tableau de bord s'actualisent toutes les 5 secondes, uniquement lorsque l'onglet Modifications est affiché à l'écran. L'onglet sélectionné est mémorisé par appareil.

La liste

La liste regroupe les fichiers modifiés par dépôt git. Chaque fichier affiche son statut et son nombre de lignes +added −removed.

StatutSignification
ModifiéUn fichier suivi a changé
AjoutéUn nouveau fichier, indexé
SuppriméUn fichier suivi a disparu
RenomméUn fichier a été déplacé ; son diff indique l'ancien chemin
Non suiviUn nouveau fichier que git ne suit pas encore
  • La base est le dernier commit. Les modifications indexées et non indexées apparaissent ensemble. Un dépôt sans commit est comparé à un arbre vide.
  • Un nouveau fichier apparaît comme des lignes entièrement ajoutées. Un nouveau dossier constitue une seule entrée : Collie indique que le dossier est nouveau et ne liste pas les fichiers qu'il contient. Cela évite d'inclure un dossier node_modules récent dans la liste.
  • Un fichier binaire est listé, mais ses lignes ne sont pas affichées.
  • Ce volet. Ouvert depuis un volet, avec plusieurs dépôts listés, le dépôt propre au volet porte le libellé Ce volet. À la première lecture, la liste défile jusqu'à lui.
  • Liste ou Arborescence. Le sélecteur Disposition affiche les fichiers sous forme de liste plate par dépôt, ou sous forme d'arborescence de dossiers.
  • Filtrer les fichiers. Le bouton de filtre restreint la liste selon le texte du chemin et selon l'état. La liste indique ensuite le nombre de ses fichiers affichés.

Lire un diff

Appuyez sur un fichier pour lire son diff. Fichier précédent et Fichier suivant parcourent la liste sans y revenir.

  • Le diff affiche deux colonnes de numéros de ligne, des lignes ajoutées et supprimées colorées, et des retours à la ligne automatiques.
  • Les langages courants bénéficient de la coloration syntaxique : TypeScript et JavaScript, JSON, CSS, HTML, Markdown, Python, Go, Rust, shell, YAML, TOML et d'autres. Un fichier dans un autre langage, ou un diff de plus de 2000 lignes, reste en texte brut.
  • Un diff très long s'arrête à une limite et l'indique.
  • Si l'agent annule ou commite le fichier pendant que vous le lisez, le diff reste à l'écran et son en-tête indique N'est plus modifié. La vue ne change jamais brusquement.

Le dernier commit

Les agents committent souvent leur propre travail, la liste peut donc être vide juste après la modification que vous voulez lire. Pour un dépôt sans modifications non commitées, la vue propose Afficher le dernier commit.

La vue du commit affiche l'objet, l'auteur, la date et l'heure, le hash court et les fichiers du commit, chacun avec son propre diff. Elle compare le commit à son premier parent, afin qu'un merge montre ce qu'il a apporté. Elle lit uniquement le commit le plus récent. Il n'y a pas de navigateur d'historique.

  • Quand l'agent commite à nouveau, un discret Un commit plus récent existe attend que vous appuyiez dessus. Les fichiers affichés à l'écran ne changent pas sous vos yeux.
  • Lorsque de nouvelles modifications non commitées apparaissent, Nouvelles modifications non commitées vous ramène à la liste.

Mise à jour continue

Un écran Changes ouvert relit git toutes les 5 secondes tant que la page est visible. Sur un diff, le fichier ouvert est relu lui aussi. Une relecture qui ne trouve rien de nouveau ne déplace rien à l'écran : votre défilement, votre filtre et vos dossiers repliés restent en l'état.

  • Une page masquée cesse de lire, et effectue une lecture lorsqu'elle redevient visible.
  • Le bouton de rafraîchissement lance une lecture immédiate.
  • Si deux lectures consécutives échouent, l'en-tête affiche Mise à jour interrompue, et la dernière liste valide est conservée. La lecture valide suivante efface l'alerte.

Quel dossier, et quels dépôts

La liste couvre le workspace du volet, et pas seulement son propre dossier ; ainsi, chaque volet d'un même workspace affiche la même liste. L'en-tête indique le nom du workspace et son dossier. Collie sélectionne ce dossier dans cet ordre :

OrdreDossier
1Le dossier propre au workspace, lorsque le multiplexeur en gère un : le worktree de Herdr, le dossier de session de tmux
2Le dossier le plus profond qui contient chaque panneau de l'espace de travail
3Le dossier propre au panneau, lorsque les deux premiers correspondraient à /, à votre dossier personnel ou à un niveau supérieur

Collie recherche ensuite le dépôt contenant ce dossier. Il recherche aussi les dépôts dans les sous-dossiers, même ceux que le dépôt parent ignore. C'est ainsi qu'un dépôt de workspace contenant des dépôts membres ignorés affiche tout de même les modifications de chaque membre.

Deux paramètres par appareil contrôlent cette recherche. Tous deux se trouvent dans Paramètres → Appareil → Modifications.

ParamètreValeur par défautDescription
Rechercher des dépôts dans ce dossieractivéListe aussi les dépôts situés dans les sous-dossiers du dossier de l'espace de travail, même ceux ignorés par le dépôt parent
Profondeur de recherche2Nombre de niveaux de dossiers sous le dossier de l'espace de travail parcourus par la recherche, de 1 à 4

La recherche ne suit jamais les liens symboliques. Elle ignore les dossiers commençant par un point ainsi que node_modules, dist, build, vendor et target. Elle s'arrête à 20 dépôts ou 5 000 entrées de dossier.

Lorsque la recherche s'arrête à sa limite de profondeur et que des dépôts existent plus bas, la liste se termine par « Arrêté à 2 niveaux, dépôts détectés plus bas. » avec un lien Chercher plus profond dans Paramètres. Lorsqu'elle atteint la limite de dépôts ou d'entrées, elle affiche plutôt « La liste a atteint une limite », car des fichiers peuvent manquer.

Un sous-module ou un dépôt imbriqué détecté par la recherche apparaît une seule fois, en tant que dépôt distinct. Un sous-module situé au-delà de la profondeur maximale apparaît comme une entrée unique dans son dépôt parent.

Lecture seule et sécurisée

Changes exécute git uniquement pour lire, et rien d'autre.

  • Il n'indexe, ne commite, ne modifie ni n'extrait jamais aucun fichier. Il n'actualise même pas le cache d'index de git.
  • Les hooks, filtres, programmes de diff externes et conversions de texte d'un dépôt ne s'exécutent jamais pendant que Collie le lit. Un agent a pu cloner n'importe quel contenu, et vous n'avez fait qu'ouvrir Changes.
  • Il n'utilise jamais le réseau, pas même pour récupérer un fichier manquant dans un clone partiel. Ce fichier s'affiche alors avec des compteurs à zéro et un diff vide.
  • Un diff n'est servi que pour un fichier que git a lui-même listé comme modifié, dans un dépôt trouvé par la recherche.

Les règles complètes figurent dans ADR 0065.

À travers une crew

Dans une crew, un volet ou un workspace situé sur une autre machine est lu sur cette machine. Le lead relaie la requête, et le git de cette machine y répond. Cette machine doit exécuter Collie 1.13.0 ou une version ultérieure.

Limites

  • Les volets zellij n'ont pas de bouton Changes. zellij ne transmet pas le dossier d'un volet. La ligne du tableau de bord d'un workspace zellij indique « Aucun dossier ».
  • Git doit être installé sur la machine qui possède le panneau.
  • Les fichiers Git LFS peuvent apparaître comme modifiés. Lorsque les filtres sont désactivés, Collie compare un fichier LFS avec son pointeur. Il ne peut qu'en afficher trop, jamais masquer une modification.
  • Un espace de travail, un dossier. Un espace de travail dont les panneaux se trouvent dans des dossiers sans lien sous votre dossier personnel lit le propre dossier du panneau demandeur au lieu d'une vue fusionnée.

Modifier cette page sur GitHub

The rest of the documentation