If `--batch` or `--batch-check` is given, `cat-file` will read objects
from stdin, one per line, and print information about them.
-Each line is split at the first whitespace boundary. All characters
-before that whitespace are considered as a whole object name, and are
-parsed as if given to linkgit:git-rev-parse[1]. Characters after that
-whitespace can be accessed using the `%(rest)` atom (see below).
+Each line is considered as a whole object name, and is parsed as if
+given to linkgit:git-rev-parse[1].
You can specify the information shown for each object by using a custom
`<format>`. The `<format>` is copied literally to stdout for each
The size, in bytes, that the object takes up on disk. See the
note about on-disk sizes in the `CAVEATS` section below.
-`rest`::
- The text (if any) found after the first run of whitespace on the
- input line (i.e., the "rest" of the line).
-
If no format is specified, the default format is `%(objectname)
%(objecttype) %(objectsize)`.
enum object_type type;
unsigned long size;
unsigned long disk_size;
- const char *rest;
/*
* If mark_query is true, we do not expand anything, but rather
data->info.disk_sizep = &data->disk_size;
else
strbuf_addf(sb, "%lu", data->disk_size);
- } else if (is_atom("rest", atom, len)) {
- if (!data->mark_query && data->rest)
- strbuf_addstr(sb, data->rest);
} else
die("unknown format element: %.*s", len, atom);
}
warn_on_object_refname_ambiguity = 0;
while (strbuf_getline(&buf, stdin, '\n') != EOF) {
- char *p;
- int error;
-
- /*
- * Split at first whitespace, tying off the beginning of the
- * string and saving the remainder (or NULL) in data.rest.
- */
- p = strpbrk(buf.buf, " \t");
- if (p) {
- while (*p && strchr(" \t", *p))
- *p++ = '\0';
- }
- data.rest = p;
-
- error = batch_one_object(buf.buf, opt, &data);
+ int error = batch_one_object(buf.buf, opt, &data);
if (error)
return error;
}
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
'
-
- test_expect_success '--batch-check with %(rest)' '
- echo "$type this is some extra content" >expect &&
- echo "$sha1 this is some extra content" |
- git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
- test_cmp expect actual
- '
}
hello_content="Hello World"