From: Toon Claes Date: Wed, 03 Dec 2025 11:11:50 GMT Subject: Re: [PATCH] last-modified: support sparse checkouts Message-ID: <87qztbx1jd.fsf@iotcl.com> In-Reply-To: <75f862a5-2663-4211-b96c-d2c5d1c6f91e@gmail.com> Derrick Stolee writes: > On 11/29/2025 8:43 AM, Johannes Schindelin via GitGitGadget wrote: >> From: Johannes Schindelin >> >> In a sparse checkout, a user might want to run `last-modified` on a >> directory outside the worktree. >> >> And even in non-sparse checkouts, a user might need to run that command >> on a directory that does not exist in the worktree. >> >> These use cases should be supported via the `--` separator between >> revision and file arguments, which is even advertised in the >> documentation. This patch fixes a tiny bug that prevents that from >> working. > >> argc = parse_options(argc, argv, prefix, last_modified_options, >> last_modified_usage, >> - PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN_OPT); >> + PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN_OPT | >> + PARSE_OPT_KEEP_DASHDASH); > > I'm intrigued that this is the only fix that was required. I like it! >> +test_expect_success 'last-modified in sparse checkout' ' >> + test_when_finished "git sparse-checkout disable" && >> + git sparse-checkout set b && >> + check_last_modified -- a <<-\EOF > > Would we expect this to work without the '--'? Should it > fail for a directory that exists at HEAD but is outside of > the sparse-checkout? I don't think we need to complicate things that much. Arguments after the '--' are handled as pathspecs. If no paths match that pathspec, the output is simply nothing. Just to demonstrate: On 'master': $ git last-modified a fatal: ambiguous argument 'a': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' $ git last-modified -- a fatal: ambiguous argument 'a': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' With this patch applied: $ git last-modified a fatal: ambiguous argument 'a': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' $ git last-modified -- a $ echo $? 0 I agree this behavior is better. Thanks for this fix. I approve. -- Cheers, Toon