]> git.ipfire.org Git - thirdparty/git.git/blobdiff - diff-lib.c
submodules: fix of regression on fetching of non-init subsub-repo
[thirdparty/git.git] / diff-lib.c
index 5d5d3dafab3386920d2c0883d33d06f860f6d11b..f95c6de75fc843fd19f683b6217c5fe87f341cd1 100644 (file)
@@ -177,9 +177,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                        i--;
 
                        if (revs->combine_merges && num_compare_stages == 2) {
-                               show_combined_diff(dpath, 2,
-                                                  revs->dense_combined_merges,
-                                                  revs);
+                               show_combined_diff(dpath, 2, revs);
                                free(dpath);
                                continue;
                        }
@@ -361,7 +359,7 @@ static int show_modified(struct rev_info *revs,
                p->parent[1].status = DIFF_STATUS_MODIFIED;
                p->parent[1].mode = old_entry->ce_mode;
                oidcpy(&p->parent[1].oid, &old_entry->oid);
-               show_combined_diff(p, 2, revs->dense_combined_merges, revs);
+               show_combined_diff(p, 2, revs);
                free(p);
                return 0;
        }
@@ -565,3 +563,28 @@ int index_differs_from(struct repository *r,
        object_array_clear(&rev.pending);
        return (rev.diffopt.flags.has_changes != 0);
 }
+
+static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data)
+{
+       return data;
+}
+
+void show_interdiff(const struct object_id *oid1, const struct object_id *oid2,
+                   int indent, struct diff_options *diffopt)
+{
+       struct diff_options opts;
+       struct strbuf prefix = STRBUF_INIT;
+
+       memcpy(&opts, diffopt, sizeof(opts));
+       opts.output_format = DIFF_FORMAT_PATCH;
+       opts.output_prefix = idiff_prefix_cb;
+       strbuf_addchars(&prefix, ' ', indent);
+       opts.output_prefix_data = &prefix;
+       diff_setup_done(&opts);
+
+       diff_tree_oid(oid1, oid2, "", &opts);
+       diffcore_std(&opts);
+       diff_flush(&opts);
+
+       strbuf_release(&prefix);
+}