Jeff King <peff@xxxxxxxx> writes: > We need to revert that commit before the release. It can either be > replaced with: > > 1. A "--split" (or similar) option to use the behavior only when > desired. > > 2. Enabling splitting only when %(rest) is used in the output format. > > And I suppose it is too late in the cycle for either of those to go into > v1.8.4. That's a shame, but I think losing that particular patch does > not affect the rest of the series, so we are OK to ship without it. > > Thanks Joey for a timely bug report. Thanks. Will do this to jk/cat-file-batch-optim topic and merge it to 'master' for now. -- >8 -- Subject: [PATCH] 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. --- Documentation/git-cat-file.txt | 10 ++-------- builtin/cat-file.c | 20 +------------------- t/t1006-cat-file.sh | 7 ------- 3 files changed, 3 insertions(+), 34 deletions(-) diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt index 3ddec0b..10fbc6a 100644 --- a/Documentation/git-cat-file.txt +++ b/Documentation/git-cat-file.txt @@ -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: 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)`. diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 163ce6c..4253460 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -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, 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) 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; } diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh index d499d02..4e911fb 100755 --- a/t/t1006-cat-file.sh +++ b/t/t1006-cat-file.sh @@ -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" -- 1.8.4-rc1-125-g7a0ec02 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html