Many commands have flags to recurse into submodules, which is named
--recurse-submodules. The diff family also has a submodule recursion flag,
but that is named differently. Add a synonym --recurse-submodules, which
means the same as the --submodule flag, such that across all git commands
supporting submodules we have the --recurse-submodules flag available.

Signed-off-by: Stefan Beller <[email protected]>
---
 Documentation/diff-options.txt | 21 +++++++++++----------
 diff.c                         |  3 ++-
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 0378cd574eb..28c6c7f939f 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -226,17 +226,18 @@ linkgit:git-config[1]).
        Show only names and status of changed files. See the description
        of the `--diff-filter` option on what the status letters mean.
 
---submodule[=<format>]::
+--recurse-submodules[=<format>]::
        Specify how differences in submodules are shown.  When specifying
-       `--submodule=short` the 'short' format is used.  This format just
-       shows the names of the commits at the beginning and end of the range.
-       When `--submodule` or `--submodule=log` is specified, the 'log'
-       format is used.  This format lists the commits in the range like
-       linkgit:git-submodule[1] `summary` does.  When `--submodule=diff`
-       is specified, the 'diff' format is used.  This format shows an
-       inline diff of the changes in the submodule contents between the
-       commit range.  Defaults to `diff.submodule` or the 'short' format
-       if the config option is unset.
+       `--recurse-submodules=short` the 'short' format is used.  This format
+       just shows the names of the commits at the beginning and end of the
+       range. When `--recurse-submodules` or `--recurse-submodules=log` is
+       specified, the 'log' format is used.  This format lists the commits
+       in the range like linkgit:git-submodule[1] `summary` does.
+       When `--recurse-submodules=diff` is specified, the 'diff' format
+       is used. This format shows an inline diff of the changes in the
+       submodule contents between the commit range.  Defaults to
+       `diff.submodule` or the 'short' format if the config option is unset.
+       `--submodule[=<format>]` is a historic synonym for this option.
 
 --color[=<when>]::
        Show colored diff.
diff --git a/diff.c b/diff.c
index 145cfbae592..b874f166c00 100644
--- a/diff.c
+++ b/diff.c
@@ -5021,7 +5021,8 @@ int diff_opt_parse(struct diff_options *options,
        else if (skip_to_optional_arg_default(arg, "--ignore-submodules", &arg, 
"all")) {
                options->flags.override_submodule_config = 1;
                handle_ignore_submodules_arg(options, arg);
-       } else if (skip_to_optional_arg_default(arg, "--submodule", &arg, 
"log"))
+       } else if (skip_to_optional_arg_default(arg, "--submodule", &arg, 
"log") ||
+           skip_to_optional_arg_default(arg, "--recurse-submodules", &arg, 
"log"))
                return parse_submodule_opt(options, arg);
        else if (skip_prefix(arg, "--ws-error-highlight=", &arg))
                return parse_ws_error_highlight_opt(options, arg);
-- 
2.19.0.rc2.392.g5ba43deb5a-goog

Reply via email to