git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 00/19] [GSOC] cat-file: reuse ref-filter logic

From
ZheNing Hu via GitGitGadget <gitgitgadget@gmail.com>
Date
Jul 12, 2021, 11:46 UTC
Message-ID
<pull.993.git.1626090419.gitgitgadget@gmail.com>
This patch series make cat-file reuse ref-filter logic.
Change from last version:
 1. Declare buf_size in if (atom_type == ATOM_RAW) block.
 2. Modify the code style of the test.
 3. Delete "use_textconv" and "use_filter" flag. Instead, add member
    cat_file_cmdmode to struct ref_array_item.
 4. Add function reject_atom() to enhance the readability of the code.
 5. Create p1006-cat-file.sh for performance regression testing.
 6. Use a "fast path" to output object data to reduce the performance
    degradation of cat-file --batch with the suggest of Ævar Arnfjörð
    Bjarmason.
ZheNing Hu (19):
  cat-file: handle trivial --batch format with --batch-all-objects
  cat-file: merge two block into one
  [GSOC] ref-filter: add obj-type check in grab contents
  [GSOC] ref-filter: add %(raw) atom
  [GSOC] ref-filter: --format=%(raw) re-support --perl
  [GSOC] ref-filter: use non-const ref_format in *_atom_parser()
  [GSOC] ref-filter: add %(rest) atom
  [GSOC] ref-filter: pass get_object() return value to their callers
  [GSOC] ref-filter: introduce free_ref_array_item_value() function
  [GSOC] ref-filter: introduce reject_atom()
  [GSOC] ref-filter: modify the error message and value in get_object
  [GSOC] cat-file: add has_object_file() check
  [GSOC] cat-file: change batch_objects parameter name
  [GSOC] cat-file: reuse ref-filter logic
  [GSOC] cat-file: reuse err buf in batch_object_write()
  [GSOC] cat-file: re-implement --textconv, --filters options
  [GSOC] ref-filter: remove grab_oid() function
  [GSOC] cat-file: create p1006-cat-file.sh
  [GSOC] cat-file: use fast path when using default_format
 Documentation/git-cat-file.txt     |   6 +
 Documentation/git-for-each-ref.txt |   9 +
 builtin/cat-file.c                 | 308 +++++++++----------------
 builtin/tag.c                      |   2 +-
 quote.c                            |  17 ++
 quote.h                            |   1 +
 ref-filter.c                       | 346 +++++++++++++++++++++--------
 ref-filter.h                       |  13 +-
 t/perf/p1006-cat-file.sh           |  28 +++
 t/t1006-cat-file.sh                | 273 +++++++++++++++++++++++
 t/t3203-branch-output.sh           |   4 +
 t/t6300-for-each-ref.sh            | 235 ++++++++++++++++++++
 t/t6301-for-each-ref-errors.sh     |   2 +-
 t/t7004-tag.sh                     |   4 +
 t/t7030-verify-tag.sh              |   4 +
 15 files changed, 955 insertions(+), 297 deletions(-)
 create mode 100755 t/perf/p1006-cat-file.sh
