Re: Commit graph chains with no corresponding files?
- From
Derrick Stolee <stolee@gmail.com>
- Date
- Jun 30, 2020, 01:51 UTC
- Message-ID
- <92b218ca-f2b4-db9d-9f9c-1d071ea4fa97@gmail.com>
- In-Reply-To
- <20200629220744.1054093-1-jonathantanmy@google.com>
On 6/29/2020 6:07 PM, Jonathan Tan wrote:
Show 8 quoted lines
> At $DAYJOB, a few people have reported "warning: unable to find all > commit-graph files" warnings. Their commit-graph-chain files have a few > lines, but they only have one commit graph file with very few commits. I > suspected something happening during fetch, because (as far as I know) a > fetch may cause an incremental commit graph to be written, but I ran a > fetch on a large repository myself and didn't run into this problem. > > Has anyone ran into this problem before, and know how to reproduce?
The incremental commit-graph code deletes any commit-graph files that do not appear in the chain. I believe this is done by comparing the contents of the ".git/objects/info/commit-graphs/" directory to the contents of the chain file.
These appear to be case-sensitive, full-path comparisons.
It is _possible_ that something like a case switch or a symlink could be causing a problem here. That's where I would look on the affected systems.
Likely the full-path comparison in expire_commit_graphs() should be dropped in favor of local filename comparisons. A case- sensitive match is less likely to be important here since Git is writing the paths itself and should get the proper case back from the directory listing.
Thanks, -Stolee