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

Partial Clone, and a strange slow rev-list call on fetch

From
Tao Klerks <tao@klerks.biz>
Date
Jun 2, 2021, 04:56 UTC
Message-ID
<CAPMMpogCz4o3ZGYHnux_6w+uFyxV-FR0R1hFNeg1COiv0qd_0g@mail.gmail.com>
Hi folks,

I'm learning to use Partial Clone, and finding a behavior that I don't know how to interpret or investigate:

Under some circumstances, doing a plain "git fetch <remote>" on a filtered repo results in a very long (6-30 min?) wait, during which I can see the following command being executed in the background:

/usr/libexec/git-core/git rev-list --objects --stdin --exclude-promisor-objects --not --all --quiet --alternate-refs

So far, I have noted this happening under two distinct circumstances:
* Anytime I try to fetch on a filtered repo with a git 2.23 client -
shorter pause
* When I try to fetch with a recent (2.31) client in a repo where one
large packfile has no *.promisor file (but the others do, and the
remote I am fetching from has promisor=true) - looong pause

Can anyone explain what this rev-list call intends, and/or any hints as to how I could see what the stdin content being fed to it from the parent process actually is?

For background, I ended up in the "missing promisor file" situation by trying to be (too?) clever about the blobs present in my clone: I cloned unfiltered shallow to a certain depth with certain refspecs, then added the promisor and filter config, and finally fetched with "--unshallow". This produced exactly the blob-population state I intended, but meant the original first packfile had no ".promisor" file.

Creating an empty promisor file for that packfile *appears* to fix the issue, and hasn't produced any weird side-effects that I've noted, and from the "removing partial clone filtering" description from gitlab at https://docs.gitlab.com/ee/topics/git/partial_clone.html#remove-partial-clone-filtering, appears to be a reasonable thing to do (the implication there is that a promisor packfile with no missing objects hs exactly the same structure as a non-promisor packfile), but of course I would welcome any validation or correction to that assumption.

Thanks for any info, Tao Klerks

Next: Derrick Stolee
Message 1 of 5 in “Partial Clone, and a strange slow rev-list call on fetch”
  1. Tao KlerksJun 2, 2021
  2. Derrick StoleeJun 2, 2021
  3. Tao KlerksJun 3, 2021
  4. Derrick StoleeJun 4, 2021
  5. Tao KlerksJun 5, 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.