mirror of
https://github.com/git/git.git
synced 2024-10-31 14:27:54 +01:00
f1ed7fea79
check-attr and check-ignore have the potential to deadlock callers which do not read back the output in real-time. For example, if a caller writes N paths out and then reads N lines back in, it risks becoming blocked on write() to check-*, and check-* is blocked on write back to the caller. Somebody has to buffer; the pipe buffers provide some leeway, but they are limited. Thanks to Peff for pointing this out: http://article.gmane.org/gmane.comp.version-control.git/220534 Signed-off-by: Adam Spiers <git@adamspiers.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
114 lines
2.9 KiB
Text
114 lines
2.9 KiB
Text
git-check-attr(1)
|
|
=================
|
|
|
|
NAME
|
|
----
|
|
git-check-attr - Display gitattributes information
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git check-attr' [-a | --all | attr...] [--] pathname...
|
|
'git check-attr' --stdin [-z] [-a | --all | attr...] < <list-of-paths>
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
For every pathname, this command will list if each attribute is 'unspecified',
|
|
'set', or 'unset' as a gitattribute on that pathname.
|
|
|
|
OPTIONS
|
|
-------
|
|
-a, --all::
|
|
List all attributes that are associated with the specified
|
|
paths. If this option is used, then 'unspecified' attributes
|
|
will not be included in the output.
|
|
|
|
--cached::
|
|
Consider `.gitattributes` in the index only, ignoring the working tree.
|
|
|
|
--stdin::
|
|
Read file names from stdin instead of from the command-line.
|
|
|
|
-z::
|
|
Only meaningful with `--stdin`; paths are separated with a
|
|
NUL character instead of a linefeed character.
|
|
|
|
\--::
|
|
Interpret all preceding arguments as attributes and all following
|
|
arguments as path names.
|
|
|
|
If none of `--stdin`, `--all`, or `--` is used, the first argument
|
|
will be treated as an attribute and the rest of the arguments as
|
|
pathnames.
|
|
|
|
OUTPUT
|
|
------
|
|
|
|
The output is of the form:
|
|
<path> COLON SP <attribute> COLON SP <info> LF
|
|
|
|
<path> is the path of a file being queried, <attribute> is an attribute
|
|
being queried and <info> can be either:
|
|
|
|
'unspecified';; when the attribute is not defined for the path.
|
|
'unset';; when the attribute is defined as false.
|
|
'set';; when the attribute is defined as true.
|
|
<value>;; when a value has been assigned to the attribute.
|
|
|
|
Buffering happens as documented under the `GIT_FLUSH` option in
|
|
linkgit:git[1]. The caller is responsible for avoiding deadlocks
|
|
caused by overfilling an input buffer or reading from an empty output
|
|
buffer.
|
|
|
|
EXAMPLES
|
|
--------
|
|
|
|
In the examples, the following '.gitattributes' file is used:
|
|
---------------
|
|
*.java diff=java -crlf myAttr
|
|
NoMyAttr.java !myAttr
|
|
README caveat=unspecified
|
|
---------------
|
|
|
|
* Listing a single attribute:
|
|
---------------
|
|
$ git check-attr diff org/example/MyClass.java
|
|
org/example/MyClass.java: diff: java
|
|
---------------
|
|
|
|
* Listing multiple attributes for a file:
|
|
---------------
|
|
$ git check-attr crlf diff myAttr -- org/example/MyClass.java
|
|
org/example/MyClass.java: crlf: unset
|
|
org/example/MyClass.java: diff: java
|
|
org/example/MyClass.java: myAttr: set
|
|
---------------
|
|
|
|
* Listing all attributes for a file:
|
|
---------------
|
|
$ git check-attr --all -- org/example/MyClass.java
|
|
org/example/MyClass.java: diff: java
|
|
org/example/MyClass.java: myAttr: set
|
|
---------------
|
|
|
|
* Listing an attribute for multiple files:
|
|
---------------
|
|
$ git check-attr myAttr -- org/example/MyClass.java org/example/NoMyAttr.java
|
|
org/example/MyClass.java: myAttr: set
|
|
org/example/NoMyAttr.java: myAttr: unspecified
|
|
---------------
|
|
|
|
* Not all values are equally unambiguous:
|
|
---------------
|
|
$ git check-attr caveat README
|
|
README: caveat: unspecified
|
|
---------------
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkgit:gitattributes[5].
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|