On Wed, Aug 20, 2025 at 11:39 AM Derrick Stolee via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > > From: Derrick Stolee <stolee@xxxxxxxxx> > > 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.