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

Possible bug: --shallow-since and old branches

From
Tao Klerks <tao@klerks.biz>
Date
Sep 8, 2020, 19:58 UTC
Message-ID
<CAPMMpoicRnoBshbSNaF4Ns91b4WTE95EJJGzt1=cx9s_iYDOmA@mail.gmail.com>
Hi folks,

I've encountered very strange behavior when fetching a repo with --shallow-since, where I get many more commits than I expect in the repo, and specifically when I count commits by branch I see old branches where *every* commit is beyond the specified date threshold.

I found a thread from 2018 in which something like this is discussed (https://public-inbox.org/git/20180522194854.GA29564@inner.h.apk.li/), but I haven't completely understood the thread. It seems to address the specific "repo would be empty" concern, but not necessarily the more general "I'm getting branches I shouldn't be getting" concern/case...?

I can confirm that if I move my --shallow-since date to one that "intersects" the lifetime of a branch I am unexpectedly getting, then all of a sudden I only get those commits I expected on that branch.

I can also confirm that in a recent version of git (since 2.16 I think), if I set my refspec so *only* a "too old" branch matches, then I get the "fatal: no commits selected for shallow requests" error that's expected. But if my refspec *also* matches a branch that *does* have commits newer than the threshold, then I get the correct (newer) commits of that recently-active branch, and *all* commits of the too-old branch that otherwise correctly refuses to fetch on its own.

I *thought* I would be able get what I would have expected from a
"--shallow-since" clone by:
 * Initializing a new repo
 * Adding the remote
 * Removing the default fetch refspec
 * Iterating remote heads, checking their commit dates, and adding
those valid/recent heads explicitly to the fetch refspec
 * Doing a fetch with  "--shallow-since"

... however, I seem to have assumed some magic there: getting the "most recent commit date" for a remote ref apparently requires fetching it (to a depth of 1 at least) first??

Is the behavior I'm seeing "as designed" for branches with no recent commits, or is there a problem somewhere?

Best regards, Tao

Message 1 of 1 in “Possible bug: --shallow-since and old branches”
  1. Tao KlerksSep 8, 2020

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.