diff options
author | Sergey Organov <sorganov@gmail.com> | 2020-12-21 18:19:52 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-12-21 13:47:32 -0800 |
commit | 5733b20f41ac0fecdacdf34a11acef2d03fac829 (patch) | |
tree | bf8c83b19abbbb0b5cf129279cdbb97c0df1e5c3 /diff-merges.c | |
parent | 8c0ba528bc3c61f4582bf68d3f0cc2a72f5f3792 (diff) | |
download | git-5733b20f41ac0fecdacdf34a11acef2d03fac829.tar.gz |
diff-merges: do not imply -p for new options
Add 'combined_imply_patch' field and set it only for old --cc/-c
options, then imply -p if this flag is set instead of implying -p
whenever 'combined_merge' flag is set.
We don't want new --diff-merge options to imply -p, to make it
possible to enable output of diffs for merges independently from
non-merge commits. At the same time we want to preserve behavior of
old --c/-c/-m options and their interactions with --first-parent, to
stay backward-compatible.
This patch is first step in this direction: it separates old "--cc/-c
imply -p" logic from the rest of the options.
Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'diff-merges.c')
-rw-r--r-- | diff-merges.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/diff-merges.c b/diff-merges.c index 4d22da1795..6d48ac5ab9 100644 --- a/diff-merges.c +++ b/diff-merges.c @@ -9,6 +9,7 @@ static void suppress(struct rev_info *revs) revs->combine_merges = 0; revs->dense_combined_merges = 0; revs->combined_all_paths = 0; + revs->combined_imply_patch = 0; } static void set_separate(struct rev_info *revs) @@ -74,19 +75,21 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv) const char *optarg; const char *arg = argv[0]; - if (!strcmp(arg, "-m")) + if (!strcmp(arg, "-m")) { set_m(revs); - else if (!strcmp(arg, "-c")) + } else if (!strcmp(arg, "-c")) { set_combined(revs); - else if (!strcmp(arg, "--cc")) + revs->combined_imply_patch = 1; + } else if (!strcmp(arg, "--cc")) { set_dense_combined(revs); - else if (!strcmp(arg, "--no-diff-merges")) + revs->combined_imply_patch = 1; + } else if (!strcmp(arg, "--no-diff-merges")) { suppress(revs); - else if (!strcmp(arg, "--combined-all-paths")) + } else if (!strcmp(arg, "--combined-all-paths")) { revs->combined_all_paths = 1; - else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) + } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) { set_diff_merges(revs, optarg); - else + } else return 0; revs->explicit_diff_merges = 1; @@ -126,8 +129,9 @@ void diff_merges_setup_revs(struct rev_info *revs) revs->first_parent_merges = 0; if (revs->combined_all_paths && !revs->combine_merges) die("--combined-all-paths makes no sense without -c or --cc"); - if (revs->combine_merges) { + if (revs->combine_merges) revs->diff = 1; + if (revs->combined_imply_patch) { /* Turn --cc/-c into -p --cc/-c when -p was not given */ if (!revs->diffopt.output_format) revs->diffopt.output_format = DIFF_FORMAT_PATCH; |