base-commit: d486ca60a51c9cb1fe068803c3f540724e95e83a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-993%2Fadlternative%2Fcat-file-batch-refactor-2-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-993/adlternative/cat-file-batch-refactor-2-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/993
-- 
gitgitgadget
Next: ZheNing Hu via GitGitGadget
Message 1 of 52 in “[GSOC] cat-file: reuse ref-filter logic”
  1. 00/19 [GSOC] cat-file: reuse ref-filter logicZheNing Hu via GitGitGadget, Jul 12, 2021
  2. 02/19 cat-file: merge two block into oneZheNing Hu via GitGitGadget, Jul 12, 2021
  3. 01/19 cat-file: handle trivial --batch format with --batch-all-objectsZheNing Hu via GitGitGadget, Jul 12, 2021
  4. 03/19 [GSOC] ref-filter: add obj-type check in grab contentsZheNing Hu via GitGitGadget, Jul 12, 2021
  5. 07/19 [GSOC] ref-filter: add %(rest) atomZheNing Hu via GitGitGadget, Jul 12, 2021
  6. 08/19 [GSOC] ref-filter: pass get_object() return value to their callersZheNing Hu via GitGitGadget, Jul 12, 2021
  7. 06/19 [GSOC] ref-filter: use non-const ref_format in *_atom_parser()ZheNing Hu via GitGitGadget, Jul 12, 2021
  8. 04/19 [GSOC] ref-filter: add %(raw) atomZheNing Hu via GitGitGadget, Jul 12, 2021
  9. 05/19 [GSOC] ref-filter: --format=%(raw) re-support --perlZheNing Hu via GitGitGadget, Jul 12, 2021
  10. 09/19 [GSOC] ref-filter: introduce free_ref_array_item_value() functionZheNing Hu via GitGitGadget, Jul 12, 2021
  11. 11/19 [GSOC] ref-filter: modify the error message and value in get_objectZheNing Hu via GitGitGadget, Jul 12, 2021
  12. 10/19 [GSOC] ref-filter: introduce reject_atom()ZheNing Hu via GitGitGadget, Jul 12, 2021
  13. 12/19 [GSOC] cat-file: add has_object_file() checkZheNing Hu via GitGitGadget, Jul 12, 2021
  14. 13/19 [GSOC] cat-file: change batch_objects parameter nameZheNing Hu via GitGitGadget, Jul 12, 2021
  15. 15/19 [GSOC] cat-file: reuse err buf in batch_object_write()ZheNing Hu via GitGitGadget, Jul 12, 2021
  16. 16/19 [GSOC] cat-file: re-implement --textconv, --filters optionsZheNing Hu via GitGitGadget, Jul 12, 2021
  17. 14/19 [GSOC] cat-file: reuse ref-filter logicZheNing Hu via GitGitGadget, Jul 12, 2021
  18. Christian CouderJul 12, 2021
  19. Christian CouderJul 12, 2021
  20. ZheNing HuJul 12, 2021
  21. ZheNing HuJul 12, 2021
  22. Junio C HamanoJul 12, 2021
  23. ZheNing HuJul 14, 2021
  24. ZheNing HuJul 15, 2021
  25. Christian CouderJul 15, 2021
  26. ZheNing HuJul 15, 2021
  27. ZheNing HuJul 15, 2021
  28. 17/19 [GSOC] ref-filter: remove grab_oid() functionZheNing Hu via GitGitGadget, Jul 12, 2021
  29. 18/19 [GSOC] cat-file: create p1006-cat-file.shZheNing Hu via GitGitGadget, Jul 12, 2021
  30. 19/19 [GSOC] cat-file: use fast path when using default_formatZheNing Hu via GitGitGadget, Jul 12, 2021
  31. Christian CouderJul 12, 2021
  32. ZheNing HuJul 12, 2021
  33. Philip OakleyJul 12, 2021
  34. ZheNing HuJul 12, 2021
  35. 00/17 [GSOC] cat-file: reuse ref-filter logicZheNing Hu via GitGitGadget, Jul 15, 2021
  36. 01/17 [GSOC] ref-filter: add obj-type check in grab contentsZheNing Hu via GitGitGadget, Jul 15, 2021
  37. 02/17 [GSOC] ref-filter: add %(raw) atomZheNing Hu via GitGitGadget, Jul 15, 2021
  38. 03/17 [GSOC] ref-filter: --format=%(raw) re-support --perlZheNing Hu via GitGitGadget, Jul 15, 2021
  39. 04/17 [GSOC] ref-filter: use non-const ref_format in *_atom_parser()ZheNing Hu via GitGitGadget, Jul 15, 2021
  40. 06/17 [GSOC] ref-filter: pass get_object() return value to their callersZheNing Hu via GitGitGadget, Jul 15, 2021
  41. 07/17 [GSOC] ref-filter: introduce free_ref_array_item_value() functionZheNing Hu via GitGitGadget, Jul 15, 2021
  42. 05/17 [GSOC] ref-filter: add %(rest) atomZheNing Hu via GitGitGadget, Jul 15, 2021
  43. 09/17 [GSOC] ref-filter: modify the error message and value in get_objectZheNing Hu via GitGitGadget, Jul 15, 2021
  44. 10/17 [GSOC] cat-file: add has_object_file() checkZheNing Hu via GitGitGadget, Jul 15, 2021
  45. 11/17 [GSOC] cat-file: change batch_objects parameter nameZheNing Hu via GitGitGadget, Jul 15, 2021
  46. 12/17 [GSOC] cat-file: create p1006-cat-file.shZheNing Hu via GitGitGadget, Jul 15, 2021
  47. 08/17 [GSOC] ref-filter: add cat_file_mode to ref_formatZheNing Hu via GitGitGadget, Jul 15, 2021
  48. 15/17 [GSOC] cat-file: re-implement --textconv, --filters optionsZheNing Hu via GitGitGadget, Jul 15, 2021
  49. 14/17 [GSOC] cat-file: reuse err buf in batch_object_write()ZheNing Hu via GitGitGadget, Jul 15, 2021
  50. 13/17 [GSOC] cat-file: reuse ref-filter logicZheNing Hu via GitGitGadget, Jul 15, 2021
  51. 16/17 [GSOC] ref-filter: remove grab_oid() functionZheNing Hu via GitGitGadget, Jul 15, 2021
  52. 17/17 [GSOC] cat-file: use fast path when using default_formatZheNing Hu via GitGitGadget, Jul 15, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.