Claude-worktrees opruimen

Aan het einde van deze gids zijn afgehandelde Claude Code worktrees onder .claude/worktrees/ van je werkkopie verwijderd, en is WebStorm weer snel.

Voorwaarden:

  • Je werkt op de tapster-backend repo-root.
  • git is beschikbaar en je hebt netwerktoegang om origin/main te fetchen.
  • WebStorm heeft .claude/worktrees/ als Excluded folder gemarkeerd (rechtsklik op de map, Mark Directory as, Excluded). Anders blijft WebStorm elke nieuwe worktree mee-indexeren.

1. Dry-run draaien

Vanuit de repo-root:

scripts/prune-claude-worktrees.sh

Het script verwijdert standaard niets, het toont alleen wat het zou doen:

WOULD REMOVE (merged-or-empty): /.../.claude/worktrees/adoring-nobel-ee4fb9 [claude/adoring-nobel-ee4fb9]
...
Dry-run summary: would remove 12 worktree(s), keep 0, skip 0
Run with --apply to actually delete.

Verklaring per regel:

  • WOULD REMOVE (merged-or-empty): branch tip is een ancestor van origin/main, dus ofwel al gemerged of nooit gedivergeerd. Veilig.
  • WOULD REMOVE (stale-Nd): branch is gedivergeerd, maar de laatste commit is ouder dan de drempel (zie stap 3).
  • KEEP: actieve worktree, blijft staan.
  • SKIP (dirty): er staan uncommitted wijzigingen, het script raakt deze niet aan.
  • SKIP (current branch): de branch waar je nu zelf op staat.

2. Echt opruimen

Als de dry-run er goed uitziet:

scripts/prune-claude-worktrees.sh --apply

Het script:

  1. Verwijdert per worktree de checkout met git worktree remove --force.
  2. Verwijdert de bijbehorende claude/* branch met git branch -D.
  3. Draait git worktree prune voor administratie.
  4. Ruimt lege parent-mappen onder .claude/worktrees/ op.

3. Drempel voor stale worktrees aanpassen

Default is 7 dagen. Voor een ruimere of strakkere drempel:

scripts/prune-claude-worktrees.sh --max-age 14           # dry-run, 14 dagen
scripts/prune-claude-worktrees.sh --max-age 14 --apply   # toepassen

4. Dangling branches meenemen

Sommige claude/* branches hebben geen worktree meer (eerder opgeruimde sessies, half-werkende runs). Met --prune-branches ruimt het script die mee op, met dezelfde criteria (ancestor van main of ouder dan --max-age dagen):

scripts/prune-claude-worktrees.sh --prune-branches             # dry-run
scripts/prune-claude-worktrees.sh --prune-branches --apply     # toepassen

De output bevat dan een extra blok met WOULD REMOVE branch of REMOVING branch regels.

5. Wanneer draaien

Niet automatisch. Draai het script handmatig wanneer:

  • WebStorm langzaam wordt of veel CPU verbruikt aan indexering.
  • git worktree list meer dan een handvol regels toont.
  • Een Claude-sessie of subagent halverwege is afgebroken en je een orphan worktree ziet.

Cron op een dev-machine wordt afgeraden, je wilt niet dat een worktree die je net even liet liggen ‘s nachts wordt verwijderd.

Wat te doen bij fouten

Symptoom Oorzaak Actie
warn: could not fetch origin/main Geen netwerk of git auth-issue Het script gebruikt de lokale origin/main. Doe handmatig git fetch origin main als je twijfelt over de status
SKIP (dirty) op een worktree die je niet meer nodig hebt Er staan uncommitted wijzigingen in Open de worktree, beoordeel of de wijzigingen weg mogen, gebruik git -C <pad> stash of commit, draai het script opnieuw
Branch staat in KEEP terwijl je hem wel wilt verwijderen Diverged en jonger dan --max-age Verlaag de drempel met --max-age 0 (alles wat divergeert blijft staan), of verwijder de branch handmatig met git branch -D <naam>
error: refusing to remove the current working tree Je staat zelf in een worktree onder .claude/worktrees/ Wissel eerst naar de hoofd-checkout (cd ..) en draai het script opnieuw

Verwante documentatie

Het script staat in scripts/prune-claude-worktrees.sh. Run met -h voor de help-tekst.