Revert "cat-file: split --batch input lines on whitespace"

This reverts commit c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac; the
update assumed that people only used the command to read from
"rev-list --objects" output, whose lines begin with a 40-hex object
name followed by a whitespace, but it turns out that scripts feed
random extended SHA-1 expressions (e.g. "HEAD:$pathname") in which
a whitespace has to be kept.
This commit is contained in:
Junio C Hamano
2013-08-02 09:29:30 -07:00
parent d099b7173d
commit 062aeee8aa
3 changed files with 3 additions and 34 deletions

View File

@ -88,10 +88,8 @@ BATCH OUTPUT
If `--batch` or `--batch-check` is given, `cat-file` will read objects If `--batch` or `--batch-check` is given, `cat-file` will read objects
from stdin, one per line, and print information about them. from stdin, one per line, and print information about them.
Each line is split at the first whitespace boundary. All characters Each line is considered as a whole object name, and is parsed as if
before that whitespace are considered as a whole object name, and are given to linkgit:git-rev-parse[1].
parsed as if given to linkgit:git-rev-parse[1]. Characters after that
whitespace can be accessed using the `%(rest)` atom (see below).
You can specify the information shown for each object by using a custom You can specify the information shown for each object by using a custom
`<format>`. The `<format>` is copied literally to stdout for each `<format>`. The `<format>` is copied literally to stdout for each
@ -112,10 +110,6 @@ newline. The available atoms are:
The size, in bytes, that the object takes up on disk. See the The size, in bytes, that the object takes up on disk. See the
note about on-disk sizes in the `CAVEATS` section below. 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) If no format is specified, the default format is `%(objectname)
%(objecttype) %(objectsize)`. %(objecttype) %(objectsize)`.

View File

@ -119,7 +119,6 @@ struct expand_data {
enum object_type type; enum object_type type;
unsigned long size; unsigned long size;
unsigned long disk_size; unsigned long disk_size;
const char *rest;
/* /*
* If mark_query is true, we do not expand anything, but rather * If mark_query is true, we do not expand anything, but rather
@ -164,9 +163,6 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len,
data->info.disk_sizep = &data->disk_size; data->info.disk_sizep = &data->disk_size;
else else
strbuf_addf(sb, "%lu", data->disk_size); 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 } else
die("unknown format element: %.*s", len, atom); die("unknown format element: %.*s", len, atom);
} }
@ -277,21 +273,7 @@ static int batch_objects(struct batch_options *opt)
warn_on_object_refname_ambiguity = 0; warn_on_object_refname_ambiguity = 0;
while (strbuf_getline(&buf, stdin, '\n') != EOF) { while (strbuf_getline(&buf, stdin, '\n') != EOF) {
char *p; int error = batch_one_object(buf.buf, opt, &data);
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);
if (error) if (error)
return error; return error;
} }

View File

@ -78,13 +78,6 @@ $content"
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual && echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect 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" hello_content="Hello World"