From: Junio C Hamano <gitster@pobox.com>
To: "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, vdye@github.com, shaoxuan.yuan02@gmail.com,
Derrick Stolee <derrickstolee@github.com>
Subject: Re: [PATCH 4/4] object-name: diagnose trees in index properly
Date: Mon, 11 Apr 2022 23:32:58 -0700 [thread overview]
Message-ID: <xmqqlewaerqd.fsf@gitster.g> (raw)
In-Reply-To: <99c09ccc2406e4f54c620bd7fb2d1205386e23a6.1649349442.git.gitgitgadget@gmail.com> (Derrick Stolee via GitGitGadget's message of "Thu, 07 Apr 2022 16:37:22 +0000")
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Derrick Stolee <derrickstolee@github.com>
>
> When running 'git show :<path>' where '<path>' is a directory, then
> there is a subtle difference between a full checkout and a sparse
> checkout. The error message from diagnose_invalid_index_path() reports
> whether the path is on disk or not. The full checkout will have the
> directory on disk, but the path will not be in the index. The sparse
> checokut could have the directory not exist, specifically when that
> directory is outside of the sparse-checkout cone.
>
> In the case of a sparse index, we have yet another state: the path can
> be a sparse directory in the index. In this case, the error message from
> diagnose_invalid_index_path() would erroneously say "path '<path>' is in
> the index, but not at stage 0", which is false.
>
> Add special casing around sparse directory entries so we get to the
> correct error message. This requires two checks in order to get parity
> with the normal sparse-checkout case.
That all makes sense, but let me ask a more basic (and possibly
stupid) question and a half.
- When running 'git cmd :<path>' where '<path>' is a directory,
even before the "sparse-index" or "sparse-checkout" world, I
sometimes wished that ":<path>" resolved to the object name of
the tree recorded in the cache-tree, if we have one. If we are
living in the "sparse-index" world, and the paths underneath
'<path>' are not in the index (because we are not interested in
them), we should be able answer "git rev-parse :<path>" with the
name of the tree object. It is a "new feature" regardless of
sparse-index, but I wonder if it is sensible to add more code to
engrave in stone that we would not support it and keep treating
the index as if it is a flat list of paths to blobs (and commits,
for submodules)?
- When running 'git cmd :<path>' where '<path>' is *not* a
directory but is not in the index because of "sparse-index"
(i.e. a leading directory of '<path>' is represented as a tree in
the index), should ":<path>" index expand the "tree" index entry
on-demand, so that <path> has its own entry in the index, as if
no "sparse-index" is in effect? The tests I saw in the series
were mostly asserted with test_sparse_match, not test_all_match,
so I couldn't tell what the expectations are.
- More generally, if <leading> path is represented as a
"sparse-dir" entry, should ":<leading>/<lower>" cause the index
entry for <leading> path to be expanded on-demand? I am guessing
that the answer is yes, as we wouldn't be able to even tell if
such a path <leading>/<lower> would exist in the index if the
index were converted to full upfront.
Thanks.
next prev parent reply other threads:[~2022-04-12 6:33 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-07 16:37 [PATCH 0/4] Sparse index integration with 'git show' Derrick Stolee via GitGitGadget
2022-04-07 16:37 ` [PATCH 1/4] t1092: add compatibility tests for " Derrick Stolee via GitGitGadget
2022-04-14 18:37 ` Josh Steadmon
2022-04-18 12:23 ` Derrick Stolee
2022-04-07 16:37 ` [PATCH 2/4] show: integrate with the sparse index Derrick Stolee via GitGitGadget
2022-04-14 18:50 ` Josh Steadmon
2022-04-18 12:28 ` Derrick Stolee
2022-04-07 16:37 ` [PATCH 3/4] object-name: reject trees found in the index Derrick Stolee via GitGitGadget
2022-04-14 18:57 ` Josh Steadmon
2022-04-18 12:31 ` Derrick Stolee
2022-04-07 16:37 ` [PATCH 4/4] object-name: diagnose trees in index properly Derrick Stolee via GitGitGadget
2022-04-07 20:46 ` Philip Oakley
2022-04-12 6:32 ` Junio C Hamano [this message]
2022-04-12 13:52 ` Derrick Stolee
2022-04-12 15:45 ` Junio C Hamano
2022-04-14 18:37 ` [PATCH 0/4] Sparse index integration with 'git show' Josh Steadmon
2022-04-14 21:14 ` Junio C Hamano
2022-04-18 12:42 ` Derrick Stolee
2022-04-26 20:43 ` [PATCH v2 0/5] " Derrick Stolee via GitGitGadget
2022-04-26 20:43 ` [PATCH v2 1/5] t1092: add compatibility tests for " Derrick Stolee via GitGitGadget
2022-04-26 20:43 ` [PATCH v2 2/5] show: integrate with the sparse index Derrick Stolee via GitGitGadget
2022-04-26 20:43 ` [PATCH v2 3/5] object-name: reject trees found in the index Derrick Stolee via GitGitGadget
2022-04-26 20:43 ` [PATCH v2 4/5] object-name: diagnose trees in index properly Derrick Stolee via GitGitGadget
2022-04-26 20:43 ` [PATCH v2 5/5] rev-parse: integrate with sparse index Derrick Stolee via GitGitGadget
2022-04-26 20:55 ` [PATCH v2 0/5] Sparse index integration with 'git show' Junio C Hamano
2022-04-27 13:47 ` Derrick Stolee
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqlewaerqd.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=shaoxuan.yuan02@gmail.com \
--cc=vdye@github.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.
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 NNTP newsgroup(s).