Merge branch 'en/rename-limits-doc'
Documentation on "git diff -l<n>" and diff.renameLimit have been updated, and the defaults for these limits have been raised. * en/rename-limits-doc: rename: bump limit defaults yet again diffcore-rename: treat a rename_limit of 0 as unlimited doc: clarify documentation for rename/copy limits diff: correct warning message when renameLimit exceeded
This commit is contained in:
commit
268055bfde
@ -118,9 +118,10 @@ diff.orderFile::
|
||||
relative to the top of the working tree.
|
||||
|
||||
diff.renameLimit::
|
||||
The number of files to consider when performing the copy/rename
|
||||
detection; equivalent to the 'git diff' option `-l`. This setting
|
||||
has no effect if rename detection is turned off.
|
||||
The number of files to consider in the exhaustive portion of
|
||||
copy/rename detection; equivalent to the 'git diff' option
|
||||
`-l`. If not set, the default value is currently 1000. This
|
||||
setting has no effect if rename detection is turned off.
|
||||
|
||||
diff.renames::
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
|
@ -33,10 +33,12 @@ merge.verifySignatures::
|
||||
include::fmt-merge-msg.txt[]
|
||||
|
||||
merge.renameLimit::
|
||||
The number of files to consider when performing rename detection
|
||||
during a merge; if not specified, defaults to the value of
|
||||
diff.renameLimit. This setting has no effect if rename detection
|
||||
is turned off.
|
||||
The number of files to consider in the exhaustive portion of
|
||||
rename detection during a merge. If not specified, defaults
|
||||
to the value of diff.renameLimit. If neither
|
||||
merge.renameLimit nor diff.renameLimit are specified,
|
||||
currently defaults to 7000. This setting has no effect if
|
||||
rename detection is turned off.
|
||||
|
||||
merge.renames::
|
||||
Whether Git detects renames. If set to "false", rename detection
|
||||
|
@ -588,11 +588,17 @@ When used together with `-B`, omit also the preimage in the deletion part
|
||||
of a delete/create pair.
|
||||
|
||||
-l<num>::
|
||||
The `-M` and `-C` options require O(n^2) processing time where n
|
||||
is the number of potential rename/copy targets. This
|
||||
option prevents rename/copy detection from running if
|
||||
the number of rename/copy targets exceeds the specified
|
||||
number.
|
||||
The `-M` and `-C` options involve some preliminary steps that
|
||||
can detect subsets of renames/copies cheaply, followed by an
|
||||
exhaustive fallback portion that compares all remaining
|
||||
unpaired destinations to all relevant sources. (For renames,
|
||||
only remaining unpaired sources are relevant; for copies, all
|
||||
original sources are relevant.) For N sources and
|
||||
destinations, this exhaustive check is O(N^2). This option
|
||||
prevents the exhaustive portion of rename/copy detection from
|
||||
running if the number of source/destination files involved
|
||||
exceeds the specified number. Defaults to diff.renameLimit.
|
||||
Note that a value of 0 is treated as unlimited.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]::
|
||||
|
4
diff.c
4
diff.c
@ -35,7 +35,7 @@
|
||||
|
||||
static int diff_detect_rename_default;
|
||||
static int diff_indent_heuristic = 1;
|
||||
static int diff_rename_limit_default = 400;
|
||||
static int diff_rename_limit_default = 1000;
|
||||
static int diff_suppress_blank_empty;
|
||||
static int diff_use_color_default = -1;
|
||||
static int diff_color_moved_default;
|
||||
@ -6295,7 +6295,7 @@ static int is_summary_empty(const struct diff_queue_struct *q)
|
||||
}
|
||||
|
||||
static const char rename_limit_warning[] =
|
||||
N_("inexact rename detection was skipped due to too many files.");
|
||||
N_("exhaustive rename detection was skipped due to too many files.");
|
||||
|
||||
static const char degrade_cc_to_c_warning[] =
|
||||
N_("only found copies from modified paths due to too many files.");
|
||||
|
@ -1091,7 +1091,7 @@ static int too_many_rename_candidates(int num_destinations, int num_sources,
|
||||
* memory for the matrix anyway.
|
||||
*/
|
||||
if (rename_limit <= 0)
|
||||
rename_limit = 32767;
|
||||
return 0; /* treat as unlimited */
|
||||
if (st_mult(num_destinations, num_sources)
|
||||
<= st_mult(rename_limit, rename_limit))
|
||||
return 0;
|
||||
|
@ -2563,7 +2563,7 @@ static void detect_regular_renames(struct merge_options *opt,
|
||||
diff_opts.detect_rename = DIFF_DETECT_RENAME;
|
||||
diff_opts.rename_limit = opt->rename_limit;
|
||||
if (opt->rename_limit <= 0)
|
||||
diff_opts.rename_limit = 1000;
|
||||
diff_opts.rename_limit = 7000;
|
||||
diff_opts.rename_score = opt->rename_score;
|
||||
diff_opts.show_rename_progress = opt->show_rename_progress;
|
||||
diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT;
|
||||
|
@ -1880,7 +1880,7 @@ static struct diff_queue_struct *get_diffpairs(struct merge_options *opt,
|
||||
*/
|
||||
if (opts.detect_rename > DIFF_DETECT_RENAME)
|
||||
opts.detect_rename = DIFF_DETECT_RENAME;
|
||||
opts.rename_limit = (opt->rename_limit >= 0) ? opt->rename_limit : 1000;
|
||||
opts.rename_limit = (opt->rename_limit >= 0) ? opt->rename_limit : 7000;
|
||||
opts.rename_score = opt->rename_score;
|
||||
opts.show_rename_progress = opt->show_rename_progress;
|
||||
opts.output_format = DIFF_FORMAT_NO_OUTPUT;
|
||||
|
Loading…
Reference in New Issue
Block a user