Skip to content

Commit be8ca28

Browse files
committed
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
2 parents 6e2a18c + 4460e05 commit be8ca28

File tree

13 files changed

+38
-44
lines changed

13 files changed

+38
-44
lines changed

builtin/describe.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
716716
BUG("malformed internal diff-index command line");
717717
run_diff_index(&revs, 0);
718718

719-
if (!diff_result_code(&revs.diffopt))
719+
if (!diff_result_code(&revs))
720720
suffix = NULL;
721721
else
722722
suffix = dirty;

builtin/diff-files.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
8282
if (repo_read_index_preload(the_repository, &rev.diffopt.pathspec, 0) < 0)
8383
die_errno("repo_read_index_preload");
8484
run_diff_files(&rev, options);
85-
result = diff_result_code(&rev.diffopt);
85+
result = diff_result_code(&rev);
8686
release_revisions(&rev);
8787
return result;
8888
}

builtin/diff-index.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
7575
return -1;
7676
}
7777
run_diff_index(&rev, option);
78-
result = diff_result_code(&rev.diffopt);
78+
result = diff_result_code(&rev);
7979
release_revisions(&rev);
8080
return result;
8181
}

builtin/diff-tree.c

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -167,13 +167,6 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
167167

168168
opt->diffopt.rotate_to_strict = 1;
169169

170-
if (opt->remerge_diff) {
171-
opt->remerge_objdir = tmp_objdir_create("remerge-diff");
172-
if (!opt->remerge_objdir)
173-
die(_("unable to create temporary object directory"));
174-
tmp_objdir_replace_primary_odb(opt->remerge_objdir, 1);
175-
}
176-
177170
/*
178171
* NOTE! We expect "a..b" to expand to "^a b" but it is
179172
* perfectly valid for revision range parser to yield "b ^a",
@@ -238,10 +231,5 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
238231
diff_free(&opt->diffopt);
239232
}
240233

241-
if (opt->remerge_diff) {
242-
tmp_objdir_destroy(opt->remerge_objdir);
243-
opt->remerge_objdir = NULL;
244-
}
245-
246-
return diff_result_code(&opt->diffopt);
234+
return diff_result_code(opt);
247235
}

builtin/diff.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
619619
builtin_diff_combined(&rev, argc, argv,
620620
ent.objects, ent.nr,
621621
first_non_parent);
622-
result = diff_result_code(&rev.diffopt);
622+
result = diff_result_code(&rev);
623623
if (1 < rev.diffopt.skip_stat_unmatch)
624624
refresh_index_quietly();
625625
release_revisions(&rev);

builtin/log.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -504,13 +504,7 @@ static int cmd_log_walk_no_free(struct rev_info *rev)
504504
struct commit *commit;
505505
int saved_nrl = 0;
506506
int saved_dcctc = 0;
507-
508-
if (rev->remerge_diff) {
509-
rev->remerge_objdir = tmp_objdir_create("remerge-diff");
510-
if (!rev->remerge_objdir)
511-
die(_("unable to create temporary object directory"));
512-
tmp_objdir_replace_primary_odb(rev->remerge_objdir, 1);
513-
}
507+
int result;
514508

515509
if (rev->early_output)
516510
setup_early_output();
@@ -551,16 +545,12 @@ static int cmd_log_walk_no_free(struct rev_info *rev)
551545
rev->diffopt.degraded_cc_to_c = saved_dcctc;
552546
rev->diffopt.needed_rename_limit = saved_nrl;
553547

554-
if (rev->remerge_diff) {
555-
tmp_objdir_destroy(rev->remerge_objdir);
556-
rev->remerge_objdir = NULL;
557-
}
558-
548+
result = diff_result_code(rev);
559549
if (rev->diffopt.output_format & DIFF_FORMAT_CHECKDIFF &&
560550
rev->diffopt.flags.check_failed) {
561-
return 02;
551+
result = 02;
562552
}
563-
return diff_result_code(&rev->diffopt);
553+
return result;
564554
}
565555

566556
static int cmd_log_walk(struct rev_info *rev)

builtin/stash.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
974974
}
975975
log_tree_diff_flush(&rev);
976976

977-
ret = diff_result_code(&rev.diffopt);
977+
ret = diff_result_code(&rev);
978978

979979
cleanup:
980980
strvec_clear(&revision_args);
@@ -1126,13 +1126,13 @@ static int check_changes_tracked_files(const struct pathspec *ps)
11261126
diff_setup_done(&rev.diffopt);
11271127

11281128
run_diff_index(&rev, DIFF_INDEX_CACHED);
1129-
if (diff_result_code(&rev.diffopt)) {
1129+
if (diff_result_code(&rev)) {
11301130
ret = 1;
11311131
goto done;
11321132
}
11331133

11341134
run_diff_files(&rev, 0);
1135-
if (diff_result_code(&rev.diffopt)) {
1135+
if (diff_result_code(&rev)) {
11361136
ret = 1;
11371137
goto done;
11381138
}

builtin/submodule--helper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
672672
setup_revisions(diff_files_args.nr, diff_files_args.v, &rev, &opt);
673673
run_diff_files(&rev, 0);
674674

675-
if (!diff_result_code(&rev.diffopt)) {
675+
if (!diff_result_code(&rev)) {
676676
print_status(flags, ' ', path, ce_oid,
677677
displaypath);
678678
} else if (!(flags & OPT_CACHED)) {

diff-no-index.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ int diff_no_index(struct rev_info *revs,
362362
* The return code for --no-index imitates diff(1):
363363
* 0 = no changes, 1 = changes, else error
364364
*/
365-
ret = diff_result_code(&revs->diffopt);
365+
ret = diff_result_code(revs);
366366

367367
out:
368368
for (i = 0; i < ARRAY_SIZE(to_free); i++)

diff.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "environment.h"
1313
#include "gettext.h"
1414
#include "tempfile.h"
15+
#include "revision.h"
1516
#include "quote.h"
1617
#include "diff.h"
1718
#include "diffcore.h"
@@ -29,6 +30,7 @@
2930
#include "merge-ll.h"
3031
#include "string-list.h"
3132
#include "strvec.h"
33+
#include "tmp-objdir.h"
3234
#include "graph.h"
3335
#include "oid-array.h"
3436
#include "packfile.h"
@@ -7088,10 +7090,16 @@ void diffcore_std(struct diff_options *options)
70887090
options->found_follow = 0;
70897091
}
70907092

7091-
int diff_result_code(struct diff_options *opt)
7093+
int diff_result_code(struct rev_info *revs)
70927094
{
7095+
struct diff_options *opt = &revs->diffopt;
70937096
int result = 0;
70947097

7098+
if (revs->remerge_diff) {
7099+
tmp_objdir_destroy(revs->remerge_objdir);
7100+
revs->remerge_objdir = NULL;
7101+
}
7102+
70957103
diff_warn_rename_limit("diff.renameLimit",
70967104
opt->needed_rename_limit,
70977105
opt->degraded_cc_to_c);

0 commit comments

Comments
 (0)