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

[PATCH 00/20] object_id part 7

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Mar 18, 2017, 21:19 UTC
Message-ID
<20170318211954.564030-1-sandals@crustytoothpaste.net>
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. Of course, if the consensus is that they should be, I'll do so in v2.

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. Future series are available in various states as the object-id-part8, object-id-part9, and object-id-part10 series.

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                             | 133 +++++++++++----------
 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(+), 450 deletions(-)
 rename Documentation/technical/{api-sha1-array.txt => api-oid-array.txt} (61%)
Next: brian m. carlson
Message 1 of 31 in “object_id part 7”
  1. 00/20 object_id part 7brian m. carlson, Mar 18, 2017
  2. 14/20 sha1-array: convert internal storage for struct sha1_array to object_idbrian m. carlson, Mar 18, 2017
  3. 13/20 builtin/pull: convert to struct object_idbrian m. carlson, Mar 18, 2017
  4. 17/20 Convert sha1_array_lookup to take struct object_idbrian m. carlson, Mar 18, 2017
  5. 20/20 Documentation: update and rename api-sha1-array.txtbrian m. carlson, Mar 18, 2017
  6. 16/20 Convert remaining callers of sha1_array_lookup to object_idbrian m. carlson, Mar 18, 2017
  7. 18/20 Convert sha1_array_for_each_unique and for_each_abbrev to object_idbrian m. carlson, Mar 18, 2017
  8. 19/20 Rename sha1_array to oid_arraybrian m. carlson, Mar 18, 2017
  9. Duy NguyenMar 20, 2017
  10. brian m. carlsonMar 21, 2017
  11. 15/20 Make sha1_array_append take a struct object_id *brian m. carlson, Mar 18, 2017
  12. 07/20 fsck: convert init_skiplist to struct object_idbrian m. carlson, Mar 18, 2017
  13. 04/20 builtin/diff: convert to struct object_idbrian m. carlson, Mar 18, 2017
  14. 08/20 parse-options-cb: convert sha1_array_append caller to struct object_idbrian m. carlson, Mar 18, 2017
  15. 02/20 Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZbrian m. carlson, Mar 18, 2017
  16. 03/20 Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZbrian m. carlson, Mar 18, 2017
  17. 10/20 sha1_name: convert struct disambiguate_state to object_idbrian m. carlson, Mar 18, 2017
  18. Duy NguyenMar 20, 2017
  19. brian m. carlsonMar 20, 2017
  20. Duy NguyenMar 21, 2017
  21. 06/20 builtin/receive-pack: convert portions to struct object_idbrian m. carlson, Mar 18, 2017
  22. Duy NguyenMar 20, 2017
  23. brian m. carlsonMar 20, 2017
  24. Duy NguyenMar 21, 2017
  25. 05/20 builtin/pull: convert portions to struct object_idbrian m. carlson, Mar 18, 2017
  26. 11/20 sha1_name: convert disambiguate_hint_fn to take object_idbrian m. carlson, Mar 18, 2017
  27. 12/20 submodule: convert check_for_new_submodule_commits to object_idbrian m. carlson, Mar 18, 2017
  28. 09/20 test-sha1-array: convert most code to struct object_idbrian m. carlson, Mar 18, 2017
  29. 01/20 Define new hash-size constants for allocating memorybrian m. carlson, Mar 18, 2017
  30. Duy NguyenMar 20, 2017
  31. brian m. carlsonMar 21, 2017

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.