This series started as a fix for a bug reported by Peff[1] in which the "database" of worktrees could be corrupted (or at least become internally inconsistent) by having multiple worktree entries associated with the same path. Peff's particular use-case for git-worktree is Documentation/doc-diff which wants to re-use a worktree if it exists or create it anew if it doesn't. Unfortunately, this is a bit more difficult than it should be if the worktree directory is deleted manually (without pruning the worktree entry) between script invocations. To simplify this use-case for tools, it was suggested[2] that "git worktree add --force" could deal with the problem of a registered-but-missing worktree (much as a tool might rely upon "mkdir -p" to create or re-use an existing directory). This series implements that proposal, as well. Fixing the original bug revealed another existing bug, and after several additional "while we're here" changes, the series ended up a bit longer than expected. [1]: https://public-inbox.org/git/20180821193556.GA859@xxxxxxxxxxxxxxxxxxxxx/ [2]: https://public-inbox.org/git/CAPig+cTghgbBo5VfZN+VP2VM00nPkhUqm0dOUqO37arxraxBKw@xxxxxxxxxxxxxx/ Eric Sunshine (9): worktree: don't die() in library function find_worktree() worktree: move delete_git_dir() earlier in file for upcoming new callers worktree: generalize delete_git_dir() to reduce code duplication worktree: prepare for more checks of whether path can become worktree worktree: disallow adding same path multiple times worktree: teach 'add' to respect --force for registered but missing path worktree: teach 'move' to override lock when --force given twice worktree: teach 'remove' to override lock when --force given twice worktree: delete .git/worktrees if empty after 'remove' Documentation/git-worktree.txt | 12 +++- builtin/worktree.c | 113 ++++++++++++++++++++++----------- t/t2025-worktree-add.sh | 18 ++++++ t/t2028-worktree-move.sh | 44 +++++++++++++ worktree.c | 6 +- 5 files changed, 154 insertions(+), 39 deletions(-) -- 2.19.0.rc1.350.ge57e33dbd1