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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.