Browse Source

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.
maint
Junio C Hamano 12 years ago
parent
commit
062aeee8aa
  1. 10
      Documentation/git-cat-file.txt
  2. 20
      builtin/cat-file.c
  3. 7
      t/t1006-cat-file.sh

10
Documentation/git-cat-file.txt

@ -88,10 +88,8 @@ BATCH OUTPUT @@ -88,10 +88,8 @@ BATCH OUTPUT
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
@ -112,10 +110,6 @@ newline. The available atoms are: @@ -112,10 +110,6 @@ newline. The available atoms are:
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)`.


20
builtin/cat-file.c

@ -119,7 +119,6 @@ struct expand_data { @@ -119,7 +119,6 @@ struct expand_data {
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
@ -164,9 +163,6 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len, @@ -164,9 +163,6 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len,
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);
}
@ -277,21 +273,7 @@ static int batch_objects(struct batch_options *opt) @@ -277,21 +273,7 @@ static int batch_objects(struct batch_options *opt)
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;
}

7
t/t1006-cat-file.sh

@ -78,13 +78,6 @@ $content" @@ -78,13 +78,6 @@ $content"
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"

Loading…
Cancel
Save