worktrunk 0.81: les worktrees Git en commandes

Résumé

worktrunk est un outil en ligne de commande libre ecrit en Rust: les worktrees Git tiennent en quelques commandes, un agent par dossier.

Recommander
Nom
worktrunk
Version
0.81
Tarif
Gratuit
Open source
Open source
Système
WindowsmacOSLinux
Mis à jour
2026-11-10 23:00

worktrunk est un outil en ligne de commande ecrit en Rust, consacre aux worktrees de Git. Il ramene creer un arbre, y basculer, fusionner le travail et le supprimer a quelques commandes, et il peut lancer des crochets de projet qui installent les dependances ou demarrent un service dans un dossier neuf. La page d'accueil du projet est directe: concu pour les flux qui font tourner des agents en parallele. Celui qui lance trois ou quatre agents de codage sur un meme depot en a le plus besoin. Il tourne sous Windows, macOS et Linux, et la version courante est 0.81.

wt list aligne chaque worktree avec sa branche, ses commits et son avance
wt list aligne chaque worktree avec sa branche, ses commits et son avance

Pourquoi un worktree merite sa propre commande

Les worktrees de Git ne sont pas compliques en soi: un depot peut extraire plusieurs branches dans des dossiers separes, sans interference et sans stash a repetition. La friction est dans la manipulation. La commande d'origine veut des chemins et des noms de branche, et apres le changement il faut encore faire cd soi-meme. A cinq ou six dossiers, savoir quelle branche est ou et si elle a pris du retard sur main vit dans votre tete.

Le probleme plus net, ce sont les agents. Laissez un agent modifier du code dans un depot et le repertoire de travail reste dans un etat intermediaire; lancez-en un second et les deux se marchent dessus. Donner a chacun son propre worktree est la reponse la plus propre, et le faire a la main toute la journee est la partie fastidieuse.

wt switch deplace des dossiers, pas des branches

wt switch prend un nom de branche. Si elle n'existe pas, il cree un worktree pour elle; si elle existe, il y bascule. Ce qui le separe de la commande d'origine, c'est l'integration au shell: apres l'installation, le changement emmene le repertoire de travail du terminal, donc plus de second cd. Il peut aussi emporter une commande, ses arguments places apres un double tiret, ce qui fait de creer, entrer et lancer une session d'agent une seule etape.

wt switch dans un panneau Zellij: le choix des worktrees a gauche, le diff a venir a droite
wt switch dans un panneau Zellij: le choix des worktrees a gauche, le diff a venir a droite

Un arbre neuf demarre avec des dependances et une configuration vides, et les crochets les remplissent. La configuration du projet peut contenir une routine de demarrage, installer des paquets, initialiser une base, lancer un service local, executee a chaque nouvel arbre. Avant le crochet, worktrunk demande si vous faites confiance au projet, pour qu'un depot clone n'execute pas en silence les commandes de quelqu'un d'autre.

wt list: tous les arbres dans un tableau

La commande part et un tableau revient. Chaque ligne est un worktree et donne la branche, l'etat de la zone de travail, le commit, l'avance ou le retard sur main, l'ecart avec le depot distant, l'heure et le message du dernier commit. Un arbre cree a l'instant est marque en chargement et se remplit quelques secondes plus tard.

La sortie complete de wt list: etat, divergence, avance, heure et message, une colonne chacun
La sortie complete de wt list: etat, divergence, avance, heure et message, une colonne chacun

La colonne d'etat montre les modifications non validees, les conflits et une fusion en cours sans visiter chaque dossier. La colonne d'avance montre quel arbre a pris du retard sur main et lequel est deja pousse. La colonne de message, avec les notes de commit generees, dit en une ligne ce que fait un arbre.

Fusion et nettoyage sont aussi des gestes fixes

Le travail demande une fin. wt merge valide les modifications de l'arbre courant, rebase sur la branche cible, avance rapidement, puis supprime le worktree et la branche, le tout en arriere-plan pour que vous continuez a taper. Il sait aussi produire un commit de fusion, pour les depots qui veulent garder la trace de la branche.

Quand un arbre n'est plus voulu, wt remove l'enleve. Un arbre supprime ne disparait pas tout de suite: il atterrit dans .git/wt/trash, donc une erreur se rattrape. Avec le temps, prune fait le menage: les arbres dont la branche est deja dans la branche par defaut partent, les non fusionnes et les tres recents sont epargnes, et un age minimum donne le rythme.

Un dossier par agent

Avec des agents en parallele, les fichiers genants sont les ignores: node_modules, sorties de compilation, variables d'environnement locales. Un arbre neuf n'en a aucun, donc le premier reflexe de l'agent est de reinstaller. wt sait copier les fichiers ignores depuis l'arbre source, et il reecrit les valeurs qui entreraient en collision, numeros de port et noms de base compris, pour que deux arbres ne se disputent plus le meme port.

Apres le changement, la commande d'agent de codage qui suit est emportee dans le nouveau dossier
Apres le changement, la commande d'agent de codage qui suit est emportee dans le nouveau dossier

worktrunk est sous double licence MIT et Apache 2.0, le code est sur GitHub et la documentation est complete. Il ne s'attache a aucun agent en particulier: tout outil de codage lancable dans un terminal entre dans le nouvel arbre par cet argument de changement avec commande.

Est-ce que cela vaut le coup

Celui qui ne tient qu'une branche n'en a pas besoin, git suffit. Le bon terrain est double: pousser plusieurs lignes de fonctionnalites sans rapport en meme temps, ou laisser deux ou trois agents modifier un depot en parallele. Le premier epargne la gestion des dossiers, le second la recherche apres un ecrasement.

Le prix est une couche de commandes de plus. wt apporte ses sous-commandes et sa configuration, un crochet mal ecrit empeche un arbre neuf de demarrer, et l'integration au shell est un prealable: sans elle, changer de dossier redevient manuel.

worktrunk fait quelque chose de petit: il fait passer les worktrees de Git d'une fonctionnalite dont on connait l'existence a quelque chose qu'on utilise chaque jour. Aucun mecanisme nouveau n'a ete invente. Creer un arbre, lire son etat, fusionner et nettoyer sont devenus quatre commandes qui tombent sous la main, plus une couche de crochets pour qu'un dossier neuf se tienne debout seul. Dans un flux d'agents en parallele, cette commodite vaut son prix.
worktrunkTéléchargement
Systèmes pris en charge : Windows macOS Linux