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

Re: "git check-attr" lists macros as being "set" -- feature or bug?

From
Jeff King <peff@peff.net>
Date
Jul 26, 2011, 18:47 UTC
Message-ID
<20110726184756.GA520@sigill.intra.peff.net>
In-Reply-To
<4E2EAEA3.8000307@alum.mit.edu>
On Tue, Jul 26, 2011 at 02:10:11PM +0200, Michael Haggerty wrote:
Show 21 quoted lines
> I am doing some work on git-check-attr, and I noticed something funny:
> If a macro is used to set or clear attributes on a file in
> .gitattributes, then the name of the macro itself is listed as an
> attribute on that file.  Example:
> 
> $ git init
> Initialized empty Git repository in /tmp/foo/.git/
> $ echo '[attr]notest !test' > .gitattributes
> $ echo 'no notest' >> .gitattributes
> 
> # This is expected:
> $ git check-attr test -- no
> no: test: unspecified
> 
> # This I found surprising:
> $ git check-attr notest -- no
> no: notest: set
> 
> I don't see the correct behavior documented anywhere.  If this is
> considered a bug, then I offer to fix it.  If it is considered a
> feature, then I offer to document it.

I don't know the original rationale, but it seems like the only sane behavior to me. If you care about the attributes that the macro is setting, then you will test for those attributes, not caring whether they came from a macro or not. The only time you will ask about the macro itself is if you care whether the macro itself is set (though the point of macros is that you don't care about them, but only the well-known names of underlying attributes. So I think you would only want to see this if you were doing some maintenance on your gitattributes files themselves, rather than simply reading their values).

But maybe I'm missing something. Can you describe a use case where you would want "notest" to be listed as "unspecified" in your example?

-Peff
Previous: Michael HaggertyNext: Junio C Hamano
Message 2 of 4 in “"git check-attr" lists macros as being "set" -- feature or bug?”
  1. Michael HaggertyJul 26, 2011
  2. Jeff KingJul 26, 2011
  3. Junio C HamanoJul 26, 2011
  4. Michael HaggertyAug 3, 2011

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.