Thread (33 messages) 33 messages, 3 authors, 18d ago

Re: [PATCH v2 2/4] pack-objects: support reachability bitmaps with `--path-walk`

From: Taylor Blau <hidden>
Date: 2026-06-19 14:16:07

On Fri, Jun 12, 2026 at 09:03:41AM -0400, Derrick Stolee wrote:
On 6/2/2026 6:21 PM, Taylor Blau wrote:
quoted
As a result, we can see significantly reduced pack sizes from p5311
before this commit:
I mentioned this before, but the pack _sizes_ aren't changing in this
example. We are computing them more quickly, though.
Thanks for pointing this out. The paragraph following the perf output
below correctly explains the results ("We get the same size of output
pack, but [...]"), but this one is obviously wrong.
Since we are testing --path-walk on both sides, the change across this
commit is that we are using the bitmaps for the "counting objects" phase
and then potentially using the --path-walk algorithm to construct the
packfile.
I'm not sure I agree here. Because we are using bitmaps, we're relying
on pack-reuse to construct the output pack, not --path-walk. I mentioned
in git-pack-objects(1), but the combination of seeing "--path-walk" and
"--use-bitmap-index" together only means that we will use a path-walk
traversal as fallback if we can't get an answer by relying on bitmaps.
And I wonder if the test setup creates a situation where we are always
reusing deltas from the underlying packfile, so the --path-walk algorithm
isn't doing anything to help with delta compression at this point and the
difference in this patch is that we are replacing the object reachability
calculation entirely with bitmaps.

I suppose what I'm really worried about is that I'm hoping to see some
evidence from a large-scale test that demonstrates that the two algorithms
are working in tandem in a non-trivial way. I haven't seen it yet, but I
also don't have evidence that they _aren't_ working together.
Your thinking is correct here that the test setup intentionally creates
a situation where we are reusing objects/deltas verbatim from the
bitmapped pack.

I'm not sure what "working in tandem" means here. At read time, the two
options mutually exclude one another, meaning we'll use bitmaps if we
have them, or do a path-walk traversal otherwise (or if the bitmaps we
have are somehow insufficient to perform the traversal).

The goal of this patch is not to demonstrate that the two work together
at the same time, but rather that we can write a pack using --path-walk,
and generate reachability bitmaps simultaneously.

Let me know if you have more thoughts on what "working together in a
non-trivial" way would look like here. If there are ways to improve the
compatibility of these two features in a way that yields better
performance via either smaller packs, faster generation, or both, I'm
all ears :-).

Thanks,
Taylor
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help