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

Re: git-revert is a memory hog

From
Shawn O. Pearce <spearce@spearce.org>
Date
Jan 27, 2008, 17:38 UTC
Message-ID
<20080127173808.GX24004@spearce.org>
In-Reply-To
<20080127172748.GD2558@does.not.exist>
Adrian Bunk <bunk@kernel.org> wrote:
Show 7 quoted lines
> I'm not sure whether this is already known, but when recently working 
> for some time from a computer with "only" 512 MB RAM I ran into the huge 
> memory usage of git-revert when it tries to revert old commits.
> 
> Example (in Linus' kernel tree with git 1.5.3.8):
> 
> $ git-revert d19fbe8a7
...
Show 5 quoted lines
> In top you can see that this took > 800 MB of RAM !
> 
> I don't know how easy it would be to implement, but shouldn't git-revert 
> be able to be as fast and less memory consuming as
>   git-show d19fbe8a7 | patch -p1 -R
Its more like:
	git-diff-tree -M d19fbe8a7^ d19fbe8a7 | git-apply -R --index

In other words its doing rename detection. Its possible that the rename detector fired for added/removed paths and it took some significant amount of memory to figure out what was renamed. Maybe we hung onto stuff for too long, but it has to do rename detection and that takes memory to store the matrix and file contents. Once memory is allocated by git we don't give it back to the kernel, even if we free'd it internally.

If you really are tight on memory and have to do a revert you can use the above, but minus the -M, to setup the change, but you may run into trouble if renames were involved.

-- 
Shawn.
Previous: Adrian BunkNext: Jeff King
Message 2 of 24 in “git-revert is a memory hog”
  1. Adrian BunkJan 27, 2008
  2. Shawn O. PearceJan 27, 2008
  3. Jeff KingJan 28, 2008
  4. Jeff KingJan 28, 2008
  5. Linus TorvaldsJan 29, 2008
  6. Junio C HamanoJan 29, 2008
  7. Jeff KingJan 29, 2008
  8. Jeff KingJan 29, 2008
  9. Junio C HamanoJan 29, 2008
  10. Jeff KingJan 29, 2008
  11. Jeff KingJan 29, 2008
  12. Linus TorvaldsJan 29, 2008
  13. Jeff KingJan 29, 2008
  14. Junio C HamanoJan 29, 2008
  15. Jeff KingJan 29, 2008
  16. Junio C HamanoJan 29, 2008
  17. Junio C HamanoJan 29, 2008
  18. Optimize rename detection for a huge diffJunio C Hamano, Jan 30, 2008
  19. Luke LuJan 30, 2008
  20. Luke LuJan 30, 2008
  21. Junio C HamanoFeb 13, 2008
  22. David KastrupFeb 13, 2008
  23. Junio C HamanoFeb 13, 2008
  24. Junio C HamanoFeb 14, 2008

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.