worktree: invoke post-checkout hook (unless --no-checkout)
commitade546be4786637ba039478d6f027becb1160803
authorEric Sunshine <sunshine@sunshineco.com>
Thu, 7 Dec 2017 21:20:17 +0000 (7 16:20 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Dec 2017 22:02:28 +0000 (7 14:02 -0800)
treefec3e4c4218543e1871e7739dc9f432e04eb16be
parent95ec6b1b3393eb6e26da40c565520a8db9796e9f
worktree: invoke post-checkout hook (unless --no-checkout)

git-clone and git-checkout both invoke the post-checkout hook following
a successful checkout, yet git-worktree neglects to do so even though it
too "checks out" the worktree. Fix this oversight.

Implementation note: The newly-created worktree may reference a branch
or be detached. In the latter case, a commit lookup is performed, though
the result is used only in a boolean sense to (a) determine if the
commit actually exists, and (b) assign either the branch name or commit
ID to HEAD. Since the post-commit hook needs to know the ID of the
checked-out commit, the lookup now needs to be done in all cases, rather
than only when detached. Consequently, a new boolean is needed to handle
(b) since the lookup result itself can no longer perform that role.

Reported-by: Matthew K Gumbel <matthew.k.gumbel@intel.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/githooks.txt
builtin/worktree.c
t/t2025-worktree-add.sh