Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH nd/attr-match-optim-more 2/2] attr: more matching optimizations from .gitignore

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:58

Junio C Hamano [off-list ref] writes:
Johannes Sixt [off-list ref] writes:
quoted
Am 10/9/2012 7:08, schrieb Junio C Hamano:
quoted
Imagine if we allowed only one attribute per line, instead of
multiple attributes on one line.
    
 - If you want to unset the attribute, you would write "path -attr".

 - If you want to reset the attribute to unspecified, you would
   write "path !attr".

Both are used in conjunction with some other (typically more
generic) pattern that sets, sets to a value, and/or unsets the
attribute, to countermand its effect.

If you were to allow "!path attr", what does it mean?  It obviously
is not about setting the attr to true or to a string value, but is
it countermanding an earlier set and telling us to unset the attr,
or make the attr unspecified?
If I have at the toplevel:

  *.txt  whitespace=tabwidth=4

and in a subdirectory

  *.txt  whitespace=tabwidth=8
  !README.txt

it could be interpreted as "do not apply *.txt to REAME.txt in this
subdirectory". That is, it does not countermand some _particular_
attribute setting, but says "use the attributes collected elsewhere".
It makes it unclear what "elsewhere" means, though (besides, it does
not match the way the matching logic works at all).
Ignoring the current implementation, I find the suggested semantics
somewhat intriguing.  It is something we may want to look into in
the future.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help