Re: git-revert is a memory hog
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 29, 2008, 22:36 UTC
- Message-ID
- <7vfxwgmf87.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080129222007.GA3985@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 10 quoted lines
> On Wed, Jan 30, 2008 at 08:51:09AM +1100, Linus Torvalds wrote: > >> I definitely can reproduce it, it's horrid. >> >> This is from "top" fairly late in the game, but with the thing not even >> done yet. Current git, pretty much fully (and fairly aggressively) packed >> current kernel repo, and using "diff.renamelmit=0". > > Hrm, setting diff.renamelimit to 0 lets me reproduce (I thought I tried > it before, but clearly not...).
Hmph. But I wonder why this part does not trigger, even when you have renamelimit set to 0.
/* * This basically does a test for the rename matrix not * growing larger than a "rename_limit" square matrix, ie: * * rename_dst_nr * rename_src_nr > rename_limit * rename_limit * * but handles the potential overflow case specially (and we * assume at least 32-bit integers) */ if (rename_limit <= 0 || rename_limit > 32767) rename_limit = 32767; if (rename_dst_nr > rename_limit && rename_src_nr > rename_limit) goto cleanup; if (rename_dst_nr * rename_src_nr > rename_limit * rename_limit) goto cleanup;
I wonder if the second one for the overflow avoidance should be using || instead of &&, though.