diff options
author | Ivan Frade <ifrade@google.com> | 2023-09-08 08:25:06 -0700 |
---|---|---|
committer | Ivan Frade <ifrade@google.com> | 2023-09-20 13:55:11 -0700 |
commit | f1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e (patch) | |
tree | ecf5ea87407804dd8eb17e3bd86b1d54d39d39b4 | |
parent | e0bd4882fb609be998d5d7b6b95e50869cf01e92 (diff) | |
download | jgit-f1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e.tar.gz jgit-f1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e.zip |
CommitGraphWriter: Move bloom filter calculation out of createChunks
It looks confusing that the createChunks method calculates bloom
filters.
Make the calculations before and pass the result to the method.
Change-Id: If6e3c0e644f7f940f268ca7266f577f012278ff3
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java index aef01fbb3c..85f726a55b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java @@ -40,6 +40,7 @@ import java.util.Optional; import java.util.Stack; import org.eclipse.jgit.annotations.NonNull; +import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.errors.CorruptObjectException; import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; @@ -122,7 +123,14 @@ public class CommitGraphWriter { return stats; } - List<ChunkHeader> chunks = createChunks(stats); + BloomFilterChunks bloomFilterChunks = generateChangedPathFilters + ? computeBloomFilterChunks(stats) + : null; + List<ChunkHeader> chunks = new ArrayList<>(); + chunks.addAll(createCoreChunks(hashsz, graphCommits)); + chunks.addAll(createBloomFilterChunkHeaders(bloomFilterChunks)); + chunks = Collections.unmodifiableList(chunks); + long expectedSize = calculateExpectedSize(chunks); long writeCount = 256 + 2 * graphCommits.size() + graphCommits.getExtraEdgeCnt(); @@ -151,7 +159,7 @@ public class CommitGraphWriter { return stats; } - private List<ChunkHeader> createChunks(Stats stats) + private static List<ChunkHeader> createCoreChunks(int hashsz, GraphCommits graphCommits) throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException, IOException { List<ChunkHeader> chunks = new ArrayList<>(); @@ -164,9 +172,13 @@ public class CommitGraphWriter { chunks.add(new ChunkHeader(CHUNK_ID_EXTRA_EDGE_LIST, graphCommits.getExtraEdgeCnt() * 4)); } - if (generateChangedPathFilters) { - BloomFilterChunks bloomFilterChunks = computeBloomFilterChunks( - stats); + return Collections.unmodifiableList(chunks); + } + + private static List<ChunkHeader> createBloomFilterChunkHeaders( + @Nullable BloomFilterChunks bloomFilterChunks) { + List<ChunkHeader> chunks = new ArrayList<>(); + if (bloomFilterChunks != null) { chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_INDEX, bloomFilterChunks.index)); chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_DATA, |