Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> 于2023年1月12日周四 18:15写道: > > > On Wed, Jan 11 2023, ZheNing Hu via GitGitGadget wrote: > > > From: ZheNing Hu <adlternative@xxxxxxxxx> > > > > Because sometimes we want to check if the files in the > > index match the sparse specification by using > > `git ls-files -t`, but `-t` option have semi-deprecated, > > > > So introduce "%(skipworktree)" atom to git ls-files > > `--format` option. When we use this option, if the file > > match the sparse specification and removed from working > > tree, it will output "yes", othewise, output "no". > > Your code says "true" and "false", not "yes" or "no". Which is it ?:) > true/false. This is a typo. > More generally it's unfortanute that we don't support the ref-filter.c > formats more generally, then we could just make this 1 or the empty > string, and you'd do: > > %(if)%(skipworktree)%(then)true%(else)false%(end) > > Now, I don't think your change needs to be blocked by generalizing that > if/else stuff in ref-filter, that would probably be some thousand-line > series if we're lucky, even though it's a good eventual goal. > Aha, if we were to introduce %(if) %(else) in the ref-filter I'm sure that would be a very complicated situation. > But I feel strongly that you should not pick "true", or "false", or > "yes" or "no", but rather "1" or "", here, as doing so will be > future-proof when it comes to this format being compatible with using > the ref-filter.c conditional support. > > Good point. > > Signed-off-by: ZheNing Hu <adlternative@xxxxxxxxx> > > --- > > ls-files: add %(skipworktree) atom to format option > > > > git ls-files -t is semi-deprecated, but in face we need to use -t option > > to check if a file in the index match the sparse specification. > > > > So I think this feature can be migrated to git ls-files --format, add a > > %(skipworktree) atom to indicate whether the file in the index match the > > sparse specification and is removed from the working tree. > > > > v1: add %(skipworktree) atom to git ls-files format option. > > > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1458%2Fadlternative%2Fzh%2Fls-file-format-skipworktree-v1 > > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1458/adlternative/zh/ls-file-format-skipworktree-v1 > > Pull-Request: https://github.com/gitgitgadget/git/pull/1458 > > > > Documentation/git-ls-files.txt | 6 ++++++ > > builtin/ls-files.c | 3 +++ > > t/t3013-ls-files-format.sh | 22 ++++++++++++++++++++++ > > 3 files changed, 31 insertions(+) > > > > diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt > > index 440043cdb8e..0e50307121d 100644 > > --- a/Documentation/git-ls-files.txt > > +++ b/Documentation/git-ls-files.txt > > @@ -260,6 +260,12 @@ eolattr:: > > that applies to the path. > > path:: > > The pathname of the file which is recorded in the index. > > +skipworktree:: > > + If the file in the index marked with SKIP_WORKTREE bit. > > + It means the file do not match the sparse specification > > + and removed from working tree. > > + See link:technical/sparse-checkout.txt[sparse-checkout] > > + for more information. > > I likewise think this won't need to be blocked, but this is a sign that > we should probably move these to the main doc namespace. See 1e2320161d2 > (docs: move http-protocol docs to man section 5, 2022-08-04) (and > commits before that) for prior art. > > But what we should fix here is that this ling is wrong, as you can see > in that commit we need to link to the HTML docs for these (confusing as > that is). > > Or (and I didn't check) if we never generate the *.html either for this > particular one this link will always be broken. I.e. we won't install > this, nor the HTML docs. Yeah, you should be right: there may be a problem with the link here, maybe this needs a patch to migrate technical/sparse-checkout.txt. Thanks, ZheNing Hu