summaryrefslogtreecommitdiff
path: root/Documentation/git-check-attr.adoc
blob: 503b6446574d18cea9aea0cb4303a1d0464bf862 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
git-check-attr(1)
=================

NAME
----
git-check-attr - Display gitattributes information


SYNOPSIS
--------
[verse]
'git check-attr' [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
'git check-attr' --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]

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 pathnames from the standard input, one per line,
	instead of from the command line.

-z::
	The output format is modified to be machine-parsable.
	If `--stdin` is also given, input paths are separated
	with a NUL character instead of a linefeed character.

--source=<tree-ish>::
	Check attributes against the specified tree-ish. It is common to
	specify the source tree by naming a commit, branch, or tag associated
	with it.

\--::
	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

unless `-z` is in effect, in which case NUL is used as delimiter:
<path> NUL <attribute> NUL <info> NUL


<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