From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Derrick Stolee <dstolee@microsoft.com>,
Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH v2 0/9] misc commit-graph and oid-array cleanups
Date: Mon, 7 Dec 2020 14:10:17 -0500 [thread overview]
Message-ID: <X85+GbvmN4wIjsYY@coredump.intra.peff.net> (raw)
In-Reply-To: <X8qEg/KiAQDugPC0@coredump.intra.peff.net>
Here's a re-roll of my series to clean up commit-graph and oid-array.
The changes are all cosmetic: comments and commit messages (and most of
those just in the for-loop patch). I recommend just reading the
range-diff below, if you reviewed v1.
[1/9]: oid-array.h: drop sha1 mention from header guard
[2/9]: t0064: drop sha1 mention from filename
[3/9]: t0064: make duplicate tests more robust
[4/9]: cache.h: move hash/oid functions to hash.h
[5/9]: oid-array: make sort function public
[6/9]: oid-array: provide a for-loop iterator
[7/9]: commit-graph: drop count_distinct_commits() function
[8/9]: commit-graph: replace packed_oid_list with oid_array
[9/9]: commit-graph: use size_t for array allocation and indexing
cache.h | 94 ---------------
commit-graph.c | 107 +++---------------
hash.h | 95 ++++++++++++++++
oid-array.c | 17 ++-
oid-array.h | 34 +++++-
t/{t0064-sha1-array.sh => t0064-oid-array.sh} | 9 +-
6 files changed, 157 insertions(+), 199 deletions(-)
rename t/{t0064-sha1-array.sh => t0064-oid-array.sh} (90%)
Range-diff from v1:
1: 7cfd2f9a29 = 1: 1b52a4ea67 oid-array.h: drop sha1 mention from header guard
2: 82b8902560 = 2: 96ef8b8bb8 t0064: drop sha1 mention from filename
3: b69af2f0d5 = 3: 7382ad6d52 t0064: make duplicate tests more robust
4: 0e258a486a = 4: a0b8b9aabf cache.h: move hash/oid functions to hash.h
5: 1ed342fe20 = 5: 336650a307 oid-array: make sort function public
6: 28893c76f8 ! 6: cc1c2a16da oid-array: provide a for-loop iterator
@@ oid-array.h: void oid_array_filter(struct oid_array *array,
void oid_array_sort(struct oid_array *array);
+/**
-+ * Find the next unique oid in the array after position "cur". You
-+ * can use this to iterate over unique elements, like:
++ * Find the next unique oid in the array after position "cur".
++ * The array must be sorted for this to work. You can iterate
++ * over unique elements like this:
+ *
+ * size_t i;
+ * oid_array_sort(array);
7: d025d6215c ! 7: 16fd32e41c commit-graph: drop count_distinct_commits() function
@@ Commit message
the count are:
- check if our count will overflow our data structures. But the limit
- there is 2^31 commits, so it's not likely to happen in practice.
+ there is 2^31 commits, so while this is a useful check, the
+ off-by-one is not likely to matter.
- pre-allocate the array of commit pointers. But over-allocating by
- one isn't a problem.
+ one isn't a problem; we'll just waste a few extra bytes.
The bug would be easy enough to fix, but we can observe that neither of
- those steps is necessary. We'll check the count of the commit array
- after we build it anyway, so checking at this point is redundant. And we
- use ALLOC_GROW() when building the commit array, so there's no need to
- preallocate it (it's possible that doing so is slightly more efficient,
- but if we care we can just optimistically allocate one slot for each
- oid; I didn't bother here).
+ those steps is necessary.
+
+ After building the actual commit array, we'll likewise check its count
+ for overflow. So the extra check of the distinct commit count here is
+ redundant.
+
+ And likewise we use ALLOC_GROW() when building the commit array, so
+ there's no need to preallocate it (it's possible that doing so is
+ slightly more efficient, but if we care we can just optimistically
+ allocate one slot for each oid; I didn't bother here).
So count_distinct_commits() isn't doing anything useful. Let's just get
rid of that step.
Note that a side effect of the function was that we sorted the list of
oids, which we do rely on in copy_oids_to_commits(), since it must also
- skip the duplicates. So we'll move the qsort there.
+ skip the duplicates. So we'll move the qsort there. I didn't copy the
+ "TODO" about adding more progress meters. It's actually quite hard to
+ make a repository large enough for this qsort would take an appreciable
+ amount of time, so this doesn't seem like a useful note.
Signed-off-by: Jeff King <peff@peff.net>
8: 55d6052e0d = 8: b0f6326fbe commit-graph: replace packed_oid_list with oid_array
9: c9c6e2de47 = 9: 89848e2214 commit-graph: use size_t for array allocation and indexing
next prev parent reply other threads:[~2020-12-07 19:11 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-04 18:48 [PATCH 0/9] misc commit-graph and oid-array cleanups Jeff King
2020-12-04 18:48 ` [PATCH 1/9] oid-array.h: drop sha1 mention from header guard Jeff King
2020-12-04 18:49 ` [PATCH 2/9] t0064: drop sha1 mention from filename Jeff King
2020-12-04 18:50 ` [PATCH 3/9] t0064: make duplicate tests more robust Jeff King
2020-12-04 18:51 ` [PATCH 4/9] cache.h: move hash/oid functions to hash.h Jeff King
2020-12-04 18:52 ` [PATCH 5/9] oid-array: make sort function public Jeff King
2020-12-04 18:53 ` [PATCH 6/9] oid-array: provide a for-loop iterator Jeff King
2020-12-04 19:05 ` Taylor Blau
2020-12-04 19:11 ` Taylor Blau
2020-12-04 19:52 ` Jeff King
2020-12-04 19:51 ` Jeff King
2020-12-04 19:18 ` Eric Sunshine
2020-12-04 20:44 ` Jeff King
2020-12-04 20:57 ` Eric Sunshine
2020-12-04 21:54 ` Junio C Hamano
2020-12-07 19:05 ` Jeff King
2020-12-04 18:56 ` [PATCH 7/9] commit-graph: drop count_distinct_commits() function Jeff King
2020-12-04 20:06 ` Derrick Stolee
2020-12-04 20:42 ` Jeff King
2020-12-04 20:47 ` Derrick Stolee
2020-12-04 20:50 ` Jeff King
2020-12-04 21:01 ` Derrick Stolee
2020-12-05 2:26 ` Ævar Arnfjörð Bjarmason
2020-12-07 19:01 ` Jeff King
2020-12-04 18:57 ` [PATCH 8/9] commit-graph: replace packed_oid_list with oid_array Jeff King
2020-12-04 19:14 ` Taylor Blau
2020-12-04 18:58 ` [PATCH 9/9] commit-graph: use size_t for array allocation and indexing Jeff King
2020-12-04 19:15 ` [PATCH 0/9] misc commit-graph and oid-array cleanups Taylor Blau
2020-12-04 20:08 ` Derrick Stolee
2020-12-07 19:10 ` Jeff King [this message]
2020-12-07 19:10 ` [PATCH v2 1/9] oid-array.h: drop sha1 mention from header guard Jeff King
2020-12-07 19:10 ` [PATCH v2 2/9] t0064: drop sha1 mention from filename Jeff King
2020-12-07 19:10 ` [PATCH v2 3/9] t0064: make duplicate tests more robust Jeff King
2020-12-07 19:10 ` [PATCH v2 4/9] cache.h: move hash/oid functions to hash.h Jeff King
2020-12-07 19:10 ` [PATCH v2 5/9] oid-array: make sort function public Jeff King
2020-12-07 19:11 ` [PATCH v2 6/9] oid-array: provide a for-loop iterator Jeff King
2020-12-07 19:11 ` [PATCH v2 7/9] commit-graph: drop count_distinct_commits() function Jeff King
2020-12-07 19:11 ` [PATCH v2 8/9] commit-graph: replace packed_oid_list with oid_array Jeff King
2020-12-07 19:11 ` [PATCH v2 9/9] commit-graph: use size_t for array allocation and indexing Jeff King
2020-12-07 19:26 ` [PATCH v2 0/9] misc commit-graph and oid-array cleanups Derrick Stolee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=X85+GbvmN4wIjsYY@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=dstolee@microsoft.com \
--cc=git@vger.kernel.org \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).