Skip to content

Commit 3d2b5f2

Browse files
sorganovgitster
authored andcommitted
diff-merges: refactor opt settings into separate functions
To prepare introduction of new options some of which will be synonyms to existing options, let every option handling code just call corresponding function. Signed-off-by: Sergey Organov <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent a6e66af commit 3d2b5f2

File tree

1 file changed

+41
-22
lines changed

1 file changed

+41
-22
lines changed

diff-merges.c

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,43 @@ static void suppress(struct rev_info *revs)
1010
revs->dense_combined_merges = 0;
1111
}
1212

13+
static void set_separate(struct rev_info *revs)
14+
{
15+
suppress(revs);
16+
revs->separate_merges = 1;
17+
}
18+
19+
static void set_m(struct rev_info *revs)
20+
{
21+
/*
22+
* To "diff-index", "-m" means "match missing", and to the "log"
23+
* family of commands, it means "show full diff for merges". Set
24+
* both fields appropriately.
25+
*/
26+
set_separate(revs);
27+
revs->match_missing = 1;
28+
}
29+
30+
static void set_combined(struct rev_info *revs)
31+
{
32+
revs->combine_merges = 1;
33+
revs->dense_combined_merges = 0;
34+
}
35+
1336
static void set_dense_combined(struct rev_info *revs)
1437
{
1538
revs->combine_merges = 1;
1639
revs->dense_combined_merges = 1;
1740
}
1841

42+
static void set_diff_merges(struct rev_info *revs, const char *optarg)
43+
{
44+
if (!strcmp(optarg, "off")) {
45+
suppress(revs);
46+
} else {
47+
die(_("unknown value for --diff-merges: %s"), optarg);
48+
}
49+
}
1950

2051
/*
2152
* Public functions. They are in the order they are called.
@@ -27,31 +58,19 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
2758
const char *optarg;
2859
const char *arg = argv[0];
2960

30-
if (!strcmp(arg, "-m")) {
31-
suppress(revs);
32-
/*
33-
* To "diff-index", "-m" means "match missing", and to the "log"
34-
* family of commands, it means "show full diff for merges". Set
35-
* both fields appropriately.
36-
*/
37-
revs->separate_merges = 1;
38-
revs->match_missing = 1;
39-
} else if (!strcmp(arg, "-c")) {
40-
revs->dense_combined_merges = 0;
41-
revs->combine_merges = 1;
42-
} else if (!strcmp(arg, "--cc")) {
61+
if (!strcmp(arg, "-m"))
62+
set_m(revs);
63+
else if (!strcmp(arg, "-c"))
64+
set_combined(revs);
65+
else if (!strcmp(arg, "--cc"))
4366
set_dense_combined(revs);
44-
} else if (!strcmp(arg, "--no-diff-merges")) {
67+
else if (!strcmp(arg, "--no-diff-merges"))
4568
suppress(revs);
46-
} else if (!strcmp(arg, "--combined-all-paths")) {
69+
else if (!strcmp(arg, "--combined-all-paths"))
4770
revs->combined_all_paths = 1;
48-
} else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
49-
if (!strcmp(optarg, "off")) {
50-
suppress(revs);
51-
} else {
52-
die(_("unknown value for --diff-merges: %s"), optarg);
53-
}
54-
} else
71+
else if ((argcount = parse_long_opt("diff-merges", argv, &optarg)))
72+
set_diff_merges(revs, optarg);
73+
else
5574
return 0;
5675

5776
revs->explicit_diff_merges = 1;

0 commit comments

Comments
 (0)