aboutsummaryrefslogtreecommitdiffstats
path: root/log-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-09-16 14:22:54 -0700
committerJunio C Hamano <gitster@pobox.com>2024-09-16 14:22:55 -0700
commitbe8ca2848a9e73f6ddc31ebce2ddc3c367d4f0cb (patch)
tree517a2dce7d35fd6a2b98ea2f6114563cc4e0cfb7 /log-tree.c
parentMerge branch 'ah/apply-3way-ours' (diff)
parentremerge-diff: clean up temporary objdir at a central place (diff)
downloadgit-be8ca2848a9e73f6ddc31ebce2ddc3c367d4f0cb.tar.gz
git-be8ca2848a9e73f6ddc31ebce2ddc3c367d4f0cb.zip
Merge branch 'jc/range-diff-lazy-setup'
Code clean-up. * jc/range-diff-lazy-setup: remerge-diff: clean up temporary objdir at a central place remerge-diff: lazily prepare temporary objdir on demand
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/log-tree.c b/log-tree.c
index 04cef08b83..3758e0d3b8 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -1015,6 +1015,17 @@ static int do_remerge_diff(struct rev_info *opt,
struct strbuf parent1_desc = STRBUF_INIT;
struct strbuf parent2_desc = STRBUF_INIT;
+ /*
+ * Lazily prepare a temporary object directory and rotate it
+ * into the alternative object store list as the primary.
+ */
+ if (opt->remerge_diff && !opt->remerge_objdir) {
+ opt->remerge_objdir = tmp_objdir_create("remerge-diff");
+ if (!opt->remerge_objdir)
+ return error(_("unable to create temporary object directory"));
+ tmp_objdir_replace_primary_odb(opt->remerge_objdir, 1);
+ }
+
/* Setup merge options */
init_ui_merge_options(&o, the_repository);
o.show_rename_progress = 0;
@@ -1051,10 +1062,7 @@ static int do_remerge_diff(struct rev_info *opt,
merge_finalize(&o, &res);
/* Clean up the contents of the temporary object directory */
- if (opt->remerge_objdir)
- tmp_objdir_discard_objects(opt->remerge_objdir);
- else
- BUG("did a remerge diff without remerge_objdir?!?");
+ tmp_objdir_discard_objects(opt->remerge_objdir);
return !opt->loginfo;
}