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

Re: git-clone causes out of memory

From
Christian Couder <christian.couder@gmail.com>
Date
Oct 13, 2017, 10:26 UTC
Message-ID
<CAP8UFD1KuBdUCo=x_q4__s1kW15CWMH1jJkKzXqmf3=T3jcrng@mail.gmail.com>
In-Reply-To
<20171013100603.5eed26sjjigph2il@glandium.org>
On Fri, Oct 13, 2017 at 12:06 PM, Mike Hommey <mh@glandium.org> wrote:
Show 11 quoted lines
> On Fri, Oct 13, 2017 at 12:51:58PM +0300, Constantine wrote:
>> There's a gitbomb on github. It is undoubtedly creative and funny, but since
>> this is a bug in git, I thought it'd be nice to report. The command:
>>
>>       $ git clone https://github.com/x0rz/ShadowBrokersFiles
>
> What fills memory is actually the checkout part of the command. git
> clone -n doesn't fail.
>
> Credit should go where it's due: https://kate.io/blog/git-bomb/
> (with the bonus that it comes with explanations)
Yeah, there is a thread on Hacker News about this too:
https://news.ycombinator.com/item?id=15457076
The original repo on GitHub is:
https://github.com/Katee/git-bomb.git
After cloning it with -n, there is the following "funny" situation:

$ time git rev-list HEAD 7af99c9e7d4768fa681f4fe4ff61259794cf719b 18ed56cbc5012117e24a603e7c072cf65d36d469 45546f17e5801791d4bc5968b91253a2f4b0db72

real 0m0.004s user 0m0.000s sys 0m0.004s $ time git rev-list HEAD -- d0/d0/d0/d0/d0/d0/d0/d0/d0/d0/f0

real 0m0.004s user 0m0.000s sys 0m0.000s $ time git rev-list HEAD -- d0/d0/d0/d0/d0/d0/d0/d0/d0/d0

real 0m0.004s user 0m0.000s sys 0m0.000s $ time git rev-list HEAD -- d0/d0/d0/d0/d0/d0/d0/d0/ 45546f17e5801791d4bc5968b91253a2f4b0db72

real 0m0.005s user 0m0.008s sys 0m0.000s $ time git rev-list HEAD -- d0/d0/d0/d0/d0/ 45546f17e5801791d4bc5968b91253a2f4b0db72

real 0m0.203s user 0m0.112s sys 0m0.088s $ time git rev-list HEAD -- d0/d0/d0/d0/ 45546f17e5801791d4bc5968b91253a2f4b0db72

real 0m1.305s user 0m0.720s sys 0m0.580s $ time git rev-list HEAD -- d0/d0/d0/ 45546f17e5801791d4bc5968b91253a2f4b0db72

real 0m12.135s user 0m6.700s sys 0m5.412s

So `git rev-list` becomes exponentially more expensive when you run it on a shorter directory path, though it is fast if you run it without a path.

Previous: Mike HommeyNext: Mike Hommey
Message 3 of 23 in “git-clone causes out of memory”
  1. ConstantineOct 13, 2017
  2. Mike HommeyOct 13, 2017
  3. Christian CouderOct 13, 2017
  4. Mike HommeyOct 13, 2017
  5. Christian CouderOct 13, 2017
  6. Junio C HamanoOct 13, 2017
  7. ConstantineOct 13, 2017
  8. Jeff KingOct 13, 2017
  9. Derrick StoleeOct 13, 2017
  10. Derrick StoleeOct 13, 2017
  11. Jeff KingOct 13, 2017
  12. Derrick StoleeOct 13, 2017
  13. Jeff KingOct 13, 2017
  14. Jeff KingOct 13, 2017
  15. Jeff KingOct 13, 2017
  16. Derrick StoleeOct 13, 2017
  17. Jeff KingOct 13, 2017
  18. Derrick StoleeOct 13, 2017
  19. revision: quit pruning diff more quickly when possibleJeff King, Oct 13, 2017
  20. Derrick StoleeOct 13, 2017
  21. Jeff KingOct 13, 2017
  22. Junio C HamanoOct 14, 2017
  23. Jeff KingOct 13, 2017

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.