RFC pack-bitmap: resolve various `--path-walk` incompatibilities
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest7 patches 5 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | pack-objects: update `--path-walk`'s existing incompatibilitiesDocumentation/ | +5 | 1 reply | |
| 2/7 | path-walk: support `tree:0` filterDocumentation/ path-walk.c t/ | +63 | 2 replies | |
| 3/7 | path-walk: support `object:type` filterDocumentation/ path-walk.c t/ | +110 | 1 reply | |
| 4/7 | path-walk: support `combine` filterDocumentation/ path-walk.c t/ | +90 | 0 replies | |
| 5/7 | pack-objects: support reachability bitmaps with `--path-walk`Documentation/ builtin/ t/ | +49 | 0 replies | |
| 6/7 | pack-objects: extract `record_tree_depth()` helperbuiltin/ | +20 | 0 replies | |
| 7/7 | pack-objects: support `--delta-islands` with `--path-walk`Documentation/ builtin/ t/ | +54 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [RFC PATCH 0/7] pack-bitmap: resolve various `--path-walk` incompatibilities
(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 protected]/
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
Signature · 1 line
2.54.0.4.g6aa0d38a4ec