Git development
 help / color / mirror / Atom feed
From: Taylor Blau <me@ttaylorr.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Derrick Stolee <stolee@gmail.com>, Jeff King <peff@peff.net>,
	Elijah Newren <newren@gmail.com>
Subject: [RFC PATCH 0/7] pack-bitmap: resolve various `--path-walk` incompatibilities
Date: Sun, 3 May 2026 20:11:11 -0400	[thread overview]
Message-ID: <cover.1777853408.git.me@ttaylorr.com> (raw)

(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/pull.2101.git.1777731354.gitgitgadget@gmail.com/

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

             reply	other threads:[~2026-05-04  0:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-04  0:11 Taylor Blau [this message]
2026-05-04  0:11 ` [RFC PATCH 1/7] pack-objects: update `--path-walk`'s existing incompatibilities Taylor Blau
2026-05-04 12:22   ` Derrick Stolee
2026-05-04  0:11 ` [RFC PATCH 2/7] path-walk: support `tree:0` filter Taylor Blau
2026-05-04 12:30   ` Derrick Stolee
2026-05-04 21:55   ` Kristoffer Haugsbakk
2026-05-04  0:11 ` [RFC PATCH 3/7] path-walk: support `object:type` filter Taylor Blau
2026-05-04 12:32   ` Derrick Stolee
2026-05-04  0:11 ` [RFC PATCH 4/7] path-walk: support `combine` filter Taylor Blau
2026-05-04  0:11 ` [RFC PATCH 5/7] pack-objects: support reachability bitmaps with `--path-walk` Taylor Blau
2026-05-04  0:11 ` [RFC PATCH 6/7] pack-objects: extract `record_tree_depth()` helper Taylor Blau
2026-05-04  0:11 ` [RFC PATCH 7/7] pack-objects: support `--delta-islands` with `--path-walk` Taylor Blau
2026-05-04 12:13 ` [RFC PATCH 0/7] pack-bitmap: resolve various `--path-walk` incompatibilities 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=cover.1777853408.git.me@ttaylorr.com \
    --to=me@ttaylorr.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=stolee@gmail.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