git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 8/8] refs: check refnames as fully qualified when resolving

From
Jeff King <peff@peff.net>
Date
Apr 30, 2024, 10:41 UTC
Message-ID
<20240430104152.GF1279403@coredump.intra.peff.net>
In-Reply-To
<ZjB5dPoEoq8D6qzJ@tanuki>
On Tue, Apr 30, 2024 at 06:54:12AM +0200, Patrick Steinhardt wrote:
Show 24 quoted lines
> > diff --git a/t/t1430-bad-ref-name.sh b/t/t1430-bad-ref-name.sh
> > index 120e1557d7..5fb780cb08 100755
> > --- a/t/t1430-bad-ref-name.sh
> > +++ b/t/t1430-bad-ref-name.sh
> > @@ -400,4 +400,14 @@ test_expect_success 'update-ref refuses non-underscore outside of refs/' '
> >  	test_grep "refusing to update ref with bad name" err
> >  '
> >  
> > +test_expect_success REFFILES 'rev-parse refuses non-pseudoref outside of refs/' '
> > +	git rev-parse HEAD >.git/bad &&
> > +	test_must_fail git rev-parse --verify bad
> > +'
> > +
> > +test_expect_success REFFILES 'rev-parse recognizes non-pseudoref via worktree' '
> > +	git rev-parse HEAD >.git/bad &&
> > +	test_must_fail git rev-parse --verify main-worktree/bad
> > +'
> 
> Are these really specific to the REFFILES backend? I would expect that
> the reftable backend sohuld fail to parse those, too. The fact that we
> write into the repository directly during the test setup doesn't change
> this, because all this patch is about is that we don't want to parse
> random files in the Git repo. And that is something we should want to
> enforce for all backends.

So this is where I will show my ignorance of reftables. I assume it still has to implement FETCH_HEAD as a file (since it holds extra data). But does it do the same for other names outside of "refs/"? I am assuming not in the paragraph below.

I would expect the test to succeed after my patches on any ref backend, since we'd enforce the syntax outside of the backend-specific code. But for a backend which does not look for the root name "foo" directly in .git/, it is not an interesting test. The looked-for name does not exist for it, so even if we did try the lookup, it would fail. We cannot distinguish the two cases from the outcome we see.

So I think dropping REFFILES it would still pass, but we are not really testing anything that interesting for reftables. That said, I would be OK dropping the REFFILES in the name of simplicity and just documenting it in the commit message.

-Peff
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 3 of 6 in “refs: check refnames as fully qualified when resolving”
  1. 8/8 refs: check refnames as fully qualified when resolvingJeff King, Apr 29, 2024
  2. Patrick SteinhardtApr 30, 2024
  3. Jeff KingApr 30, 2024
  4. Patrick SteinhardtApr 30, 2024
  5. Jeff KingMay 3, 2024
  6. Patrick SteinhardtMay 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.