1

Task:

To do git bisect on a repo say https://example.git , with both the ends of the bisecting range being quite older: say: za3bca (newer) and fabce1 (older).

Being on limited bandwidth, I don't want to download all the commits up to the latest end of the range as I know for sure I don't need them.

My approach:

So, as given on this git documentation page for git clone, I want to use both the options: --depth <depth> and --shallow-since=<date> together.

  • I will specify the date of the older end of the range, e.g. 20220212 (yyyymmdd),
  • I've counted the number of commits in between the range (to say 100), and will supply some more than that as the "depth"
git clone https://example.git --shallow-since=20220212 --depth 100

But doing this gives the error: fatal: error processing shallow info: 4

2 Answers2

0

Two things: first, your --shallow-since datespec doesn't parse correctly. Try 2022-02-12 instead.

But that still won't do what you want, because --depth and --shallow-since both specify how far back to go from the ref that's being checked out (the remote's primary branch HEAD, if not specified). You can't use --depth to specify how far forward to go from the commit that --shallow-since finds.

If there's a tag or a branch head at or near the end of your bisect range, you could use that as the ref to check out with the --branch option (despite the name, it accepts both branches and tags):

git clone --single-branch --shallow-since=2022-02-12 --branch=end-point https://some.repo

If there isn't, then I don't think there's much you can do, other than convince someone to make such a tag or branch for you :)

hobbs
  • 223,387
  • 19
  • 210
  • 288
  • On the last line, rather than convincing someone else, the online computers (like github codespaces) can be used as well if available. In fact before this answer, I was thinking of making a new branch in the CLI on codespaces, and then cloning that custom branch locally. Also, having some way to know the size of commit range would help a lot as well. – user8395964 Jan 01 '23 at 01:40
0

The most direct way is tag the tips you're starting from on the server side and fetch those with --shallow-since. Many servers these days are configured to let you fetch arbitrary reachable (and some, even unreachable) commits, specifically to cater to this kind of bit-scrimping impulse, so if it's annoying to tag them you can try looking them up and specifying the start commit explicitly:

git fetch origin --shallow-since=2022212 \
        +602c0cb92c50a259c29138d8e107615569c0767d:refs/tags/starthere
jthill
  • 55,082
  • 5
  • 77
  • 137