mbox series

[00/10] object-file API: pass object enums, tidy up streaming interface

Message ID cover-00.10-00000000000-20220201T144803Z-avarab@gmail.com (mailing list archive)
Headers show
Series object-file API: pass object enums, tidy up streaming interface | expand

Message

Ævar Arnfjörð Bjarmason Feb. 1, 2022, 2:53 p.m. UTC
This is intended to help along the "unpack large blobs in stream"
series that Han Xin has been submitting. The v9 of it is available
at[1], but not currently picked up by Junio.

This changes those parts of the object-file.c API that took a "const
char *" type to take an "enum object_type" instead. We had a lot of
places that would convert back & forth between the two for no good
reason. We're still left with the "literally" interface for "git
hash-object --literally", but it's now a tiny part of the API that's
sidelined.

This also has various small API cleanups, such as returning "void" in
a case where no caller did (or should) use a return value in the case
of hash_object_file().

We then introduce the format_object_header() helper, part of that was
in Han Xin's version, but we had various other in-tree users that
could use it (which I found later, after my initial RFC patch).

We can then split up the two classes of API users of
check_object_signature() to use two different functions, which suits
their uses much better. Half of them were making use of a very early
return.

1. https://lore.kernel.org/git/20220120112114.47618-1-chiyutianyi@gmail.com/

Ævar Arnfjörð Bjarmason (10):
  object-file.c: split up declaration of unrelated variables
  object-file API: return "void", not "int" from hash_object_file()
  object-file API: add a format_object_header() function
  object-file API: have write_object_file() take "enum object_type"
  object-file API: provide a hash_object_file_oideq()
  object-file API: replace some use of check_object_signature()
  object-file API: have hash_object_file() take "enum object_type"
  object-file API: replace check_object_signature() with stream_*
  object-file.c: add a literal version of write_object_file_prepare()
  object-file API: pass an enum to read_object_with_reference()

 apply.c                  |  12 ++--
 builtin/cat-file.c       |  11 +--
 builtin/checkout.c       |   2 +-
 builtin/fast-export.c    |   4 +-
 builtin/fast-import.c    |  12 ++--
 builtin/grep.c           |   4 +-
 builtin/hash-object.c    |   4 +-
 builtin/index-pack.c     |  10 ++-
 builtin/mktag.c          |   7 +-
 builtin/mktree.c         |   2 +-
 builtin/notes.c          |   3 +-
 builtin/pack-objects.c   |   2 +-
 builtin/receive-pack.c   |   2 +-
 builtin/replace.c        |   4 +-
 builtin/tag.c            |   2 +-
 builtin/unpack-objects.c |   8 +--
 bulk-checkin.c           |   4 +-
 cache-tree.c             |   8 +--
 cache.h                  |  13 ++--
 commit.c                 |   2 +-
 convert.c                |   2 +-
 diffcore-rename.c        |   2 +-
 dir.c                    |   2 +-
 http-push.c              |   2 +-
 log-tree.c               |   2 +-
 match-trees.c            |   2 +-
 merge-ort.c              |   4 +-
 merge-recursive.c        |   2 +-
 notes-cache.c            |   2 +-
 notes.c                  |   8 +--
 object-file.c            | 142 ++++++++++++++++++++++++++-------------
 object-store.h           |  39 ++++++++---
 object.c                 |   6 +-
 pack-check.c             |   8 ++-
 read-cache.c             |   2 +-
 tree-walk.c              |   6 +-
 36 files changed, 213 insertions(+), 134 deletions(-)