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
next 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).