blame: honor the diff heuristic options and config
Teach "git blame" and "git annotate" the --compaction-heuristic and --indent-heuristic options that are now supported by "git diff". Also teach them to honor the `diff.compactionHeuristic` and `diff.indentHeuristic` configuration options. It would be conceivable to introduce separate configuration options for "blame" and "annotate"; for example `blame.compactionHeuristic` and `blame.indentHeuristic`. But it would be confusing to users if blame output is inconsistent with diff output, so it makes more sense for them to respect the same configuration. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
ce564eb1bd
commit
5b162879e9
29
diff.c
29
diff.c
@ -175,6 +175,21 @@ void init_diff_ui_defaults(void)
|
||||
diff_detect_rename_default = 1;
|
||||
}
|
||||
|
||||
int git_diff_heuristic_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
if (!strcmp(var, "diff.indentheuristic")) {
|
||||
diff_indent_heuristic = git_config_bool(var, value);
|
||||
if (diff_indent_heuristic)
|
||||
diff_compaction_heuristic = 0;
|
||||
}
|
||||
if (!strcmp(var, "diff.compactionheuristic")) {
|
||||
diff_compaction_heuristic = git_config_bool(var, value);
|
||||
if (diff_compaction_heuristic)
|
||||
diff_indent_heuristic = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int git_diff_ui_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
|
||||
@ -191,18 +206,6 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
|
||||
diff_detect_rename_default = git_config_rename(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "diff.indentheuristic")) {
|
||||
diff_indent_heuristic = git_config_bool(var, value);
|
||||
if (diff_indent_heuristic)
|
||||
diff_compaction_heuristic = 0;
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "diff.compactionheuristic")) {
|
||||
diff_compaction_heuristic = git_config_bool(var, value);
|
||||
if (diff_compaction_heuristic)
|
||||
diff_indent_heuristic = 0;
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "diff.autorefreshindex")) {
|
||||
diff_auto_refresh_index = git_config_bool(var, value);
|
||||
return 0;
|
||||
@ -243,6 +246,8 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (git_diff_heuristic_config(var, value, cb) < 0)
|
||||
return -1;
|
||||
if (git_color_config(var, value, cb) < 0)
|
||||
return -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user