diff options
Diffstat (limited to 'diff.c')
| -rw-r--r-- | diff.c | 20 | 
1 files changed, 12 insertions, 8 deletions
| @@ -26,6 +26,7 @@  #include "parse-options.h"  #include "help.h"  #include "promisor-remote.h" +#include "dir.h"  #ifdef NO_FAST_WORKING_DIRECTORY  #define FAST_WORKING_DIRECTORY 0 @@ -774,13 +775,13 @@ struct emitted_diff_symbol {  	int indent_width; /* The visual width of the indentation */  	enum diff_symbol s;  }; -#define EMITTED_DIFF_SYMBOL_INIT {NULL} +#define EMITTED_DIFF_SYMBOL_INIT { 0 }  struct emitted_diff_symbols {  	struct emitted_diff_symbol *buf;  	int nr, alloc;  }; -#define EMITTED_DIFF_SYMBOLS_INIT {NULL, 0, 0} +#define EMITTED_DIFF_SYMBOLS_INIT { 0 }  static void append_emitted_diff_symbol(struct diff_options *o,  				       struct emitted_diff_symbol *e) @@ -3907,6 +3908,13 @@ static int reuse_worktree_file(struct index_state *istate,  	if (!want_file && would_convert_to_git(istate, name))  		return 0; +	/* +	 * If this path does not match our sparse-checkout definition, +	 * then the file will not be in the working directory. +	 */ +	if (!path_in_sparse_checkout(name, istate)) +		return 0; +  	len = strlen(name);  	pos = index_name_pos(istate, name, len);  	if (pos < 0) @@ -6913,19 +6921,15 @@ static char *run_textconv(struct repository *r,  			  size_t *outsize)  {  	struct diff_tempfile *temp; -	const char *argv[3]; -	const char **arg = argv;  	struct child_process child = CHILD_PROCESS_INIT;  	struct strbuf buf = STRBUF_INIT;  	int err = 0;  	temp = prepare_temp_file(r, spec->path, spec); -	*arg++ = pgm; -	*arg++ = temp->name; -	*arg = NULL; +	strvec_push(&child.args, pgm); +	strvec_push(&child.args, temp->name);  	child.use_shell = 1; -	child.argv = argv;  	child.out = -1;  	if (start_command(&child)) {  		remove_tempfile(); | 
