cat-file: add --batch-check=<format>
[git.git] / Documentation / git-cat-file.txt
blob7c57eca9b08a73074430c5cb249fd95393d36557
1 git-cat-file(1)
2 ===============
4 NAME
5 ----
6 git-cat-file - Provide content or type and size information for repository objects
9 SYNOPSIS
10 --------
11 [verse]
12 'git cat-file' (-t | -s | -e | -p | <type> | --textconv ) <object>
13 'git cat-file' (--batch | --batch-check) < <list-of-objects>
15 DESCRIPTION
16 -----------
17 In its first form, the command provides the content or the type of an object in
18 the repository. The type is required unless '-t' or '-p' is used to find the
19 object type, or '-s' is used to find the object size, or '--textconv' is used
20 (which implies type "blob").
22 In the second form, a list of objects (separated by linefeeds) is provided on
23 stdin, and the SHA-1, type, and size of each object is printed on stdout.
25 OPTIONS
26 -------
27 <object>::
28         The name of the object to show.
29         For a more complete list of ways to spell object names, see
30         the "SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
32 -t::
33         Instead of the content, show the object type identified by
34         <object>.
36 -s::
37         Instead of the content, show the object size identified by
38         <object>.
40 -e::
41         Suppress all output; instead exit with zero status if <object>
42         exists and is a valid object.
44 -p::
45         Pretty-print the contents of <object> based on its type.
47 <type>::
48         Typically this matches the real type of <object> but asking
49         for a type that can trivially be dereferenced from the given
50         <object> is also permitted.  An example is to ask for a
51         "tree" with <object> being a commit object that contains it,
52         or to ask for a "blob" with <object> being a tag object that
53         points at it.
55 --textconv::
56         Show the content as transformed by a textconv filter. In this case,
57         <object> has be of the form <treeish>:<path>, or :<path> in order
58         to apply the filter to the content recorded in the index at <path>.
60 --batch::
61 --batch=<format>::
62         Print object information and contents for each object provided
63         on stdin.  May not be combined with any other options or arguments.
64         See the section `BATCH OUTPUT` below for details.
66 --batch-check::
67 --batch-check=<format>::
68         Print object information for each object provided on stdin.  May
69         not be combined with any other options or arguments.  See the
70         section `BATCH OUTPUT` below for details.
72 OUTPUT
73 ------
74 If '-t' is specified, one of the <type>.
76 If '-s' is specified, the size of the <object> in bytes.
78 If '-e' is specified, no output.
80 If '-p' is specified, the contents of <object> are pretty-printed.
82 If <type> is specified, the raw (though uncompressed) contents of the <object>
83 will be returned.
85 BATCH OUTPUT
86 ------------
88 If `--batch` or `--batch-check` is given, `cat-file` will read objects
89 from stdin, one per line, and print information about them.
91 Each line is considered as a whole object name, and is parsed as if
92 given to linkgit:git-rev-parse[1].
94 You can specify the information shown for each object by using a custom
95 `<format>`. The `<format>` is copied literally to stdout for each
96 object, with placeholders of the form `%(atom)` expanded, followed by a
97 newline. The available atoms are:
99 `objectname`::
100         The 40-hex object name of the object.
102 `objecttype`::
103         The type of of the object (the same as `cat-file -t` reports).
105 `objectsize`::
106         The size, in bytes, of the object (the same as `cat-file -s`
107         reports).
109 If no format is specified, the default format is `%(objectname)
110 %(objecttype) %(objectsize)`.
112 If `--batch` is specified, the object information is followed by the
113 object contents (consisting of `%(objectsize)` bytes), followed by a
114 newline.
116 For example, `--batch` without a custom format would produce:
118 ------------
119 <sha1> SP <type> SP <size> LF
120 <contents> LF
121 ------------
123 Whereas `--batch-check='%(objectname) %(objecttype)'` would produce:
125 ------------
126 <sha1> SP <type> LF
127 ------------
129 If a name is specified on stdin that cannot be resolved to an object in
130 the repository, then `cat-file` will ignore any custom format and print:
132 ------------
133 <object> SP missing LF
134 ------------
138 Part of the linkgit:git[1] suite