diff options
author | Jens Lehmann <Jens.Lehmann@web.de> | 2010-06-08 18:31:51 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-06-11 13:33:17 -0700 |
commit | dd44d419d30afa52b863efa07aeec738c4531ea9 (patch) | |
tree | 4268bacc206a612a8d43e57da79ca5dd45dd3c73 /diff.c | |
parent | cf6aef803df93343e628e0c273a5d8f0d2f0fddb (diff) | |
download | git-dd44d419d30afa52b863efa07aeec738c4531ea9.tar.gz git-dd44d419d30afa52b863efa07aeec738c4531ea9.tar.xz |
Add optional parameters to the diff option "--ignore-submodules"
In some use cases it is not desirable that the diff family considers
submodules that only contain untracked content as dirty. This may happen
e.g. when the submodule is not under the developers control and not all
build generated files have been added to .gitignore by the upstream
developers. Using the "untracked" parameter for the "--ignore-submodules"
option disables checking for untracked content and lets git diff report
them as changed only when they have new commits or modified content.
Sometimes it is not wanted to have submodules show up as changed when they
just contain changes to their work tree. An example for that are scripts
which just want to check for submodule commits while ignoring any changes
to the work tree. Also users having large submodules known not to change
might want to use this option, as the - sometimes substantial - time it
takes to scan the submodule work tree(s) is saved.
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'diff.c')
-rw-r--r-- | diff.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -2867,7 +2867,16 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) DIFF_OPT_CLR(options, ALLOW_TEXTCONV); else if (!strcmp(arg, "--ignore-submodules")) DIFF_OPT_SET(options, IGNORE_SUBMODULES); - else if (!strcmp(arg, "--submodule")) + else if (!prefixcmp(arg, "--ignore-submodules=")) { + if (!strcmp(arg + 20, "all")) + DIFF_OPT_SET(options, IGNORE_SUBMODULES); + else if (!strcmp(arg + 20, "untracked")) + DIFF_OPT_SET(options, IGNORE_UNTRACKED_IN_SUBMODULES); + else if (!strcmp(arg + 20, "dirty")) + DIFF_OPT_SET(options, IGNORE_DIRTY_SUBMODULES); + else + die("bad --ignore-submodules argument: %s", arg + 20); + } else if (!strcmp(arg, "--submodule")) DIFF_OPT_SET(options, SUBMODULE_LOG); else if (!prefixcmp(arg, "--submodule=")) { if (!strcmp(arg + 12, "log")) |