aboutsummaryrefslogtreecommitdiffstats
path: root/builtin/diff-pairs.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/diff-pairs.c')
-rw-r--r--builtin/diff-pairs.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/builtin/diff-pairs.c b/builtin/diff-pairs.c
index 6be17c1abd..71c045331a 100644
--- a/builtin/diff-pairs.c
+++ b/builtin/diff-pairs.c
@@ -57,6 +57,7 @@ int cmd_diff_pairs(int argc, const char **argv, const char *prefix,
show_usage_with_options_if_asked(argc, argv, builtin_diff_pairs_usage, parseopts);
repo_config(repo, git_diff_basic_config, NULL);
+ revs.diffopt.no_free = 1;
revs.disable_stdin = 1;
revs.abbrev = 0;
revs.diff = 1;
@@ -106,6 +107,18 @@ int cmd_diff_pairs(int argc, const char **argv, const char *prefix,
break;
p = meta.buf;
+ if (!*p) {
+ diffcore_std(&revs.diffopt);
+ diff_flush(&revs.diffopt);
+ /*
+ * When the diff queue is explicitly flushed, append a
+ * NUL byte to separate batches of diffs.
+ */
+ fputc('\0', revs.diffopt.file);
+ fflush(revs.diffopt.file);
+ continue;
+ }
+
if (*p != ':')
die(_("invalid raw diff input"));
p++;
@@ -179,6 +192,7 @@ int cmd_diff_pairs(int argc, const char **argv, const char *prefix,
}
}
+ revs.diffopt.no_free = 0;
diffcore_std(&revs.diffopt);
diff_flush(&revs.diffopt);
ret = diff_result_code(&revs);