···15151516 diffopts = *opt;
1517 copy_pathspec(&diffopts.pathspec, &opt->pathspec);
1518- diffopts.flags.recursive = 1;
1519 diffopts.flags.allow_external = 0;
0015201521 /* find set of paths that everybody touches
1522 *
···15151516 diffopts = *opt;
1517 copy_pathspec(&diffopts.pathspec, &opt->pathspec);
01518 diffopts.flags.allow_external = 0;
1519+ if (!opt->flags.no_recursive_diff_tree_combined)
1520+ diffopts.flags.recursive = 1;
15211522 /* find set of paths that everybody touches
1523 *
+7
diff.h
···127 unsigned recursive;
128 unsigned tree_in_recursive;
1290000000130 /* Affects the way how a file that is seemingly binary is treated. */
131 unsigned binary;
132 unsigned text;
···127 unsigned recursive;
128 unsigned tree_in_recursive;
129130+ /*
131+ * Historically diff_tree_combined() overrides recursive to 1. To
132+ * suppress this behavior, set the flag below.
133+ * It has no effect if recursive is already set to 1.
134+ */
135+ unsigned no_recursive_diff_tree_combined;
136+137 /* Affects the way how a file that is seemingly binary is treated. */
138 unsigned binary;
139 unsigned text;