diff: reuse diff setup for --no-index case
When "--no-index" is in effect (or implied by the arguments), git-diff jumps early to a special code path to perform that diff. This means we miss out on some settings like enabling --ext-diff and --textconv by default. Let's jump to the no-index path _after_ we've done more setup on rev.diffopt. Since some of the options don't affect us (e.g., items related to the index), let's re-order the setup into two blocks (see the in-code comments). Note that we also need to stop re-initializing the diffopt struct in diff_no_index(). This should not be necessary, as it will already have been initialized by cmd_diff() (and there are no other callers). That in turn lets us drop the "repository" argument from diff_no_index (which never made much sense, since the whole point is that you don't need a repository). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
0d0ac3826a
commit
287ab28bfa
@ -233,8 +233,7 @@ static void fixup_paths(const char **path, struct strbuf *replacement)
|
||||
}
|
||||
}
|
||||
|
||||
void diff_no_index(struct repository *r,
|
||||
struct rev_info *revs,
|
||||
void diff_no_index(struct rev_info *revs,
|
||||
int argc, const char **argv)
|
||||
{
|
||||
int i;
|
||||
@ -242,11 +241,6 @@ void diff_no_index(struct repository *r,
|
||||
struct strbuf replacement = STRBUF_INIT;
|
||||
const char *prefix = revs->prefix;
|
||||
|
||||
/*
|
||||
* FIXME: --no-index should not look at index and we should be
|
||||
* able to pass NULL repo. Maybe later.
|
||||
*/
|
||||
repo_diff_setup(r, &revs->diffopt);
|
||||
for (i = 1; i < argc - 2; ) {
|
||||
int j;
|
||||
if (!strcmp(argv[i], "--no-index"))
|
||||
|
Reference in New Issue
Block a user