git/Documentation/technical
Derrick Stolee 7a7070eebc path-walk: always emit directly-requested objects
We are preparing to integrate the path-walk API with some --filter options
in 'git pack-objects', but there is a subtle issue that is revealed when
those are put together and the test suite is run with
GIT_TEST_PACK_PATH_WALK=1.

When a filter reduces the set of requested objects, this results in
filtering out directly-requested objects, such as in the download of needed
blobs in a blobless partial clone.

The root cause is that the scan of pending objects in the path-walk API
respects the filters set in the path_walk_info instead of overriding them
for pending objects.

We can tell that a path is part of the directly-referenced objects if its
path name starts with '/' (other paths, including root trees never have this
starting character). Create a path_is_for_direct_objects() to make this
meaning clear, especially as we add more references in the future as we
integrate the path-walk API with partial clone filter options.

Signed-off-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-05-24 18:41:06 +09:00
..
.gitignore
api-error-handling.adoc
api-index-skel.adoc
api-index.sh
api-merge.adoc
api-parse-options.adoc
api-path-walk.adoc path-walk: always emit directly-requested objects 2026-05-24 18:41:06 +09:00
api-simple-ipc.adoc
api-trace2.adoc
bitmap-format.adoc
build-systems.adoc
bundle-uri.adoc
commit-graph.adoc
directory-rename-detection.adoc
hash-function-transition.adoc
large-object-promisors.adoc
long-running-process-protocol.adoc
meson.build
multi-pack-index.adoc
pack-heuristics.adoc
packfile-uri.adoc
parallel-checkout.adoc
partial-clone.adoc
platform-support.adoc
racy-git.adoc
reftable.adoc
remembering-renames.adoc
repository-version.adoc
rerere.adoc
scalar.adoc
send-pack-pipeline.adoc
shallow.adoc
sparse-checkout.adoc
sparse-index.adoc
trivial-merge.adoc
unambiguous-types.adoc
unit-tests.adoc