> -int init_patch_ids(struct patch_ids *ids) > +int init_patch_ids(struct patch_ids *ids, struct repository *repo) > { > memset(ids, 0, sizeof(*ids)); > - diff_setup(&ids->diffopts, the_repository); > + diff_setup(&ids->diffopts, repo); Just realized when looking at this diff, though it applies to other patches as well. (and reading Documentation/technical/api-diff.txt confirms my thinking IMHO) What makes the repository argument any special compared to the rest of the diff options? So I would expect the setup to look like memset(ids, 0, sizeof(*ids)); ids->diffopts->repo = the_repository; diff_setup(&ids->diffopts); here and in diff_setup, we'd have if (!options->repo) options->repo = the_repository; or even put the_repository into default_diff_options, but then I wonder how this deals with no-repo invocations (git diff --no-index examples for bug reports)