doc-diff: always use oids inside worktree
commit27064fb7fb82d607f3e2ccc5e9c93e0161bae134
authorJeff King <peff@peff.net>
Thu, 30 Aug 2018 08:12:03 +0000 (30 04:12 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Aug 2018 17:09:05 +0000 (30 10:09 -0700)
treebb626495f90165af1231a04c907ab12c72297617
parent7a76f5c611c25785cbb49374c04d366c274a3936
doc-diff: always use oids inside worktree

The doc-diff script immediately resolves its two endpoints
to actual object ids, so that we can reuse cached results
even if they appear under a different name. But we still use
the original name the user fed us when running "git
checkout" in our temporary worktree. This can lead to
confusing results:

  - the namespace inside the worktree is different than the
    one outside. In particular, "./doc-diff origin HEAD"
    will resolve HEAD inside the worktree, whose detached
    HEAD will be pointing at origin! As a result, such a
    diff would always be empty.

  - worse, we will store this result under the oid we got by
    resolving HEAD in the main worktree, thus polluting our
    cache

  - we didn't pass --detach, which meant that using a branch
    name would cause us to actually check out that branch,
    making it unavailable to other worktrees.

We can solve this by feeding the already-resolved object id
to git-checkout. That naturally forces a detached HEAD, but
just to make clear our expectation, let's explicitly pass
--detach.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/doc-diff