diff options
Diffstat (limited to 'builtin/diff.c')
| -rw-r--r-- | builtin/diff.c | 30 | 
1 files changed, 22 insertions, 8 deletions
| diff --git a/builtin/diff.c b/builtin/diff.c index 387afa7568..da8f6aac2b 100644 --- a/builtin/diff.c +++ b/builtin/diff.c @@ -285,6 +285,10 @@ int cmd_diff(int argc, const char **argv, const char *prefix)  	/* Otherwise, we are doing the usual "git" diff */  	rev.diffopt.skip_stat_unmatch = !!diff_auto_refresh_index; +	/* Scale to real terminal size and respect statGraphWidth config */ +	rev.diffopt.stat_width = -1; +	rev.diffopt.stat_graph_width = -1; +  	/* Default to let external and textconv be used */  	DIFF_OPT_SET(&rev.diffopt, ALLOW_EXTERNAL);  	DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV); @@ -300,13 +304,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)  	DIFF_OPT_SET(&rev.diffopt, RECURSIVE); -	/* -	 * If the user asked for our exit code then don't start a -	 * pager or we would end up reporting its exit code instead. -	 */ -	if (!DIFF_OPT_TST(&rev.diffopt, EXIT_WITH_STATUS) && -	    check_pager_config("diff") != 0) -		setup_pager(); +	setup_diff_pager(&rev.diffopt);  	/*  	 * Do we have --cached and not have a pending object, then @@ -323,7 +321,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)  				add_head_to_pending(&rev);  				if (!rev.pending.nr) {  					struct tree *tree; -					tree = lookup_tree((const unsigned char*)EMPTY_TREE_SHA1_BIN); +					tree = lookup_tree(EMPTY_TREE_SHA1_BIN);  					add_pending_object(&rev, &tree->object, "HEAD");  				}  				break; @@ -417,3 +415,19 @@ int cmd_diff(int argc, const char **argv, const char *prefix)  		refresh_index_quietly();  	return result;  } + +void setup_diff_pager(struct diff_options *opt) +{ +	/* +	 * If the user asked for our exit code, then either they want --quiet +	 * or --exit-code. We should definitely not bother with a pager in the +	 * former case, as we will generate no output. Since we still properly +	 * report our exit code even when a pager is run, we _could_ run a +	 * pager with --exit-code. But since we have not done so historically, +	 * and because it is easy to find people oneline advising "git diff +	 * --exit-code" in hooks and other scripts, we do not do so. +	 */ +	if (!DIFF_OPT_TST(opt, EXIT_WITH_STATUS) && +	    check_pager_config("diff") != 0) +		setup_pager(); +} | 
