diff options
| author | Junio C Hamano <gitster@pobox.com> | 2020-04-28 15:50:04 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2020-04-28 15:50:04 -0700 |
| commit | 8f5dc5a4af3fa32bf9261b76b0f1146fd15b8643 (patch) | |
| tree | 0c93139e94d1964edec168d2cf02f6c0e1298b6d /diffcore-break.c | |
| parent | Merge branch 'js/subtree-doc-update-to-asciidoctor-2' (diff) | |
| parent | diff: restrict when prefetching occurs (diff) | |
| download | git-8f5dc5a4af3fa32bf9261b76b0f1146fd15b8643.tar.gz git-8f5dc5a4af3fa32bf9261b76b0f1146fd15b8643.zip | |
Merge branch 'jt/avoid-prefetch-when-able-in-diff'
"git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
* jt/avoid-prefetch-when-able-in-diff:
diff: restrict when prefetching occurs
diff: refactor object read
diff: make diff_populate_filespec_options struct
promisor-remote: accept 0 as oid_nr in function
Diffstat (limited to 'diffcore-break.c')
| -rw-r--r-- | diffcore-break.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/diffcore-break.c b/diffcore-break.c index 9d20a6a6fc..0d4a14964d 100644 --- a/diffcore-break.c +++ b/diffcore-break.c @@ -4,6 +4,7 @@ #include "cache.h" #include "diff.h" #include "diffcore.h" +#include "promisor-remote.h" static int should_break(struct repository *r, struct diff_filespec *src, @@ -49,6 +50,8 @@ static int should_break(struct repository *r, unsigned long delta_size, max_size; unsigned long src_copied, literal_added, src_removed; + struct diff_populate_filespec_options options = { 0 }; + *merge_score_p = 0; /* assume no deletion --- "do not break" * is the default. */ @@ -62,8 +65,13 @@ static int should_break(struct repository *r, oideq(&src->oid, &dst->oid)) return 0; /* they are the same */ - if (diff_populate_filespec(r, src, 0) || - diff_populate_filespec(r, dst, 0)) + if (r == the_repository && has_promisor_remote()) { + options.missing_object_cb = diff_queued_diff_prefetch; + options.missing_object_data = r; + } + + if (diff_populate_filespec(r, src, &options) || + diff_populate_filespec(r, dst, &options)) return 0; /* error but caught downstream */ max_size = ((src->size > dst->size) ? src->size : dst->size); |
