diff: deprecate -q option to diff-files
This reimplements the ancient "-q" option to "git diff-files" that was inherited from "show-diff -q" in terms of "--diff-filter=d". We will be deprecating the "-q" option, so let's issue a warning when we do so. Incidentally this also tentatively fixes "git diff --no-index" to honor "-q" and hide deletions; the use will get the same warning. We should remove the support for "-q" in a future version but it is not that urgent. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									7f2ea5f0f2
								
							
						
					
					
						commit
						95a7c546b0
					
				|  | @ -86,10 +86,12 @@ int run_diff_files(struct rev_info *revs, unsigned int option) | ||||||
| { | { | ||||||
| 	int entries, i; | 	int entries, i; | ||||||
| 	int diff_unmerged_stage = revs->max_count; | 	int diff_unmerged_stage = revs->max_count; | ||||||
| 	int silent_on_removed = option & DIFF_SILENT_ON_REMOVED; |  | ||||||
| 	unsigned ce_option = ((option & DIFF_RACY_IS_MODIFIED) | 	unsigned ce_option = ((option & DIFF_RACY_IS_MODIFIED) | ||||||
| 			      ? CE_MATCH_RACY_IS_DIRTY : 0); | 			      ? CE_MATCH_RACY_IS_DIRTY : 0); | ||||||
|  |  | ||||||
|  | 	if (option & DIFF_SILENT_ON_REMOVED) | ||||||
|  | 		handle_deprecated_show_diff_q(&revs->diffopt); | ||||||
|  |  | ||||||
| 	diff_set_mnemonic_prefix(&revs->diffopt, "i/", "w/"); | 	diff_set_mnemonic_prefix(&revs->diffopt, "i/", "w/"); | ||||||
|  |  | ||||||
| 	if (diff_unmerged_stage < 0) | 	if (diff_unmerged_stage < 0) | ||||||
|  | @ -136,8 +138,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option) | ||||||
| 					perror(ce->name); | 					perror(ce->name); | ||||||
| 					continue; | 					continue; | ||||||
| 				} | 				} | ||||||
| 				if (silent_on_removed) |  | ||||||
| 					continue; |  | ||||||
| 				wt_mode = 0; | 				wt_mode = 0; | ||||||
| 			} | 			} | ||||||
| 			dpath->mode = wt_mode; | 			dpath->mode = wt_mode; | ||||||
|  | @ -203,8 +203,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option) | ||||||
| 				perror(ce->name); | 				perror(ce->name); | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			if (silent_on_removed) |  | ||||||
| 				continue; |  | ||||||
| 			diff_addremove(&revs->diffopt, '-', ce->ce_mode, | 			diff_addremove(&revs->diffopt, '-', ce->ce_mode, | ||||||
| 				       ce->sha1, !is_null_sha1(ce->sha1), | 				       ce->sha1, !is_null_sha1(ce->sha1), | ||||||
| 				       ce->name, 0); | 				       ce->name, 0); | ||||||
|  |  | ||||||
|  | @ -187,7 +187,7 @@ void diff_no_index(struct rev_info *revs, | ||||||
| { | { | ||||||
| 	int i, prefixlen; | 	int i, prefixlen; | ||||||
| 	int no_index = 0; | 	int no_index = 0; | ||||||
| 	unsigned options = 0; | 	unsigned deprecated_show_diff_q_option_used = 0; | ||||||
| 	const char *paths[2]; | 	const char *paths[2]; | ||||||
|  |  | ||||||
| 	/* Were we asked to do --no-index explicitly? */ | 	/* Were we asked to do --no-index explicitly? */ | ||||||
|  | @ -225,7 +225,7 @@ void diff_no_index(struct rev_info *revs, | ||||||
| 		if (!strcmp(argv[i], "--no-index")) | 		if (!strcmp(argv[i], "--no-index")) | ||||||
| 			i++; | 			i++; | ||||||
| 		else if (!strcmp(argv[i], "-q")) { | 		else if (!strcmp(argv[i], "-q")) { | ||||||
| 			options |= DIFF_SILENT_ON_REMOVED; | 			deprecated_show_diff_q_option_used = 1; | ||||||
| 			i++; | 			i++; | ||||||
| 		} | 		} | ||||||
| 		else if (!strcmp(argv[i], "--")) | 		else if (!strcmp(argv[i], "--")) | ||||||
|  | @ -260,6 +260,9 @@ void diff_no_index(struct rev_info *revs, | ||||||
| 	revs->max_count = -2; | 	revs->max_count = -2; | ||||||
| 	diff_setup_done(&revs->diffopt); | 	diff_setup_done(&revs->diffopt); | ||||||
|  |  | ||||||
|  | 	if (deprecated_show_diff_q_option_used) | ||||||
|  | 		handle_deprecated_show_diff_q(&revs->diffopt); | ||||||
|  |  | ||||||
| 	setup_diff_pager(&revs->diffopt); | 	setup_diff_pager(&revs->diffopt); | ||||||
| 	DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS); | 	DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS); | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								diff.c
								
								
								
								
							
							
						
						
									
										8
									
								
								diff.c
								
								
								
								
							|  | @ -3570,6 +3570,14 @@ static int parse_diff_filter_opt(const char *optarg, struct diff_options *opt) | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* Used only by "diff-files" and "diff --no-index" */ | ||||||
|  | void handle_deprecated_show_diff_q(struct diff_options *opt) | ||||||
|  | { | ||||||
|  | 	warning("'diff -q' and 'diff-files -q' are deprecated."); | ||||||
|  | 	warning("Use 'diff --diff-filter=d' instead to ignore deleted filepairs."); | ||||||
|  | 	parse_diff_filter_opt("d", opt); | ||||||
|  | } | ||||||
|  |  | ||||||
| int diff_opt_parse(struct diff_options *options, const char **av, int ac) | int diff_opt_parse(struct diff_options *options, const char **av, int ac) | ||||||
| { | { | ||||||
| 	const char *arg = av[0]; | 	const char *arg = av[0]; | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								diff.h
								
								
								
								
							
							
						
						
									
										2
									
								
								diff.h
								
								
								
								
							|  | @ -341,6 +341,8 @@ extern int parse_rename_score(const char **cp_p); | ||||||
|  |  | ||||||
| extern long parse_algorithm_value(const char *value); | extern long parse_algorithm_value(const char *value); | ||||||
|  |  | ||||||
|  | extern void handle_deprecated_show_diff_q(struct diff_options *); | ||||||
|  |  | ||||||
| extern int print_stat_summary(FILE *fp, int files, | extern int print_stat_summary(FILE *fp, int files, | ||||||
| 			      int insertions, int deletions); | 			      int insertions, int deletions); | ||||||
| extern void setup_diff_pager(struct diff_options *); | extern void setup_diff_pager(struct diff_options *); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano