Re: [PATCH 1/3] t7700: add failing --path-walk test
From: Elijah Newren <hidden>
Date: 2025-08-21 23:21:58
On Wed, Aug 20, 2025 at 11:39 AM Derrick Stolee via GitGitGadget [off-list ref] wrote:
From: Derrick Stolee <redacted> Users reported an issue where objects were missing from their local enlistments after a full repack using 'git repack -adf --path-walk'.
What is an enlistment?
This was alarming, but took a while to create a reproducer.
but => and ?
The root cause is that certain objects existed in the index and had no second versions. These objects are usually blobs, though trees can be included if a cache-tree exists. The issue is that the revision walk adds these objects to the "pending" list and the path-walk API forgets to mark the lists it creates at this point as "maybe_interesting". If these paths only ever have a single version in the history of the repo (including the current staged version) then the parent directory never tries to add a new object to the list and mark the list as "maybe_interesting". Thus, when walking the list later, the group is skipped as it is expected that no objects are interesting. This happens even when there are actually no UNINTERESTING objects at all! This is based on the optimization enabled by the pack.useSparse=true config option, which is the default. Thus, we create a test case that demonstrates the many cases of this issue for reproducibility: 1. File a/b/c has only one committed version. 2. Files a/i and x/y only exists as staged changes.
exists => exist I didn't have any questions or spot any issues on the rest of the patch.