threads / discuss / 50757

"man gitattributes" doesn't explain comma-separated attribute values

Subject: "man gitattributes" doesn't explain comma-separated attribute values

## tl;dr

7 messages between Mar 16, 2019 and Mar 18, 2019.

replies: 6people: 4as markdown or json

Robert P. J. Day· Mar 16, 2019, 12:22 UTC · lore
  more nitpicking, but i'm working my way through the intricacies of
attributes and putting together some (allegedly) simple examples for a
class i'm giving on monday, and i noted a couple possible shortcomings
in "man gitattributes".
  as a working example, i looked at the top-level .gitattributes file
in the git source code itself, which opens with:
  * whitespace=!indent,trail,space
  *.[ch] whitespace=indent,trail,space diff=cpp
  *.sh whitespace=indent,trail,space eol=lf
  ... snip ...

first observation is that i see nothing in the man page that explains the notion of a comma-separated list of attribute values. maybe i missed it or maybe it's supposed to be intuitively obvious, but there's nothing i can see that mentions the possibility.

  related to that is that there is no explanation as to how to
interpret:
  * whitespace=!indent,trail,space

does the "!" apply to "indent" or to the entire list? the man page doesn't say.

  just being pedantic again.
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Ævar Arnfjörð Bjarmason· Mar 16, 2019, 13:13 UTC · re: Robert P. J. Day · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

On Sat, Mar 16 2019, Robert P. J. Day wrote:
Show 29 quoted lines
>   more nitpicking, but i'm working my way through the intricacies of
> attributes and putting together some (allegedly) simple examples for a
> class i'm giving on monday, and i noted a couple possible shortcomings
> in "man gitattributes".
>
>   as a working example, i looked at the top-level .gitattributes file
> in the git source code itself, which opens with:
>
>   * whitespace=!indent,trail,space
>   *.[ch] whitespace=indent,trail,space diff=cpp
>   *.sh whitespace=indent,trail,space eol=lf
>   ... snip ...
>
> first observation is that i see nothing in the man page that explains
> the notion of a comma-separated list of attribute values. maybe i
> missed it or maybe it's supposed to be intuitively obvious, but
> there's nothing i can see that mentions the possibility.
>
>   related to that is that there is no explanation as to how to
> interpret:
>
>   * whitespace=!indent,trail,space
>
> does the "!" apply to "indent" or to the entire list? the man page
> doesn't say.
>
>   just being pedantic again.
>
> rday

It's documented in gitglossary, search for "attr". That's not an excuse or a statement that that doesn't suck, just a pointer for anyone interested in fixing the docs.

Robert P. J. Day· Mar 16, 2019, 13:48 UTC · re: Ævar Arnfjörð Bjarmason · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

On Sat, 16 Mar 2019, Ævar Arnfjörð Bjarmason wrote:
Show 36 quoted lines
>
> On Sat, Mar 16 2019, Robert P. J. Day wrote:
>
> >   more nitpicking, but i'm working my way through the intricacies of
> > attributes and putting together some (allegedly) simple examples for a
> > class i'm giving on monday, and i noted a couple possible shortcomings
> > in "man gitattributes".
> >
> >   as a working example, i looked at the top-level .gitattributes file
> > in the git source code itself, which opens with:
> >
> >   * whitespace=!indent,trail,space
> >   *.[ch] whitespace=indent,trail,space diff=cpp
> >   *.sh whitespace=indent,trail,space eol=lf
> >   ... snip ...
> >
> > first observation is that i see nothing in the man page that explains
> > the notion of a comma-separated list of attribute values. maybe i
> > missed it or maybe it's supposed to be intuitively obvious, but
> > there's nothing i can see that mentions the possibility.
> >
> >   related to that is that there is no explanation as to how to
> > interpret:
> >
> >   * whitespace=!indent,trail,space
> >
> > does the "!" apply to "indent" or to the entire list? the man page
> > doesn't say.
> >
> >   just being pedantic again.
> >
> > rday
>
> It's documented in gitglossary, search for "attr". That's not an excuse
> or a statement that that doesn't suck, just a pointer for anyone
> interested in fixing the docs.
  ah, gotcha. thenk you kindly.
rday
Johannes Sixt· Mar 16, 2019, 21:58 UTC · re: Robert P. J. Day · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

Am 16.03.19 um 13:22 schrieb Robert P. J. Day:
Show 10 quoted lines
>   as a working example, i looked at the top-level .gitattributes file
> in the git source code itself, which opens with:
> 
>   * whitespace=!indent,trail,space
>   *.[ch] whitespace=indent,trail,space diff=cpp
>   *.sh whitespace=indent,trail,space eol=lf
>   ... snip ...
> 
> first observation is that i see nothing in the man page that explains
> the notion of a comma-separated list of attribute values.

This comma-separated list is not a property of attributes in general, but a property of the whitespace attribute in particular. See core.whitespace in git-config(1) and "Checking whitespace errors" in gitattributes(5).

