This patch series started as a (presumably) simple enhancement to make "git worktree prune" more helpful to users who shoot themselves in the foot[1] by causing a linked worktree to point at the main worktree, a situation which "git worktree add" tries hard to disallow but which users can accomplish merely be deleting and renaming directories (without even mucking around inside the .git/worktrees/<id> directory). The series grew as I realized that "git worktree move" does not employ the same protections as "git worktree add" and happily allows multiple linked worktrees to references the same location, thus that also had to be fixed. [1]: https://lore.kernel.org/git/CAPig+cTU8+N6Chimpoa2_T-TcXxw-3B9-9pjCLz7WeOh472P_A@xxxxxxxxxxxxxx/ Eric Sunshine (8): worktree: factor out repeated string literal worktree: prune corrupted worktree even if locked worktree: give "should be pruned?" function more meaningful name worktree: make high-level pruning re-usable worktree: prune duplicate entries referencing same worktree path worktree: prune linked worktree referencing main worktree path worktree: generalize candidate worktree path validation worktree: make "move" refuse to move atop missing registered worktree Documentation/git-worktree.txt | 4 +- builtin/worktree.c | 142 ++++++++++++++++++++++----------- t/t2401-worktree-prune.sh | 38 ++++++++- t/t2403-worktree-move.sh | 21 +++++ 4 files changed, 157 insertions(+), 48 deletions(-) -- 2.27.0.290.gba653c62da