It appears that it happens when the shallow history grows to include a commit that's pointed to by a previously unseen tag. For example, when I deepen a checkout of git to depth 8, I hit v2.5.2, and a second fetch takes place. ``` $ git clone --depth=1 http://github.com/git/git Cloning into 'git'... remote: Counting objects: 2925, done. remote: Compressing objects: 100% (2602/2602), done. remote: Total 2925 (delta 230), reused 2329 (delta 206), pack-reused 0 Receiving objects: 100% (2925/2925), 6.17 MiB | 0 bytes/s, done. Resolving deltas: 100% (230/230), done. Checking connectivity... done. $ git -C git fetch --depth=8 remote: Counting objects: 858, done. remote: Compressing objects: 100% (774/774), done. remote: Total 858 (delta 793), reused 138 (delta 80), pack-reused 0 Receiving objects: 100% (858/858), 364.53 KiB | 0 bytes/s, done. Resolving deltas: 100% (793/793), completed with 476 local objects. remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0 Unpacking objects: 100% (1/1), done. >From http://github.com/git/git * [new tag] v2.5.2 -> v2.5.2 $ ``` But why would fetching a tag (or set of tags) merit a depth of zero? Doesn't depth 1 mean "give me the the objects, and none of their descendants"? Why use 0? Thanks! Jason On Fri, Dec 4, 2015 at 4:27 PM, Jeff King <peff@xxxxxxxx> wrote: > On Fri, Dec 04, 2015 at 12:46:59PM -0800, Stefan Beller wrote: > >> On Mon, Nov 30, 2015 at 11:35 AM, Jason Paller-Rzepka >> <jasonpr@xxxxxxxxxx> wrote: >> > Hi all, >> > >> > Would anyone be willing to help me understand some shallow-clone >> > behavior? (I found a bug in Dulwich, and I'm looking for some context >> > so I can determine how to fix it.) >> > >> > I learned that cgit sometimes performs two fetches for a `git fetch >> > --unshallow`: one with depth 'infinity', and a subsequent one with >> > depth zero. >> >> Is there a condition to trigger this 'sometimes' ? >> >> I just tried reproducing via >> $ GIT_TRACE=1 git fetch --unshallow >> >> and could not see a second fetch, but only a >> fetch-pack with --depth=2147483647 > > This seems to reproduce consistently for me: > > $ git clone --depth=1 git://github.com/git/git > Cloning into 'git'... > remote: Counting objects: 2925, done. > remote: Compressing objects: 100% (2602/2602), done. > remote: Total 2925 (delta 230), reused 2329 (delta 206), pack-reused 0 > Receiving objects: 100% (2925/2925), 6.17 MiB | 10.80 MiB/s, done. > Resolving deltas: 100% (230/230), done. > > $ cd git > $ git fetch --unshallow > remote: Counting objects: 185430, done. > remote: Compressing objects: 100% (46933/46933), done. > remote: Total 185430 (delta 140505), reused 181589 (delta 136694), pack-reused 0 > Receiving objects: 100% (185430/185430), 52.80 MiB | 10.84 MiB/s, done. > Resolving deltas: 100% (140505/140505), completed with 1784 local objects. > remote: Counting objects: 579, done. > remote: Compressing objects: 100% (579/579), done. > remote: Total 579 (delta 0), reused 579 (delta 0), pack-reused 0 > Receiving objects: 100% (579/579), 266.85 KiB | 0 bytes/s, done. > [... fetch output ...] > > That looks like two packs being received for the --unshallow case. > > -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html