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

[PATCH 3/3] diff: make "too many files" rename warning optional

From
Jeff King <peff@peff.net>
Date
Apr 30, 2008, 17:25 UTC
Message-ID
<20080430172553.GC23747@sigill.intra.peff.net>
In-Reply-To
<20080430172136.GA22601@sigill.intra.peff.net>

In many cases, the warning ends up as clutter, because the diff is being done "behind the scenes" from the user (e.g., when generating a commit diffstat), and whether we show renames or not is not particularly interesting to the user.

However, in the case of a merge (which is what motivated the warning in the first place), it is a useful hint as to why a merge with renames might have failed.

This patch makes the warning optional based on the code calling into diffcore. We default to not showing the warning, but turn it on for merges.

Signed-off-by: Jeff King <peff@peff.net>
---
This neglects the case where the user specifically does a diff asking
for renames, but we turn it off. Maybe when "-M" is specified on the
commandline to git-diff, we should set this option as well.
 builtin-merge-recursive.c |    1 +
 diff.h                    |    1 +
 diffcore-rename.c         |    3 ++-
 3 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c
index 3902e91..46e636f 100644
--- a/builtin-merge-recursive.c
+++ b/builtin-merge-recursive.c
@@ -365,6 +365,7 @@ static struct path_list *get_renames(struct tree *tree,
 	opts.rename_limit = merge_rename_limit >= 0 ? merge_rename_limit :
 			    diff_rename_limit >= 0 ? diff_rename_limit :
 			    500;
+	opts.warn_on_too_large_rename = 1;
 	opts.output_format = DIFF_FORMAT_NO_OUTPUT;
 	if (diff_setup_done(&opts) < 0)
 		die("diff setup failed");
diff --git a/diff.h b/diff.h
index f2c7739..8931116 100644
--- a/diff.h
+++ b/diff.h
@@ -83,6 +83,7 @@ struct diff_options {
 	int pickaxe_opts;
 	int rename_score;
 	int rename_limit;
+	int warn_on_too_large_rename;
 	int dirstat_percent;
 	int setup;
 	int abbrev;
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 1369a5e..1b2ebb4 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -492,7 +492,8 @@ void diffcore_rename(struct diff_options *options)
 		rename_limit = 32767;
 	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");
+		if (options->warn_on_too_large_rename)
+			warning("too many files, skipping inexact rename detection");
 		goto cleanup;
 	}
 
-- 
1.5.5.1.177.g8182d.dirty
Previous: Jeff KingNext: Ramsay Jones
Message 11 of 22 in “warning: too many files, skipping inexact rename detection”
  1. Andrew MortonApr 26, 2008
  2. Jeff KingApr 26, 2008
  3. Andrew MortonApr 26, 2008
  4. Jeff KingApr 26, 2008
  5. 0/3 rename limit improvementsJeff King, Apr 30, 2008
  6. 1/3 add merge.renamelimit config optionJeff King, Apr 30, 2008
  7. Jeff KingApr 30, 2008
  8. Junio C HamanoMay 3, 2008
  9. Jeff KingMay 4, 2008
  10. 2/3 bump rename limit defaultsJeff King, Apr 30, 2008
  11. 3/3 diff: make "too many files" rename warning optionalJeff King, Apr 30, 2008
  12. Ramsay JonesMay 3, 2008
  13. Jeff KingMay 4, 2008
  14. Paul MackerrasMay 4, 2008
  15. Jeff KingMay 5, 2008
  16. Jeff KingMay 5, 2008
  17. Junio C HamanoMay 5, 2008
  18. Paul MackerrasMay 12, 2008
  19. Ramsay JonesMay 6, 2008
  20. Ramsay JonesMay 6, 2008
  21. Junio C HamanoMay 4, 2008
  22. Jeff KingMay 4, 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.