]>
Commit | Line | Data |
---|---|---|
a37eec63 SO |
1 | #include "diff-merges.h" |
2 | ||
3 | #include "revision.h" | |
4 | ||
18f09473 | 5 | void diff_merges_init_revs(struct rev_info *revs) |
a37eec63 SO |
6 | { |
7 | revs->ignore_merges = -1; | |
8 | } | |
9 | ||
18f09473 | 10 | int 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 | 49 | void 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 | 59 | void 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 | 65 | void 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 | } |