diff options
| -rw-r--r-- | builtin/diff-tree.c | 7 | ||||
| -rw-r--r-- | builtin/log.c | 7 | ||||
| -rw-r--r-- | log-tree.c | 16 |
3 files changed, 12 insertions, 18 deletions
diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c index 12012ea093..af51cd29c6 100644 --- a/builtin/diff-tree.c +++ b/builtin/diff-tree.c @@ -168,13 +168,6 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix) opt->diffopt.rotate_to_strict = 1; - if (opt->remerge_diff) { - opt->remerge_objdir = tmp_objdir_create("remerge-diff"); - if (!opt->remerge_objdir) - die(_("unable to create temporary object directory")); - tmp_objdir_replace_primary_odb(opt->remerge_objdir, 1); - } - /* * NOTE! We expect "a..b" to expand to "^a b" but it is * perfectly valid for revision range parser to yield "b ^a", diff --git a/builtin/log.c b/builtin/log.c index af6403cb71..227823a16e 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -494,13 +494,6 @@ static int cmd_log_walk_no_free(struct rev_info *rev) int saved_nrl = 0; int saved_dcctc = 0; - if (rev->remerge_diff) { - rev->remerge_objdir = tmp_objdir_create("remerge-diff"); - if (!rev->remerge_objdir) - die(_("unable to create temporary object directory")); - tmp_objdir_replace_primary_odb(rev->remerge_objdir, 1); - } - if (rev->early_output) setup_early_output(); diff --git a/log-tree.c b/log-tree.c index 337b9334cd..83e648b7cd 100644 --- a/log-tree.c +++ b/log-tree.c @@ -1019,6 +1019,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_merge_options(&o, the_repository); o.show_rename_progress = 0; @@ -1053,10 +1064,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; } |
