git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Eric Sunshine <sunshine@sunshineco.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: [PATCH] doc-diff: always use oids inside worktree
Date: Thu, 30 Aug 2018 04:12:03 -0400	[thread overview]
Message-ID: <20180830081202.GA10224@sigill.intra.peff.net> (raw)

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>
---
Another fixup for jk/diff-rendered-docs, noticed when trying it out on
Eric's worktree series (which, btw, rendered as expected once I fixed
this bug ;) ).

 Documentation/doc-diff | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/doc-diff b/Documentation/doc-diff
index 6e285e648c..c430fe7c99 100755
--- a/Documentation/doc-diff
+++ b/Documentation/doc-diff
@@ -82,7 +82,7 @@ generate_render_makefile () {
 	done
 }
 
-# render_tree <dirname> <committish>
+# render_tree <committish_oid>
 render_tree () {
 	# Skip install-man entirely if we already have an installed directory.
 	# We can't rely on make here, since "install-man" unconditionally
@@ -92,7 +92,7 @@ render_tree () {
 	# through.
 	if ! test -d "$tmp/installed/$1"
 	then
-		git -C "$tmp/worktree" checkout "$2" &&
+		git -C "$tmp/worktree" checkout --detach "$1" &&
 		make -j$parallel -C "$tmp/worktree" \
 			GIT_VERSION=omitted \
 			SOURCE_DATE_EPOCH=0 \
@@ -112,6 +112,6 @@ render_tree () {
 	fi
 }
 
-render_tree $from_oid "$from" &&
-render_tree $to_oid "$to" &&
+render_tree $from_oid &&
+render_tree $to_oid &&
 git -C $tmp/rendered diff --no-index "$@" $from_oid $to_oid
-- 
2.19.0.rc1.9.gf8a776330b

             reply	other threads:[~2018-08-30  8:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-30  8:12 Jeff King [this message]
2018-08-30  9:12 ` [PATCH] doc-diff: always use oids inside worktree Eric Sunshine
2018-08-30 19:55 ` [PATCH] doc/Makefile: remove tmp-doc-diff on "make clean" Jeff King
2018-08-30 20:34   ` Eric Sunshine
2018-08-30 20:36     ` Eric Sunshine
2018-08-30 20:52     ` Jeff King
2018-08-31  6:33   ` [PATCH 0/3] doc-diff: add "clean" mode & fix portability problem Eric Sunshine
2018-08-31  6:33     ` [PATCH 1/3] doc-diff: fix non-portable 'man' invocation Eric Sunshine
2018-08-31 19:49       ` Jeff King
2018-08-31  6:33     ` [PATCH 2/3] doc-diff: add --clean mode to remove temporary working gunk Eric Sunshine
2018-08-31 20:01       ` Jeff King
2018-08-31 21:24         ` Eric Sunshine
2018-08-31  6:33     ` [PATCH 3/3] doc/Makefile: drop doc-diff worktree and temporary files on "make clean" Eric Sunshine
2018-08-31 20:07       ` Jeff King
2018-08-31 21:37         ` Eric Sunshine
2018-09-17 18:32       ` Jonathan Nieder
2018-09-17 19:36         ` Junio C Hamano
2018-09-17 19:42           ` Jonathan Nieder
2018-09-17 19:48             ` Junio C Hamano
2018-09-17 19:55               ` Jonathan Nieder
2018-09-18 17:38               ` Jeff King
2018-09-17 20:43           ` Eric Sunshine
2018-09-17 20:52             ` Eric Sunshine
2018-08-31 18:49     ` [PATCH 0/3] doc-diff: add "clean" mode & fix portability problem Junio C Hamano
2018-08-31 20:08     ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180830081202.GA10224@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).