combine-diff: factor out stat-format mask

There are several conditionals in the combine diff code that check if we're doing --stat or --numstat output. Since these must all remain in sync, let's pull them out into a separate bit-mask. Arguably this could go into diff.h along with the other DIFF_FORMAT macros, but it's not clear that the definition of "which formats are stat" is universal (e.g., does --dirstat count? --summary?). So let's keep this local to combine-diff.c, where the meaning is more clearly "stat formats that combine-diff supports". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jan 24, 2019 at 07:33 UTC 8817f0cc6751199a996342fbc28bd343d231a5ca
1 file changed +8 -6
combine-diff.c
+8 -6
@@ -1321,6 +1321,11 @@ static const char *path_path(void *obj)
1321 return path->path;
1322 }
1323
1324 +/*
1325 + * Diff stat formats which we always compute solely against the first parent.
1326 + */
1327 +#define STAT_FORMAT_MASK (DIFF_FORMAT_NUMSTAT \
1328 + | DIFF_FORMAT_DIFFSTAT)
1329
1330 /* find set of paths that every parent touches */
1331 static struct combine_diff_path *find_paths_generic(const struct object_id *oid,
@@ -1342,8 +1347,7 @@ static struct combine_diff_path *find_paths_generic(const struct object_id *oid,
1347 * show stat against the first parent even when doing
1348 * combined diff.
1349 */
1345 - int stat_opt = (output_format &
1346 - (DIFF_FORMAT_NUMSTAT|DIFF_FORMAT_DIFFSTAT));
1350 + int stat_opt = output_format & STAT_FORMAT_MASK;
1351 if (i == 0 && stat_opt)
1352 opt->output_format = stat_opt;
1353 else
@@ -1470,8 +1474,7 @@ void diff_tree_combined(const struct object_id *oid,
1474 * show stat against the first parent even
1475 * when doing combined diff.
1476 */
1473 - stat_opt = (opt->output_format &
1474 - (DIFF_FORMAT_NUMSTAT|DIFF_FORMAT_DIFFSTAT));
1477 + stat_opt = opt->output_format & STAT_FORMAT_MASK;
1478 if (stat_opt) {
1479 diffopts.output_format = stat_opt;
1480
@@ -1515,8 +1518,7 @@ void diff_tree_combined(const struct object_id *oid,
1518 show_raw_diff(p, num_parent, rev);
1519 needsep = 1;
1520 }
1518 - else if (opt->output_format &
1519 - (DIFF_FORMAT_NUMSTAT|DIFF_FORMAT_DIFFSTAT))
1521 + else if (opt->output_format & STAT_FORMAT_MASK)
1522 needsep = 1;
1523 else if (opt->output_format & DIFF_FORMAT_CALLBACK)
1524 handle_combined_callback(opt, paths, num_parent, num_paths);