[PATCH v2 0/9] Store submodules in a hash, not a linked list
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Feb 10, 2017, 11:16 UTC
- Message-ID
- <cover.1486724698.git.mhagger@alum.mit.edu>
This is v2 of the patch series, considerably reorganized but not that different codewise. Thanks to Stefan, Junio, and Peff for their feedback about v1 [1]. I think I have addressed all of your comments.
Changes since v1:
* Rebase from `master` onto `maint` (to match Junio).
* Reorder some commits to make the presentation more logical.
* Added an explicit preparatory commit that just reorders some function definitions, because it makes the diff for the subsequent commit a lot easier to read.
* Make some preexisting functions private: * lookup_ref_store() * ref_store_init()
* Remove some unnecessary handling of `submodule == ""` when it is already known to have been converted to `NULL`. (Some of the purported handling also happened to be broken.)
* Introduce function `register_ref_store()` in a separate step, before switching to hashmaps.
* Don't initialize hashmap in `lookup_ref_store()`. (Just return `NULL`; the hashmap will be initialized in `register_ref_store()` a moment later.)
* Make code in `submodule_hash_cmp()` clearer.
* Use `FLEX_ALLOC_STR()` in `alloc_submodule_hash_entry()`.
* Don't specify an initial size for the submodule hashmap (the default is OK).
This patch series is also available from my fork on GitHub [2] as branch "submodule-hash".
Michael
[1] http://public-inbox.org/git/cover.1486629195.git.mhagger@alum.mit.edu/T/#u [2] https://github.com/mhagger/git
Michael Haggerty (9): refs: reorder some function definitions refs: make some ref_store lookup functions private refs: remove some unnecessary handling of submodule == "" register_ref_store(): new function refs: store submodule ref stores in a hashmap refs: push the submodule attribute down base_ref_store_init(): remove submodule argument files_ref_store::submodule: use NULL for the main repository read_loose_refs(): read refs using resolve_ref_recursively()
refs.c | 107 +++++++++++++++++++++++++++++++++++---------------- refs/files-backend.c | 77 +++++++++++++++++++++--------------- refs/refs-internal.h | 48 ++++------------------- 3 files changed, 127 insertions(+), 105 deletions(-)
-- 2.9.3