aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/config.txt7
-rw-r--r--diff.c6
-rw-r--r--submodule.c4
3 files changed, 15 insertions, 2 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index c88a63764..cf5562192 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -826,6 +826,11 @@ diff.renames::
will enable basic rename detection. If set to "copies" or
"copy", it will detect copies, as well.
+diff.ignoreSubmodules::
+ Sets the default value of --ignore-submodules. Note that this
+ affects only 'git diff' Porcelain, and not lower level 'diff'
+ commands such as 'git diff-files'.
+
diff.suppressBlankEmpty::
A boolean to inhibit the standard behavior of printing a space
before each empty output line. Defaults to false.
@@ -1754,7 +1759,7 @@ submodule.<name>.ignore::
submodules that have untracked files in their work tree as changed.
This setting overrides any setting made in .gitmodules for this submodule,
both settings can be overriden on the command line by using the
- "--ignore-submodule" option.
+ "--ignore-submodules" option.
tar.umask::
This variable can be used to restrict the permission bits of
diff --git a/diff.c b/diff.c
index 820604731..1ddfdfbc2 100644
--- a/diff.c
+++ b/diff.c
@@ -31,6 +31,7 @@ static const char *external_diff_cmd_cfg;
int diff_auto_refresh_index = 1;
static int diff_mnemonic_prefix;
static int diff_no_prefix;
+static struct diff_options default_diff_options;
static char diff_colors[][COLOR_MAXLEN] = {
GIT_COLOR_RESET,
@@ -107,6 +108,9 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
if (!strcmp(var, "diff.wordregex"))
return git_config_string(&diff_word_regex_cfg, var, value);
+ if (!strcmp(var, "diff.ignoresubmodules"))
+ handle_ignore_submodules_arg(&default_diff_options, value);
+
return git_diff_basic_config(var, value, cb);
}
@@ -2816,7 +2820,7 @@ static void run_checkdiff(struct diff_filepair *p, struct diff_options *o)
void diff_setup(struct diff_options *options)
{
- memset(options, 0, sizeof(*options));
+ memcpy(options, &default_diff_options, sizeof(*options));
memset(&diff_queued_diff, 0, sizeof(diff_queued_diff));
options->file = stdout;
diff --git a/submodule.c b/submodule.c
index dc0f95b73..7f0da48bc 100644
--- a/submodule.c
+++ b/submodule.c
@@ -123,6 +123,10 @@ int parse_submodule_config_option(const char *var, const char *value)
void handle_ignore_submodules_arg(struct diff_options *diffopt,
const char *arg)
{
+ DIFF_OPT_CLR(diffopt, IGNORE_SUBMODULES);
+ DIFF_OPT_CLR(diffopt, IGNORE_UNTRACKED_IN_SUBMODULES);
+ DIFF_OPT_CLR(diffopt, IGNORE_DIRTY_SUBMODULES);
+
if (!strcmp(arg, "all"))
DIFF_OPT_SET(diffopt, IGNORE_SUBMODULES);
else if (!strcmp(arg, "untracked"))