Renan Decamps

Développeur

Retour aux projets

worktree-cleaner

Rust

cli

J'aime bien tester plein de nouveaux softs, et avec l'IA je me suis mis à installer pas mal d'orchestrateurs et d'outils qui gèrent leur workflow à coups de worktrees. Résultat, j'en créais des tonnes. Sauf que certains les archivent quand ils ont fini, d'autres non ; certains les posent dans un sous-dossier du projet, d'autres directement dans mon home. Bref, un enfer pour s'y retrouver, et encore plus quand tu veux faire un coup de clean.

Et non, git worktree prune ne t'aide pas là-dessus. Il ne connaît que les worktrees encore enregistrés auprès d'un dépôt qu'il arrive à retrouver ; les orphelins, ceux dont le dépôt ou la branche a déjà disparu, il les voit même pas. Du coup je me suis dit allez go, et j'ai écrit wtc.

Il parcourt le disque à la place. Tu lui donnes un dossier, il descend dedans et te sort tout ce qu'il trouve, classé du plus supprimable au moins supprimable (les orphelins d'abord, puis les périmés, jamais ta copie principale). Tu coches ce qui doit partir. Et la liste se remplit pendant qu'il scanne, t'as pas besoin d'attendre la fin pour commencer.

Pas rassuré ? Tu commences par wtc --dry-run : il fait exactement le même boulot mais ne supprime rien, il te montre juste ce qui partirait. Sinon chacun part selon son état : un worktree sain passe par git worktree remove (s'il est sale il refuse, sauf si tu mets --force), un orphelin est viré du disque, et ta copie principale est grisée, tu peux même pas la cocher. Il saute aussi node_modules, target, .cargo et .cache pendant le scan, histoire de pas te proposer un dépôt planqué au fond d'une dépendance.

Si une suppression échoue les autres continuent, et à la fin le résumé t'annonce l'espace récupéré. Ça c'est la meilleure partie 🙌.