Subject: [RFC PATCH 0/7] pack-bitmap: resolve various `--path-walk` incompatibilities

From: Taylor Blau <[email-masked]>
Date: Sun, 3 May 2026 20:11:11 -0400

(Note to the maintainer, this is built on top of 'ds/path-walk-filters').

Between other tasks, I have been working on trying to integrate
`--path-walk` within GitHub's infrastructure. In order to do this,
`--path-walk` must work with features that GitHub depends on, such as
reachability bitmaps and delta-islands (along with filters, shallow,
etc., though more on that below).

I had been sitting on these patches for a few days in my fork before
Stolee sent his series in [1] which resolves incompatibilities between
the `--path-walk` option and various filter types. Since I figured that
others are working in this area I wanted to send a reworked version of
my series for a couple of reasons:

 1. Since reviewers are already looking at this area as a consequence of
    Stolee's series, this topic should be slightly easier to review
    while the area is fresh.

 2. In case Stolee (or others) are working on resolving the
    incompatibility between `--path-walk` and either delta-islands or
    reachability bitmaps, this series can either combine with those (if
    any) or serve as inspiration (if others are in the process of
    writing such series).

When writing this originally, I had borrowed the same filter-application
mechanism from bitmaps, which supports trivial filters (e.g., blob:none,
tree:0, and combinations therein). Stolee's series is a strict
improvement on that approach supporting sparse:<oid> filters as well, so
I reworked my filtering-related patches based on that.

The patches surrounding bitmaps and delta-islands are largely
unchanged from when I had originally written them:

 * Supporting bitmaps with `--path-walk` is mostly straightforward, and
   boils down to ensuring that the path-walk-specific object callback
   indexes any commit(s) it sees for bitmapping.

 * Supporting delta-islands with `--path-walk` required a bit more
   surgery, and involves propagating island marks for commits in the
   path-walk-specific callback, as well as recording tree depth
   information in the same spot.

I'm submitting these patches as an RFC, since (a) I haven't thought
deeply about the approach taken here and could very well be on the wrong
track, and (b) in case Stolee or others want to combine forces here
and/or coordinate around each other.

Thanks in advance for your review!

[1]: https://lore.kernel.org/git/[email-masked]/

Taylor Blau (7):
  pack-objects: update `--path-walk`'s existing incompatibilities
  path-walk: support `tree:0` filter
  path-walk: support `object:type` filter
  path-walk: support `combine` filter
  pack-objects: support reachability bitmaps with `--path-walk`
  pack-objects: extract `record_tree_depth()` helper
  pack-objects: support `--delta-islands` with `--path-walk`

 Documentation/git-pack-objects.adoc |  10 +-
 builtin/pack-objects.c              |  62 ++++++---
 path-walk.c                         |  63 +++++++--
 t/t5310-pack-bitmaps.sh             |  36 +++++
 t/t5320-delta-islands.sh            |  29 ++++
 t/t6601-path-walk.sh                | 196 ++++++++++++++++++++++++++++
 6 files changed, 365 insertions(+), 31 deletions(-)

base-commit: 465ceb37112ddfc6338727887f4431e755bf1831
-- 
2.54.0.4.g6aa0d38a4ec