Signed-off-by: Jeff King <peff@peff.net> --- This was another patch from late in the freeze period. It was in response to a user getting confused about why rename detection wasn't happening in a large merge. Is it appropriate to print this for every rename we try? Or should it just be for merges?
Perhaps we should also bump the default limit from 100, which I think was just arbitrarily chosen. I posted some numbers in:
http://mid.gmane.org/20080211113516.GB6344@coredump.intra.peff.net
which imply that 200-400 is probably a more reasonable value. Thoughts?
diffcore-rename.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
Show changes to diffcore-rename.c +4 −3
diff --git a/diffcore-rename.c b/diffcore-rename.c index 3d37725..31941bc 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -468,10 +468,11 @@ void diffcore_rename(struct diff_options *options) */ if (rename_limit <= 0 || rename_limit > 32767) rename_limit = 32767; - if (num_create > rename_limit && num_src > rename_limit) - goto cleanup; - if (num_create * num_src > rename_limit * rename_limit) + if ((num_create > rename_limit && num_src > rename_limit) || + (num_create * num_src > rename_limit * rename_limit)) { + warning("too many files, skipping inexact rename detection"); goto cleanup; + } mx = xmalloc(sizeof(*mx) * num_create * num_src); for (dst_cnt = i = 0; i < rename_dst_nr; i++) {
-- 1.5.4.3.422.g55194