-- Hannes
Robert P. J. Day· Mar 16, 2019, 22:09 UTC · re: Johannes Sixt · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

On Sat, 16 Mar 2019, Johannes Sixt wrote:
Show 16 quoted lines
> Am 16.03.19 um 13:22 schrieb Robert P. J. Day:
> >   as a working example, i looked at the top-level .gitattributes file
> > in the git source code itself, which opens with:
> >
> >   * whitespace=!indent,trail,space
> >   *.[ch] whitespace=indent,trail,space diff=cpp
> >   *.sh whitespace=indent,trail,space eol=lf
> >   ... snip ...
> >
> > first observation is that i see nothing in the man page that explains
> > the notion of a comma-separated list of attribute values.
>
> This comma-separated list is not a property of attributes in
> general, but a property of the whitespace attribute in particular.
> See core.whitespace in git-config(1) and "Checking whitespace
> errors" in gitattributes(5).
  ah, i was digging through the code trying to figure out where the
whole CSV thing was explained -- it's massively helpful to understand
that that property is specific to whitespace. that does not appear to
be clarified anywhere.
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Johannes Sixt· Mar 17, 2019, 08:18 UTC · re: Robert P. J. Day · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

Am 16.03.19 um 23:09 schrieb Robert P. J. Day:
Show 23 quoted lines
> On Sat, 16 Mar 2019, Johannes Sixt wrote:
> 
>> Am 16.03.19 um 13:22 schrieb Robert P. J. Day:
>>>   as a working example, i looked at the top-level .gitattributes file
>>> in the git source code itself, which opens with:
>>>
>>>   * whitespace=!indent,trail,space
>>>   *.[ch] whitespace=indent,trail,space diff=cpp
>>>   *.sh whitespace=indent,trail,space eol=lf
>>>   ... snip ...
>>>
>>> first observation is that i see nothing in the man page that explains
>>> the notion of a comma-separated list of attribute values.
>>
>> This comma-separated list is not a property of attributes in
>> general, but a property of the whitespace attribute in particular.
>> See core.whitespace in git-config(1) and "Checking whitespace
>> errors" in gitattributes(5).
> 
>   ah, i was digging through the code trying to figure out where the
> whole CSV thing was explained -- it's massively helpful to understand
> that that property is specific to whitespace. that does not appear to
> be clarified anywhere.

But it is. The very first paragraph of gitattributes(5) states that attributes are whitespace separated. From this, conclude that the comma-separated list must pertain to the whitespace attribute. Now follow the documentation of that, and you end up at core.whitespace in git-config(1). There you have it as the very first phrase.

-- Hannes
Philip Oakley· Mar 18, 2019, 10:10 UTC · re: Johannes Sixt · lore

Re: "man gitattributes" doesn't explain comma-separated attribute values

On 17/03/2019 08:18, Johannes Sixt wrote:
Show 25 quoted lines
> Am 16.03.19 um 23:09 schrieb Robert P. J. Day:
>> On Sat, 16 Mar 2019, Johannes Sixt wrote:
>>
>>> Am 16.03.19 um 13:22 schrieb Robert P. J. Day:
>>>>    as a working example, i looked at the top-level .gitattributes file
>>>> in the git source code itself, which opens with:
>>>>
>>>>    * whitespace=!indent,trail,space
>>>>    *.[ch] whitespace=indent,trail,space diff=cpp
>>>>    *.sh whitespace=indent,trail,space eol=lf
>>>>    ... snip ...
>>>>
>>>> first observation is that i see nothing in the man page that explains
>>>> the notion of a comma-separated list of attribute values.
>>> This comma-separated list is not a property of attributes in
>>> general, but a property of the whitespace attribute in particular.
>>> See core.whitespace in git-config(1) and "Checking whitespace
>>> errors" in gitattributes(5).
>>    ah, i was digging through the code trying to figure out where the
>> whole CSV thing was explained -- it's massively helpful to understand
>> that that property is specific to whitespace. that does not appear to
>> be clarified anywhere.
> But it is. The very first paragraph of gitattributes(5) states that
> attributes are whitespace separated. From this, conclude that the
> comma-separated list must pertain to the whitespace attribute.

I can't say that I follow that 'by omission'  argument. It is one of those argument types that sounds good in retrospect but is very hard for the unknowing reader to guess, especially as commas are widely taught as being one of the ubiquitous separators.

There is a similar issue with '/' in refs regarding the subtle distinctions between embedded characters that have a common convenience meaning vs the idea that they are all just a single whitespace separated string.

Given that, Robert may be able to suggest a short addendum that clarifies that the comma is processed elsewhere (IIUC).

Show 5 quoted lines
>   Now
> follow the documentation of that, and you end up at core.whitespace in
> git-config(1). There you have it as the very first phrase.
>
> -- Hannes
-- 
Philip

← back to recent threads