git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

Previous: Jonathan TanNext: Jonathan Tan
Message 2 of 6 in “Commit graph chains with no corresponding files?”
  1. Jonathan TanJun 29, 2020
  2. Derrick StoleeJun 30, 2020
  3. [FYI] commit-graph: trace expiry of commit graph linksJonathan Tan, Jul 16, 2020
  4. Bryan TurnerFeb 25, 2021
  5. Derrick StoleeFeb 25, 2021
  6. Bryan TurnerFeb 27, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.