diff options: Introduce --ignore-submodules
The new option --ignore-submodules can now be used to ignore changes in submodules. Why? Sometimes it is not interesting when a submodule changed. For example, when reordering some commits in the superproject, a dirty submodule is usually totally uninteresting. So we will use this option in git-rebase to test for a dirty working tree. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4b172de81b
commit
50fd9bd843
@ -228,6 +228,9 @@ endif::git-format-patch[]
|
|||||||
--no-ext-diff::
|
--no-ext-diff::
|
||||||
Disallow external diff drivers.
|
Disallow external diff drivers.
|
||||||
|
|
||||||
|
--ignore-submodules::
|
||||||
|
Ignore changes to submodules in the diff generation.
|
||||||
|
|
||||||
--src-prefix=<prefix>::
|
--src-prefix=<prefix>::
|
||||||
Show the given source prefix instead of "a/".
|
Show the given source prefix instead of "a/".
|
||||||
|
|
||||||
|
9
diff.c
9
diff.c
@ -2496,6 +2496,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
|
|||||||
DIFF_OPT_SET(options, ALLOW_EXTERNAL);
|
DIFF_OPT_SET(options, ALLOW_EXTERNAL);
|
||||||
else if (!strcmp(arg, "--no-ext-diff"))
|
else if (!strcmp(arg, "--no-ext-diff"))
|
||||||
DIFF_OPT_CLR(options, ALLOW_EXTERNAL);
|
DIFF_OPT_CLR(options, ALLOW_EXTERNAL);
|
||||||
|
else if (!strcmp(arg, "--ignore-submodules"))
|
||||||
|
DIFF_OPT_SET(options, IGNORE_SUBMODULES);
|
||||||
|
|
||||||
/* misc options */
|
/* misc options */
|
||||||
else if (!strcmp(arg, "-z"))
|
else if (!strcmp(arg, "-z"))
|
||||||
@ -3355,6 +3357,9 @@ void diff_addremove(struct diff_options *options,
|
|||||||
char concatpath[PATH_MAX];
|
char concatpath[PATH_MAX];
|
||||||
struct diff_filespec *one, *two;
|
struct diff_filespec *one, *two;
|
||||||
|
|
||||||
|
if (DIFF_OPT_TST(options, IGNORE_SUBMODULES) && S_ISGITLINK(mode))
|
||||||
|
return;
|
||||||
|
|
||||||
/* This may look odd, but it is a preparation for
|
/* This may look odd, but it is a preparation for
|
||||||
* feeding "there are unchanged files which should
|
* feeding "there are unchanged files which should
|
||||||
* not produce diffs, but when you are doing copy
|
* not produce diffs, but when you are doing copy
|
||||||
@ -3399,6 +3404,10 @@ void diff_change(struct diff_options *options,
|
|||||||
char concatpath[PATH_MAX];
|
char concatpath[PATH_MAX];
|
||||||
struct diff_filespec *one, *two;
|
struct diff_filespec *one, *two;
|
||||||
|
|
||||||
|
if (DIFF_OPT_TST(options, IGNORE_SUBMODULES) && S_ISGITLINK(old_mode)
|
||||||
|
&& S_ISGITLINK(new_mode))
|
||||||
|
return;
|
||||||
|
|
||||||
if (DIFF_OPT_TST(options, REVERSE_DIFF)) {
|
if (DIFF_OPT_TST(options, REVERSE_DIFF)) {
|
||||||
unsigned tmp;
|
unsigned tmp;
|
||||||
const unsigned char *tmp_c;
|
const unsigned char *tmp_c;
|
||||||
|
1
diff.h
1
diff.h
@ -63,6 +63,7 @@ typedef void (*diff_format_fn_t)(struct diff_queue_struct *q,
|
|||||||
#define DIFF_OPT_REVERSE_DIFF (1 << 15)
|
#define DIFF_OPT_REVERSE_DIFF (1 << 15)
|
||||||
#define DIFF_OPT_CHECK_FAILED (1 << 16)
|
#define DIFF_OPT_CHECK_FAILED (1 << 16)
|
||||||
#define DIFF_OPT_RELATIVE_NAME (1 << 17)
|
#define DIFF_OPT_RELATIVE_NAME (1 << 17)
|
||||||
|
#define DIFF_OPT_IGNORE_SUBMODULES (1 << 18)
|
||||||
#define DIFF_OPT_TST(opts, flag) ((opts)->flags & DIFF_OPT_##flag)
|
#define DIFF_OPT_TST(opts, flag) ((opts)->flags & DIFF_OPT_##flag)
|
||||||
#define DIFF_OPT_SET(opts, flag) ((opts)->flags |= DIFF_OPT_##flag)
|
#define DIFF_OPT_SET(opts, flag) ((opts)->flags |= DIFF_OPT_##flag)
|
||||||
#define DIFF_OPT_CLR(opts, flag) ((opts)->flags &= ~DIFF_OPT_##flag)
|
#define DIFF_OPT_CLR(opts, flag) ((opts)->flags &= ~DIFF_OPT_##flag)
|
||||||
|
Loading…
Reference in New Issue
Block a user