This is part 7 in the continuing transition to use struct object_id. This series focuses on two main areas: adding two constants for the maximum hash size we'll be using (which will be suitable for allocating memory) and converting struct sha1_array to struct oid_array.
The rationale for adding separate constants for allocating memory is that with a new 256-bit hash function, we're going to need two different items: a constant for allocating memory that's as large as the largest hash, and a global variable telling us size the current hash is. I've opted to provide GIT_MAX_RAWSZ and GIT_MAX_HEXSZ for allocating memory, and leave GIT_SHA1_RAWSZ and GIT_SHA1_HEXSZ as values that can be later replaced by the aforementioned global. Replacing struct sha1_array with struct oid_array necessarily involves converting the shallow code, so I did that. The structure now handles objects of struct object_id. While I renamed the documentation (since people will search for that), I chose not to rename the sha1-array.[ch] files or the test helper because I didn't think it was worth the hassle, especially for people who don't have rename support turned on by default. I chose to use Coccinelle quite a bit in this series, as it automates a lot of the manual work and aides in review. There is also some use of Perl one-liners. This series is available at https://github.com/bk2204/git under object-id-part7; it may be rebased. Changes from v2: * Drop the patch that Junio has picked up separately. * Change one struct object_id * parameter from "sha1" to "oid". * Convert E2[E3].hash to E2[E3] instead of E2 + E3. Changes from v1: * Rebase on current master (no changes). * Remove check for empty line in queue_command. * Add patch 6 to fix invalid pointer arithmetic. brian m. carlson (20): Define new hash-size constants for allocating memory Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ builtin/diff: convert to struct object_id builtin/pull: convert portions to struct object_id builtin/receive-pack: convert portions to struct object_id fsck: convert init_skiplist to struct object_id parse-options-cb: convert sha1_array_append caller to struct object_id test-sha1-array: convert most code to struct object_id sha1_name: convert struct disambiguate_state to object_id sha1_name: convert disambiguate_hint_fn to take object_id submodule: convert check_for_new_submodule_commits to object_id builtin/pull: convert to struct object_id sha1-array: convert internal storage for struct sha1_array to object_id Make sha1_array_append take a struct object_id * Convert remaining callers of sha1_array_lookup to object_id Convert sha1_array_lookup to take struct object_id Convert sha1_array_for_each_unique and for_each_abbrev to object_id Rename sha1_array to oid_array Documentation: update and rename api-sha1-array.txt .../{api-sha1-array.txt => api-oid-array.txt} | 44 +++---- bisect.c | 43 ++++--- builtin/blame.c | 4 +- builtin/cat-file.c | 14 +-- builtin/diff.c | 40 +++--- builtin/fetch-pack.c | 2 +- builtin/fetch.c | 6 +- builtin/merge-index.c | 2 +- builtin/merge.c | 2 +- builtin/pack-objects.c | 24 ++-- builtin/patch-id.c | 2 +- builtin/pull.c | 98 +++++++-------- builtin/receive-pack.c | 134 ++++++++++----------- builtin/rev-list.c | 2 +- builtin/rev-parse.c | 4 +- builtin/send-pack.c | 4 +- cache.h | 10 +- combine-diff.c | 18 +-- commit.h | 14 +-- connect.c | 8 +- diff.c | 4 +- diff.h | 4 +- fetch-pack.c | 32 ++--- fetch-pack.h | 4 +- fsck.c | 17 +-- fsck.h | 2 +- hex.c | 2 +- parse-options-cb.c | 8 +- patch-ids.c | 2 +- patch-ids.h | 2 +- ref-filter.c | 22 ++-- ref-filter.h | 2 +- remote-curl.c | 4 +- remote.h | 6 +- send-pack.c | 6 +- send-pack.h | 2 +- sha1-array.c | 38 +++--- sha1-array.h | 20 +-- sha1_file.c | 6 +- sha1_name.c | 94 ++++++++------- shallow.c | 38 +++--- submodule.c | 66 +++++----- submodule.h | 8 +- t/helper/test-sha1-array.c | 20 +-- transport.c | 24 ++-- wt-status.h | 2 +- 46 files changed, 459 insertions(+), 451 deletions(-) rename Documentation/technical/{api-sha1-array.txt => api-oid-array.txt} (61%)