This patch series make cat-file reuse ref-filter logic, which based on 5a5b5f78 ([GSOC] ref-filter: add %(rest) atom) 1. Modified the logic of cat-file --batch, use verify_ref_format() and format_ref_array_item() to get object data. 2. Re-implement --textconv, --filters. Now cat-file can support most ref-filter atoms, like %(tree), %(parent), %(if)... There is still an unresolved issue: performance overhead is very large, so that when we use: git cat-file --batch --batch-all-objects >/dev/null on git.git, it may fail. ZheNing Hu (8): [GSOC] ref-filter: add obj-type check in grab contents [GSOC] ref-filter: add %(raw) atom [GSOC] ref-filter: use non-const ref_format in *_atom_parser() [GSOC] ref-filter: add %(rest) atom [GSOC] ref-filter: teach get_object() return useful value [GSOC] cat-file: reuse ref-filter logic [GSOC] cat-file: reuse err buf in batch_objet_write() [GSOC] cat-file: re-implement --textconv, --filters options Documentation/git-cat-file.txt | 6 + Documentation/git-for-each-ref.txt | 9 + builtin/cat-file.c | 267 ++++++------------------ builtin/tag.c | 2 +- ref-filter.c | 320 +++++++++++++++++++++++------ ref-filter.h | 13 +- t/t1006-cat-file.sh | 252 +++++++++++++++++++++++ t/t3203-branch-output.sh | 4 + t/t6300-for-each-ref.sh | 211 +++++++++++++++++++ t/t6301-for-each-ref-errors.sh | 2 +- t/t7004-tag.sh | 4 + t/t7030-verify-tag.sh | 4 + 12 files changed, 818 insertions(+), 276 deletions(-) base-commit: 1197f1a46360d3ae96bd9c15908a3a6f8e562207 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-980%2Fadlternative%2Fcat-file-batch-refactor-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-980/adlternative/cat-file-batch-refactor-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/980 -- gitgitgadget