]> git.ipfire.org Git - thirdparty/git.git/blame - diff-merges.c
diff-merges: move checks for first_parent_only out of the module
[thirdparty/git.git] / diff-merges.c
CommitLineData
a37eec63
SO
1#include "diff-merges.h"
2
3#include "revision.h"
4
18f09473 5void diff_merges_init_revs(struct rev_info *revs)
a37eec63
SO
6{
7 revs->ignore_merges = -1;
8}
9
18f09473 10int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
a37eec63
SO
11{
12 int argcount = 1;
13 const char *optarg;
14 const char *arg = argv[0];
15
16 if (!strcmp(arg, "-m")) {
17 /*
18 * To "diff-index", "-m" means "match missing", and to the "log"
19 * family of commands, it means "show full diff for merges". Set
20 * both fields appropriately.
21 */
22 revs->ignore_merges = 0;
23 revs->match_missing = 1;
24 } else if (!strcmp(arg, "-c")) {
25 revs->diff = 1;
26 revs->dense_combined_merges = 0;
27 revs->combine_merges = 1;
28 } else if (!strcmp(arg, "--cc")) {
29 revs->diff = 1;
30 revs->dense_combined_merges = 1;
31 revs->combine_merges = 1;
32 } else if (!strcmp(arg, "--no-diff-merges")) {
33 revs->ignore_merges = 1;
34 } else if (!strcmp(arg, "--combined-all-paths")) {
35 revs->diff = 1;
36 revs->combined_all_paths = 1;
37 } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
38 if (!strcmp(optarg, "off")) {
39 revs->ignore_merges = 1;
40 } else {
41 die(_("unknown value for --diff-merges: %s"), optarg);
42 }
43 } else
44 argcount = 0;
45
46 return argcount;
47}
48
18f09473 49void diff_merges_setup_revs(struct rev_info *revs)
a37eec63
SO
50{
51 if (revs->combine_merges && revs->ignore_merges < 0)
52 revs->ignore_merges = 0;
53 if (revs->ignore_merges < 0)
54 revs->ignore_merges = 1;
55 if (revs->combined_all_paths && !revs->combine_merges)
56 die("--combined-all-paths makes no sense without -c or --cc");
57}
58
7acf0d06 59void diff_merges_default_to_enable(struct rev_info *revs)
a37eec63 60{
7acf0d06 61 if (revs->ignore_merges < 0) /* No -m */
a37eec63
SO
62 revs->ignore_merges = 0;
63}
64
18f09473 65void diff_merges_default_to_dense_combined(struct rev_info *revs)
a37eec63 66{
7acf0d06 67 if (revs->ignore_merges < 0) { /* No -m */
a37eec63 68 revs->ignore_merges = 0;
7acf0d06 69 if (!revs->combine_merges) { /* No -c/--cc" */
a37eec63
SO
70 revs->combine_merges = 1;
71 revs->dense_combined_merges = 1;
72 }
73 }
74}