Hi Jonathan,

On Fri, 5 Apr 2019, Jonathan Tan wrote:

> This is a fixup on the tip of jt/batch-fetch-blobs-in-diff (571debe1d9).
>
> I don't know if Junio has already merged this branch to next (he marked
> this as "Will merge to 'next'" in the "What's Cooking" email, but when I
> fetched, it hasn't been merged yet). If he has, we can use this commit
> message:
>
> diff: propagate options->repo to add_if_missing
>
> Avoid a usage of the_repository by propagating the configured repository
> to add_if_missing(). Also, prefetch only if the repository being diffed
> is the_repository (because we do not support lazy fetching for any other
> repository anyway).

True, and the introduction of `has_promisor_remotes()` should probably
help that, by introducing a parameter of type `struct repository *r`.

> Signed-off-by: Jonathan Tan <jonathanta...@google.com>

The patch and the commit message look good!

Thanks,
Dscho

> diff --git a/diff.c b/diff.c
> index 1eccefb4ef..811afbdfb1 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -6367,18 +6367,19 @@ void diffcore_fix_diff_index(void)
>       QSORT(q->queue, q->nr, diffnamecmp);
>  }
>
> -static void add_if_missing(struct oid_array *to_fetch,
> +static void add_if_missing(struct oid_array *to_fetch, struct repository *r,
>                          const struct diff_filespec *filespec)
>  {
>       if (filespec && filespec->oid_valid &&
> -         oid_object_info_extended(the_repository, &filespec->oid, NULL,
> +         oid_object_info_extended(r, &filespec->oid, NULL,
>                                    OBJECT_INFO_FOR_PREFETCH))
>               oid_array_append(to_fetch, &filespec->oid);
>  }
>
>  void diffcore_std(struct diff_options *options)
>  {
> -     if (repository_format_partial_clone) {
> +     if (options->repo == the_repository &&
> +         repository_format_partial_clone) {
>               /*
>                * Prefetch the diff pairs that are about to be flushed.
>                */
> @@ -6388,8 +6389,8 @@ void diffcore_std(struct diff_options *options)
>
>               for (i = 0; i < q->nr; i++) {
>                       struct diff_filepair *p = q->queue[i];
> -                     add_if_missing(&to_fetch, p->one);
> -                     add_if_missing(&to_fetch, p->two);
> +                     add_if_missing(&to_fetch, options->repo, p->one);
> +                     add_if_missing(&to_fetch, options->repo, p->two);
>               }
>               if (to_fetch.nr)
>                       /*
> --
> 2.21.0.392.gf8f6787159e-goog
>
>

Reply via email to