aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--diff-merges.c7
-rwxr-xr-xt/t4013-diff-various.sh8
2 files changed, 15 insertions, 0 deletions
diff --git a/diff-merges.c b/diff-merges.c
index 146bb50316..ff227368bd 100644
--- a/diff-merges.c
+++ b/diff-merges.c
@@ -2,6 +2,11 @@
#include "revision.h"
+typedef void (*diff_merges_setup_func_t)(struct rev_info *);
+static void set_separate(struct rev_info *revs);
+
+static diff_merges_setup_func_t set_to_default = set_separate;
+
static void suppress(struct rev_info *revs)
{
revs->separate_merges = 0;
@@ -66,6 +71,8 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg)
set_combined(revs);
else if (!strcmp(optarg, "cc") || !strcmp(optarg, "dense-combined"))
set_dense_combined(revs);
+ else if (!strcmp(optarg, "on"))
+ set_to_default(revs);
else
die(_("unknown value for --diff-merges: %s"), optarg);
diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
index 6cca8b84a6..26a7b4d19d 100755
--- a/t/t4013-diff-various.sh
+++ b/t/t4013-diff-various.sh
@@ -452,6 +452,14 @@ diff-tree --stat --compact-summary initial mode
diff-tree -R --stat --compact-summary initial mode
EOF
+test_expect_success 'log --diff-merges=on matches --diff-merges=separate' '
+ git log -p --diff-merges=separate master >result &&
+ process_diffs result >expected &&
+ git log -p --diff-merges=on master >result &&
+ process_diffs result >actual &&
+ test_cmp expected actual
+'
+
test_expect_success 'log -S requires an argument' '
test_must_fail git log -S
'