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

Re: Slow fetches of tags

From
RBRalf Baechle <ralf@linux-mips.org>
Date
May 24, 2006, 18:08 UTC
Message-ID
<20060524180813.GA32519@linux-mips.org>
In-Reply-To
<Pine.LNX.4.64.0605240931480.5623@g5.osdl.org>
On Wed, May 24, 2006 at 09:45:29AM -0700, Linus Torvalds wrote:
> So this is a tree where you already _have_ most of the tags, no?
Yes, git did end up only fetching v2.6.16.18 as the single tag.
Show 6 quoted lines
> Can you add a printout to show what the "taglist" is for you in 
> git-fetch.sh (just before the thing that does that
> 
> 	fetch_main "$taglist"
> 
> thing?). It _should_ have pruned out all the tags you already have.
Right, it's just "refs/tags/v2.6.16.18:refs/tags/v2.6.16.18".
> Or is it just the "git-ls-remote" that takes forever?

git-ls-remote git://www.kernel.org/pub/scm/linux/kernel/git/stable/\ linux-2.6.16.y takes about 1.5s.

> (Or, if you run 
> "top", is there something that is an obviously heavy operation on the 
> client side?)

git-fetch-pack was burning some 6min CPU. Nothing else even even shows up on the "top" radar.

Another funny thing I noticed in top is that the git-fetch-pack arguments got overwritten:

$ cat /proc/1702/cmdline | tr '\0' ' ' git-fetch-pack --thin git //www.kernel.org pub/scm/linux/kernel/git/stable/linux-2.6.16.y.git efs/heads/master efs/tags/v2.6.16.18

Guess that doesn't matter. Anyway, so I ran strace on this git-fetch-pack invocation:

[...] munmap(0xb7fe5000, 229) = 0 getdents(5, /* 0 entries */, 4096) = 0 close(5) = 0 getdents(4, /* 0 entries */, 4096) = 0 close(4) = 0 write(3, "0046want 9b549d8e1e2f16cffbb414a"..., 70) = 70 write(3, "0000", 4) = 4 write(3, "0032have 0bcf7932d0ea742e765a40b"..., 50) = 50 write(3, "0032have 54e938a80873e85f9c02ab4"..., 50) = 50 write(3, "0032have 2d0a9369c540519bab8018e"..., 50) = 50 write(3, "0032have bf3060065ef9f0a8274fc32"..., 50) = 50 write(3, "0032have 27602bd8de8456ac619b77c"..., 50) = 50 [... another 42,000+ similar lines chopped off ...]

9b549d8e1e2f16cffbb414a is Chris Wright's tag for v2.6.16.18. So far, as expected.

And this is where things are getting interesting:

$ git-name-rev 0bcf7932d0ea742e765a40b 0bcf7932d0ea742e765a40b master $ git-name-rev 54e938a80873e85f9c02ab4 54e938a80873e85f9c02ab4 34k-2.6.16.18 $ git-name-rev 2d0a9369c540519bab8018e 2d0a9369c540519bab8018e 34k-2.6.16.18~1 $ git-name-rev bf3060065ef9f0a8274fc32 bf3060065ef9f0a8274fc32 34k-2.6.16.18~2 $ git-name-rev 27602bd8de8456ac619b77c 27602bd8de8456ac619b77c 34k-2.6.16.18~3

It's sending every object back to the start of history ...
  Ralf
Previous: Junio C HamanoNext: Junio C Hamano
Message 21 of 23 in “Slow fetches of tags”
  1. Ralf BaechleMay 24, 2006
  2. Linus TorvaldsMay 24, 2006
  3. Linus TorvaldsMay 24, 2006
  4. Junio C HamanoMay 24, 2006
  5. Linus TorvaldsMay 24, 2006
  6. Linus TorvaldsMay 24, 2006
  7. Junio C HamanoMay 25, 2006
  8. Junio C HamanoMay 25, 2006
  9. Ralf BaechleMay 26, 2006
  10. upload-pack: stop "ack continue" when we know common commits for wanted refsJunio C Hamano, May 27, 2006
  11. Ralf BaechleMay 25, 2006
  12. Junio C HamanoJul 26, 2006
  13. Johannes SchindelinJul 28, 2006
  14. Teach the git wrapper about --name-rev and --name-rev-by-tagsJohannes Schindelin, Jul 28, 2006
  15. Junio C HamanoJul 28, 2006
  16. Linus TorvaldsJul 28, 2006
  17. Johannes SchindelinJul 28, 2006
  18. Nguyễn Thái Ngọc DuyJul 29, 2006
  19. Johannes SchindelinJul 29, 2006
  20. Junio C HamanoMay 24, 2006
  21. Ralf BaechleMay 24, 2006
  22. Junio C HamanoMay 24, 2006
  23. Ralf BaechleMay 25, 2006

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.