]> git.ipfire.org Git - thirdparty/git.git/commit
worktree: teach "repair" to fix outgoing links to worktrees
authorEric Sunshine <sunshine@sunshineco.com>
Mon, 31 Aug 2020 06:57:58 +0000 (02:57 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 31 Aug 2020 18:47:45 +0000 (11:47 -0700)
commitb214ab5aa597e748c228e657d4eb7c18960e6a67
tree3ddaf52516ed4595071c495d049c8ee5c6a192ea
parentbdd1f3e4da716012a52194cdfbc9c80dfdce87d4
worktree: teach "repair" to fix outgoing links to worktrees

The .git/worktrees/<id>/gitdir file points at the location of a linked
worktree's .git file. Its content must be of the form
/path/to/worktree/.git (from which the location of the worktree itself
can be derived by stripping the "/.git" suffix). If the gitdir file is
deleted or becomes corrupted or outdated, then Git will be unable to
find the linked worktree. An easy way for the gitdir file to become
outdated is for the user to move the worktree manually (without using
"git worktree move"). Although it is possible to manually update the
gitdir file to reflect the new linked worktree location, doing so
requires a level of knowledge about worktree internals beyond what a
user should be expected to know offhand.

Therefore, teach "git worktree repair" how to repair broken or outdated
.git/worktrees/<id>/gitdir files automatically. (For this to work, the
command must either be invoked from within the worktree whose gitdir
file requires repair, or from within the main or any linked worktree by
providing the path of the broken worktree as an argument to "git
worktree repair".)

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-worktree.txt
builtin/worktree.c
t/t2406-worktree-repair.sh
worktree.c
worktree.h